|
|
|
@ -2,7 +2,9 @@ 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, Serialize, Deserialize)]
|
|
|
|
#[derive(
|
|
|
|
Debug, PartialEq, Eq, RustcDecodable, RustcEncodable, Serialize, Deserialize,
|
|
|
|
)]
|
|
|
|
pub enum Request {
|
|
|
|
/// The controller wants to join a room. Contains the room name.
|
|
|
|
RoomJoinRequest(String),
|
|
|
|
@ -19,7 +21,9 @@ pub enum Request { |
|
|
|
}
|
|
|
|
|
|
|
|
/// This structure contains the chat room message request from the controller.
|
|
|
|
#[derive(Debug, RustcDecodable, RustcEncodable, Deserialize, Serialize)]
|
|
|
|
#[derive(
|
|
|
|
Debug, PartialEq, Eq, RustcDecodable, RustcEncodable, Deserialize, Serialize,
|
|
|
|
)]
|
|
|
|
pub struct RoomMessageRequest {
|
|
|
|
/// The name of the chat room in which to send the message.
|
|
|
|
pub room_name: String,
|
|
|
|
@ -32,56 +36,63 @@ mod tests { |
|
|
|
use super::{Request, RoomMessageRequest};
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn serialize_room_join_request() {
|
|
|
|
fn deserialize_room_join_request() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::to_string(&Request::RoomJoinRequest("bleep".to_string()))
|
|
|
|
serde_json::from_str::<Request>(r#"{"RoomJoinRequest": "bleep"}"#)
|
|
|
|
.unwrap(),
|
|
|
|
r#"{"RoomJoinRequest":"bleep"}"#
|
|
|
|
Request::RoomJoinRequest("bleep".to_string())
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn serialize_room_leave_request() {
|
|
|
|
fn deserialize_room_leave_request() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::to_string(&Request::RoomLeaveRequest("bleep".to_string()))
|
|
|
|
serde_json::from_str::<Request>(r#"{"RoomLeaveRequest": "bleep"}"#)
|
|
|
|
.unwrap(),
|
|
|
|
r#"{"RoomLeaveRequest":"bleep"}"#
|
|
|
|
Request::RoomLeaveRequest("bleep".to_string())
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn serialize_login_status_request() {
|
|
|
|
fn deserialize_login_status_request() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::to_string(&Request::LoginStatusRequest).unwrap(),
|
|
|
|
r#""LoginStatusRequest""#
|
|
|
|
serde_json::from_str::<Request>(r#""LoginStatusRequest""#).unwrap(),
|
|
|
|
Request::LoginStatusRequest
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn serialize_room_list_request() {
|
|
|
|
fn deserialize_room_list_request() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::to_string(&Request::RoomListRequest).unwrap(),
|
|
|
|
r#""RoomListRequest""#
|
|
|
|
serde_json::from_str::<Request>(r#""RoomListRequest""#).unwrap(),
|
|
|
|
Request::RoomListRequest
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn serialize_user_list_request() {
|
|
|
|
fn deserialize_user_list_request() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::to_string(&Request::UserListRequest).unwrap(),
|
|
|
|
r#""UserListRequest""#
|
|
|
|
serde_json::from_str::<Request>(r#""UserListRequest""#).unwrap(),
|
|
|
|
Request::UserListRequest
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn serialize_room_message_request() {
|
|
|
|
fn deserialize_room_message_request() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::to_string(&Request::RoomMessageRequest(RoomMessageRequest {
|
|
|
|
serde_json::from_str::<Request>(
|
|
|
|
r#"{
|
|
|
|
"RoomMessageRequest": {
|
|
|
|
"room_name":"bleep",
|
|
|
|
"message":"heyo"
|
|
|
|
}
|
|
|
|
}"#
|
|
|
|
)
|
|
|
|
.unwrap(),
|
|
|
|
Request::RoomMessageRequest(RoomMessageRequest {
|
|
|
|
room_name: "bleep".to_string(),
|
|
|
|
message: "heyo".to_string(),
|
|
|
|
}))
|
|
|
|
.unwrap(),
|
|
|
|
r#"{"RoomMessageRequest":{"room_name":"bleep","message":"heyo"}}"#
|
|
|
|
})
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|