|
|
|
@ -1,6 +1,8 @@ |
|
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
|
|
|
|
/// This enumeration is the list of possible control requests made by the
|
|
|
|
/// controller client to the client.
|
|
|
|
#[derive(Debug, RustcDecodable, RustcEncodable)]
|
|
|
|
#[derive(Debug, RustcDecodable, RustcEncodable, Serialize, Deserialize)]
|
|
|
|
pub enum Request {
|
|
|
|
/// The controller wants to join a room. Contains the room name.
|
|
|
|
RoomJoinRequest(String),
|
|
|
|
@ -17,10 +19,69 @@ pub enum Request { |
|
|
|
}
|
|
|
|
|
|
|
|
/// This structure contains the chat room message request from the controller.
|
|
|
|
#[derive(Debug, RustcDecodable, RustcEncodable)]
|
|
|
|
#[derive(Debug, RustcDecodable, RustcEncodable, Deserialize, Serialize)]
|
|
|
|
pub struct RoomMessageRequest {
|
|
|
|
/// The name of the chat room in which to send the message.
|
|
|
|
pub room_name: String,
|
|
|
|
/// The message to be said.
|
|
|
|
pub message: String,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cfg(test)]
|
|
|
|
mod tests {
|
|
|
|
use super::{Request, RoomMessageRequest};
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn serialize_room_join_request() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::to_string(&Request::RoomJoinRequest("bleep".to_string()))
|
|
|
|
.unwrap(),
|
|
|
|
r#"{"RoomJoinRequest":"bleep"}"#
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn serialize_room_leave_request() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::to_string(&Request::RoomLeaveRequest("bleep".to_string()))
|
|
|
|
.unwrap(),
|
|
|
|
r#"{"RoomLeaveRequest":"bleep"}"#
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn serialize_login_status_request() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::to_string(&Request::LoginStatusRequest).unwrap(),
|
|
|
|
r#""LoginStatusRequest""#
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn serialize_room_list_request() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::to_string(&Request::RoomListRequest).unwrap(),
|
|
|
|
r#""RoomListRequest""#
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn serialize_user_list_request() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::to_string(&Request::UserListRequest).unwrap(),
|
|
|
|
r#""UserListRequest""#
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn serialize_room_message_request() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::to_string(&Request::RoomMessageRequest(RoomMessageRequest {
|
|
|
|
room_name: "bleep".to_string(),
|
|
|
|
message: "heyo".to_string(),
|
|
|
|
}))
|
|
|
|
.unwrap(),
|
|
|
|
r#"{"RoomMessageRequest":{"room_name":"bleep","message":"heyo"}}"#
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|