events: Clean up some tests
This commit is contained in:
parent
69a97232b9
commit
9929a3f8d5
@ -9,15 +9,13 @@ use serde_json::{from_value as from_json_value, json, to_value as to_json_value}
|
|||||||
use ruma_events::{
|
use ruma_events::{
|
||||||
receipt::{Receipt, ReceiptEventContent},
|
receipt::{Receipt, ReceiptEventContent},
|
||||||
typing::TypingEventContent,
|
typing::TypingEventContent,
|
||||||
AnyEphemeralRoomEventContent, EphemeralRoomEvent,
|
AnyEphemeralRoomEvent, EphemeralRoomEvent,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn ephemeral_serialize_typing() {
|
fn ephemeral_serialize_typing() {
|
||||||
let aliases_event = EphemeralRoomEvent {
|
let aliases_event = EphemeralRoomEvent {
|
||||||
content: AnyEphemeralRoomEventContent::Typing(TypingEventContent::new(vec![user_id!(
|
content: TypingEventContent::new(vec![user_id!("@carl:example.com")]),
|
||||||
"@carl:example.com"
|
|
||||||
)])),
|
|
||||||
room_id: room_id!("!roomid:room.com"),
|
room_id: room_id!("!roomid:room.com"),
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -44,14 +42,14 @@ fn deserialize_ephemeral_typing() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
assert_matches!(
|
assert_matches!(
|
||||||
from_json_value::<Raw<EphemeralRoomEvent<AnyEphemeralRoomEventContent>>>(json_data)
|
from_json_value::<Raw<AnyEphemeralRoomEvent>>(json_data)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.deserialize()
|
.deserialize()
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
EphemeralRoomEvent {
|
AnyEphemeralRoomEvent::Typing(EphemeralRoomEvent {
|
||||||
content: AnyEphemeralRoomEventContent::Typing(TypingEventContent { user_ids, .. }),
|
content: TypingEventContent { user_ids, .. },
|
||||||
room_id,
|
room_id,
|
||||||
} if user_ids[0] == user_id!("@carl:example.com")
|
}) if user_ids[0] == user_id!("@carl:example.com")
|
||||||
&& room_id == room_id!("!roomid:room.com")
|
&& room_id == room_id!("!roomid:room.com")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -62,13 +60,13 @@ fn ephemeral_serialize_receipt() {
|
|||||||
let user_id = user_id!("@carl:example.com");
|
let user_id = user_id!("@carl:example.com");
|
||||||
|
|
||||||
let aliases_event = EphemeralRoomEvent {
|
let aliases_event = EphemeralRoomEvent {
|
||||||
content: AnyEphemeralRoomEventContent::Receipt(ReceiptEventContent(btreemap! {
|
content: ReceiptEventContent(btreemap! {
|
||||||
event_id => btreemap! {
|
event_id => btreemap! {
|
||||||
ReceiptType::Read => btreemap! {
|
ReceiptType::Read => btreemap! {
|
||||||
user_id => Receipt::new(MilliSecondsSinceUnixEpoch(uint!(1))),
|
user_id => Receipt::new(MilliSecondsSinceUnixEpoch(uint!(1))),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})),
|
}),
|
||||||
room_id: room_id!("!roomid:room.com"),
|
room_id: room_id!("!roomid:room.com"),
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -106,14 +104,11 @@ fn deserialize_ephemeral_receipt() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
assert_matches!(
|
assert_matches!(
|
||||||
from_json_value::<Raw<EphemeralRoomEvent<AnyEphemeralRoomEventContent>>>(json_data)
|
from_json_value::<Raw<AnyEphemeralRoomEvent>>(json_data).unwrap().deserialize().unwrap(),
|
||||||
.unwrap()
|
AnyEphemeralRoomEvent::Receipt(EphemeralRoomEvent {
|
||||||
.deserialize()
|
content: ReceiptEventContent(receipts),
|
||||||
.unwrap(),
|
|
||||||
EphemeralRoomEvent {
|
|
||||||
content: AnyEphemeralRoomEventContent::Receipt(ReceiptEventContent(receipts)),
|
|
||||||
room_id,
|
room_id,
|
||||||
} if !receipts.is_empty() && receipts.contains_key(&event_id)
|
}) if !receipts.is_empty() && receipts.contains_key(&event_id)
|
||||||
&& room_id == room_id!("!roomid:room.com")
|
&& room_id == room_id!("!roomid:room.com")
|
||||||
&& receipts
|
&& receipts
|
||||||
.get(&event_id)
|
.get(&event_id)
|
||||||
|
@ -6,7 +6,7 @@ use ruma_events::{
|
|||||||
call::{answer::AnswerEventContent, SessionDescription, SessionDescriptionType},
|
call::{answer::AnswerEventContent, SessionDescription, SessionDescriptionType},
|
||||||
room::{ImageInfo, ThumbnailInfo},
|
room::{ImageInfo, ThumbnailInfo},
|
||||||
sticker::StickerEventContent,
|
sticker::StickerEventContent,
|
||||||
AnyMessageEventContent, AnySyncMessageEvent, MessageEvent, RawExt, Unsigned,
|
AnyMessageEvent, AnyMessageEventContent, AnySyncMessageEvent, MessageEvent, RawExt, Unsigned,
|
||||||
};
|
};
|
||||||
use ruma_identifiers::{event_id, mxc_uri, room_id, user_id};
|
use ruma_identifiers::{event_id, mxc_uri, room_id, user_id};
|
||||||
use ruma_serde::Raw;
|
use ruma_serde::Raw;
|
||||||
@ -15,7 +15,7 @@ use serde_json::{from_value as from_json_value, json, to_value as to_json_value}
|
|||||||
#[test]
|
#[test]
|
||||||
fn message_serialize_sticker() {
|
fn message_serialize_sticker() {
|
||||||
let aliases_event = MessageEvent {
|
let aliases_event = MessageEvent {
|
||||||
content: AnyMessageEventContent::Sticker(StickerEventContent::new(
|
content: StickerEventContent::new(
|
||||||
"Hello".into(),
|
"Hello".into(),
|
||||||
assign!(ImageInfo::new(), {
|
assign!(ImageInfo::new(), {
|
||||||
height: UInt::new(423),
|
height: UInt::new(423),
|
||||||
@ -31,7 +31,7 @@ fn message_serialize_sticker() {
|
|||||||
thumbnail_url: Some(mxc_uri!("mxc://matrix.org/irsns989Rrsn")),
|
thumbnail_url: Some(mxc_uri!("mxc://matrix.org/irsns989Rrsn")),
|
||||||
}),
|
}),
|
||||||
mxc_uri!("mxc://matrix.org/rnsldl8srs98IRrs"),
|
mxc_uri!("mxc://matrix.org/rnsldl8srs98IRrs"),
|
||||||
)),
|
),
|
||||||
event_id: event_id!("$h29iv0s8:example.com"),
|
event_id: event_id!("$h29iv0s8:example.com"),
|
||||||
origin_server_ts: MilliSecondsSinceUnixEpoch(uint!(1)),
|
origin_server_ts: MilliSecondsSinceUnixEpoch(uint!(1)),
|
||||||
room_id: room_id!("!roomid:room.com"),
|
room_id: room_id!("!roomid:room.com"),
|
||||||
@ -116,12 +116,9 @@ fn deserialize_message_call_answer() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
assert_matches!(
|
assert_matches!(
|
||||||
from_json_value::<Raw<MessageEvent<AnyMessageEventContent>>>(json_data)
|
from_json_value::<Raw<AnyMessageEvent>>(json_data).unwrap().deserialize().unwrap(),
|
||||||
.unwrap()
|
AnyMessageEvent::CallAnswer(MessageEvent {
|
||||||
.deserialize()
|
content: AnswerEventContent {
|
||||||
.unwrap(),
|
|
||||||
MessageEvent {
|
|
||||||
content: AnyMessageEventContent::CallAnswer(AnswerEventContent {
|
|
||||||
answer: SessionDescription {
|
answer: SessionDescription {
|
||||||
session_type: SessionDescriptionType::Answer,
|
session_type: SessionDescriptionType::Answer,
|
||||||
sdp,
|
sdp,
|
||||||
@ -130,13 +127,13 @@ fn deserialize_message_call_answer() {
|
|||||||
call_id,
|
call_id,
|
||||||
version,
|
version,
|
||||||
..
|
..
|
||||||
}),
|
},
|
||||||
event_id,
|
event_id,
|
||||||
origin_server_ts,
|
origin_server_ts,
|
||||||
room_id,
|
room_id,
|
||||||
sender,
|
sender,
|
||||||
unsigned,
|
unsigned,
|
||||||
} if sdp == "Hello" && call_id == "foofoo" && version == UInt::new(1).unwrap()
|
}) if sdp == "Hello" && call_id == "foofoo" && version == UInt::new(1).unwrap()
|
||||||
&& event_id == event_id!("$h29iv0s8:example.com")
|
&& event_id == event_id!("$h29iv0s8:example.com")
|
||||||
&& origin_server_ts == MilliSecondsSinceUnixEpoch(uint!(1))
|
&& origin_server_ts == MilliSecondsSinceUnixEpoch(uint!(1))
|
||||||
&& room_id == room_id!("!roomid:room.com")
|
&& room_id == room_id!("!roomid:room.com")
|
||||||
@ -173,12 +170,9 @@ fn deserialize_message_sticker() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
assert_matches!(
|
assert_matches!(
|
||||||
from_json_value::<Raw<MessageEvent<AnyMessageEventContent>>>(json_data)
|
from_json_value::<Raw<AnyMessageEvent>>(json_data).unwrap().deserialize().unwrap(),
|
||||||
.unwrap()
|
AnyMessageEvent::Sticker(MessageEvent {
|
||||||
.deserialize()
|
content: StickerEventContent {
|
||||||
.unwrap(),
|
|
||||||
MessageEvent {
|
|
||||||
content: AnyMessageEventContent::Sticker(StickerEventContent {
|
|
||||||
body,
|
body,
|
||||||
info: ImageInfo {
|
info: ImageInfo {
|
||||||
height,
|
height,
|
||||||
@ -194,13 +188,13 @@ fn deserialize_message_sticker() {
|
|||||||
},
|
},
|
||||||
url,
|
url,
|
||||||
..
|
..
|
||||||
}),
|
},
|
||||||
event_id,
|
event_id,
|
||||||
origin_server_ts,
|
origin_server_ts,
|
||||||
room_id,
|
room_id,
|
||||||
sender,
|
sender,
|
||||||
unsigned
|
unsigned
|
||||||
} if event_id == event_id!("$h29iv0s8:example.com")
|
}) if event_id == event_id!("$h29iv0s8:example.com")
|
||||||
&& body == "Hello"
|
&& body == "Hello"
|
||||||
&& origin_server_ts == MilliSecondsSinceUnixEpoch(uint!(1))
|
&& origin_server_ts == MilliSecondsSinceUnixEpoch(uint!(1))
|
||||||
&& room_id == room_id!("!roomid:room.com")
|
&& room_id == room_id!("!roomid:room.com")
|
||||||
@ -254,12 +248,9 @@ fn deserialize_message_then_convert_to_full() {
|
|||||||
let full_json = to_json_value(full).unwrap();
|
let full_json = to_json_value(full).unwrap();
|
||||||
|
|
||||||
assert_matches!(
|
assert_matches!(
|
||||||
from_json_value::<Raw<MessageEvent<AnyMessageEventContent>>>(full_json)
|
from_json_value::<Raw<AnyMessageEvent>>(full_json).unwrap().deserialize().unwrap(),
|
||||||
.unwrap()
|
AnyMessageEvent::CallAnswer(MessageEvent {
|
||||||
.deserialize()
|
content: AnswerEventContent {
|
||||||
.unwrap(),
|
|
||||||
MessageEvent {
|
|
||||||
content: AnyMessageEventContent::CallAnswer(AnswerEventContent {
|
|
||||||
answer: SessionDescription {
|
answer: SessionDescription {
|
||||||
session_type: SessionDescriptionType::Answer,
|
session_type: SessionDescriptionType::Answer,
|
||||||
sdp,
|
sdp,
|
||||||
@ -268,13 +259,13 @@ fn deserialize_message_then_convert_to_full() {
|
|||||||
call_id,
|
call_id,
|
||||||
version,
|
version,
|
||||||
..
|
..
|
||||||
}),
|
},
|
||||||
event_id,
|
event_id,
|
||||||
origin_server_ts,
|
origin_server_ts,
|
||||||
room_id,
|
room_id,
|
||||||
sender,
|
sender,
|
||||||
unsigned,
|
unsigned,
|
||||||
} if sdp == "Hello"
|
}) if sdp == "Hello"
|
||||||
&& call_id == "foofoo"
|
&& call_id == "foofoo"
|
||||||
&& version == uint!(1)
|
&& version == uint!(1)
|
||||||
&& event_id == "$h29iv0s8:example.com"
|
&& event_id == "$h29iv0s8:example.com"
|
||||||
|
@ -36,14 +36,10 @@ fn aliases_event_with_prev_content() -> JsonValue {
|
|||||||
#[test]
|
#[test]
|
||||||
fn serialize_aliases_with_prev_content() {
|
fn serialize_aliases_with_prev_content() {
|
||||||
let aliases_event = StateEvent {
|
let aliases_event = StateEvent {
|
||||||
content: AnyStateEventContent::RoomAliases(AliasesEventContent::new(vec![room_alias_id!(
|
content: AliasesEventContent::new(vec![room_alias_id!("#somewhere:localhost")]),
|
||||||
"#somewhere:localhost"
|
|
||||||
)])),
|
|
||||||
event_id: event_id!("$h29iv0s8:example.com"),
|
event_id: event_id!("$h29iv0s8:example.com"),
|
||||||
origin_server_ts: MilliSecondsSinceUnixEpoch(uint!(1)),
|
origin_server_ts: MilliSecondsSinceUnixEpoch(uint!(1)),
|
||||||
prev_content: Some(AnyStateEventContent::RoomAliases(AliasesEventContent::new(vec![
|
prev_content: Some(AliasesEventContent::new(vec![room_alias_id!("#inner:localhost")])),
|
||||||
room_alias_id!("#inner:localhost"),
|
|
||||||
]))),
|
|
||||||
room_id: room_id!("!roomid:room.com"),
|
room_id: room_id!("!roomid:room.com"),
|
||||||
sender: user_id!("@carl:example.com"),
|
sender: user_id!("@carl:example.com"),
|
||||||
state_key: "".into(),
|
state_key: "".into(),
|
||||||
@ -59,9 +55,7 @@ fn serialize_aliases_with_prev_content() {
|
|||||||
#[test]
|
#[test]
|
||||||
fn serialize_aliases_without_prev_content() {
|
fn serialize_aliases_without_prev_content() {
|
||||||
let aliases_event = StateEvent {
|
let aliases_event = StateEvent {
|
||||||
content: AnyStateEventContent::RoomAliases(AliasesEventContent::new(vec![room_alias_id!(
|
content: AliasesEventContent::new(vec![room_alias_id!("#somewhere:localhost")]),
|
||||||
"#somewhere:localhost"
|
|
||||||
)])),
|
|
||||||
event_id: event_id!("$h29iv0s8:example.com"),
|
event_id: event_id!("$h29iv0s8:example.com"),
|
||||||
origin_server_ts: MilliSecondsSinceUnixEpoch(uint!(1)),
|
origin_server_ts: MilliSecondsSinceUnixEpoch(uint!(1)),
|
||||||
prev_content: None,
|
prev_content: None,
|
||||||
@ -108,20 +102,17 @@ fn deserialize_aliases_with_prev_content() {
|
|||||||
let json_data = aliases_event_with_prev_content();
|
let json_data = aliases_event_with_prev_content();
|
||||||
|
|
||||||
assert_matches!(
|
assert_matches!(
|
||||||
from_json_value::<Raw<StateEvent<AnyStateEventContent>>>(json_data)
|
from_json_value::<Raw<AnyStateEvent>>(json_data).unwrap().deserialize().unwrap(),
|
||||||
.unwrap()
|
AnyStateEvent::RoomAliases(StateEvent {
|
||||||
.deserialize()
|
content,
|
||||||
.unwrap(),
|
|
||||||
StateEvent {
|
|
||||||
content: AnyStateEventContent::RoomAliases(content),
|
|
||||||
event_id,
|
event_id,
|
||||||
origin_server_ts,
|
origin_server_ts,
|
||||||
prev_content: Some(AnyStateEventContent::RoomAliases(prev_content)),
|
prev_content: Some(prev_content),
|
||||||
room_id,
|
room_id,
|
||||||
sender,
|
sender,
|
||||||
state_key,
|
state_key,
|
||||||
unsigned,
|
unsigned,
|
||||||
} if content.aliases == vec![room_alias_id!("#somewhere:localhost")]
|
}) if content.aliases == vec![room_alias_id!("#somewhere:localhost")]
|
||||||
&& event_id == event_id!("$h29iv0s8:example.com")
|
&& event_id == event_id!("$h29iv0s8:example.com")
|
||||||
&& origin_server_ts == MilliSecondsSinceUnixEpoch(uint!(1))
|
&& origin_server_ts == MilliSecondsSinceUnixEpoch(uint!(1))
|
||||||
&& prev_content.aliases == vec![room_alias_id!("#inner:localhost")]
|
&& prev_content.aliases == vec![room_alias_id!("#inner:localhost")]
|
||||||
@ -138,17 +129,17 @@ fn deserialize_aliases_sync_with_room_id() {
|
|||||||
let json_data = aliases_event_with_prev_content();
|
let json_data = aliases_event_with_prev_content();
|
||||||
|
|
||||||
assert_matches!(
|
assert_matches!(
|
||||||
from_json_value::<SyncStateEvent<AnyStateEventContent>>(json_data)
|
from_json_value::<AnySyncStateEvent>(json_data)
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
SyncStateEvent {
|
AnySyncStateEvent::RoomAliases(SyncStateEvent {
|
||||||
content: AnyStateEventContent::RoomAliases(content),
|
content,
|
||||||
event_id,
|
event_id,
|
||||||
origin_server_ts,
|
origin_server_ts,
|
||||||
prev_content: Some(AnyStateEventContent::RoomAliases(prev_content)),
|
prev_content: Some(prev_content),
|
||||||
sender,
|
sender,
|
||||||
state_key,
|
state_key,
|
||||||
unsigned,
|
unsigned,
|
||||||
} if content.aliases == vec![room_alias_id!("#somewhere:localhost")]
|
}) if content.aliases == vec![room_alias_id!("#somewhere:localhost")]
|
||||||
&& event_id == event_id!("$h29iv0s8:example.com")
|
&& event_id == event_id!("$h29iv0s8:example.com")
|
||||||
&& origin_server_ts == MilliSecondsSinceUnixEpoch(uint!(1))
|
&& origin_server_ts == MilliSecondsSinceUnixEpoch(uint!(1))
|
||||||
&& prev_content.aliases == vec![room_alias_id!("#inner:localhost")]
|
&& prev_content.aliases == vec![room_alias_id!("#inner:localhost")]
|
||||||
@ -191,16 +182,16 @@ fn deserialize_avatar_without_prev_content() {
|
|||||||
let expected_url = Some(expected_url);
|
let expected_url = Some(expected_url);
|
||||||
|
|
||||||
assert_matches!(
|
assert_matches!(
|
||||||
from_json_value::<Raw<StateEvent<AnyStateEventContent>>>(json_data)
|
from_json_value::<Raw<AnyStateEvent>>(json_data)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.deserialize()
|
.deserialize()
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
StateEvent {
|
AnyStateEvent::RoomAvatar(StateEvent {
|
||||||
content: AnyStateEventContent::RoomAvatar(AvatarEventContent {
|
content: AvatarEventContent {
|
||||||
info: Some(info),
|
info: Some(info),
|
||||||
url,
|
url,
|
||||||
..
|
..
|
||||||
}),
|
},
|
||||||
event_id,
|
event_id,
|
||||||
origin_server_ts,
|
origin_server_ts,
|
||||||
prev_content: None,
|
prev_content: None,
|
||||||
@ -208,7 +199,7 @@ fn deserialize_avatar_without_prev_content() {
|
|||||||
sender,
|
sender,
|
||||||
state_key,
|
state_key,
|
||||||
unsigned
|
unsigned
|
||||||
} if event_id == event_id!("$h29iv0s8:example.com")
|
}) if event_id == event_id!("$h29iv0s8:example.com")
|
||||||
&& origin_server_ts == MilliSecondsSinceUnixEpoch(uint!(1))
|
&& origin_server_ts == MilliSecondsSinceUnixEpoch(uint!(1))
|
||||||
&& room_id == room_id!("!roomid:room.com")
|
&& room_id == room_id!("!roomid:room.com")
|
||||||
&& sender == user_id!("@carl:example.com")
|
&& sender == user_id!("@carl:example.com")
|
||||||
|
@ -3,7 +3,7 @@ use std::convert::TryFrom;
|
|||||||
use js_int::uint;
|
use js_int::uint;
|
||||||
use ruma_events::{
|
use ruma_events::{
|
||||||
room::{join_rules::JoinRule, topic::TopicEventContent},
|
room::{join_rules::JoinRule, topic::TopicEventContent},
|
||||||
AnyStateEventContent, AnyStrippedStateEvent, StrippedStateEvent,
|
AnyStrippedStateEvent, StrippedStateEvent,
|
||||||
};
|
};
|
||||||
use ruma_identifiers::{mxc_uri, user_id, RoomNameBox};
|
use ruma_identifiers::{mxc_uri, user_id, RoomNameBox};
|
||||||
use serde_json::{from_value as from_json_value, json, to_value as to_json_value};
|
use serde_json::{from_value as from_json_value, json, to_value as to_json_value};
|
||||||
@ -11,7 +11,7 @@ use serde_json::{from_value as from_json_value, json, to_value as to_json_value}
|
|||||||
#[test]
|
#[test]
|
||||||
fn serialize_stripped_state_event_any_content() {
|
fn serialize_stripped_state_event_any_content() {
|
||||||
let event = StrippedStateEvent {
|
let event = StrippedStateEvent {
|
||||||
content: AnyStateEventContent::RoomTopic(TopicEventContent::new("Testing room".into())),
|
content: TopicEventContent::new("Testing room".into()),
|
||||||
state_key: "".into(),
|
state_key: "".into(),
|
||||||
sender: user_id!("@example:localhost"),
|
sender: user_id!("@example:localhost"),
|
||||||
};
|
};
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use ruma_events::{room_key::RoomKeyToDeviceEventContent, AnyToDeviceEventContent, ToDeviceEvent};
|
use ruma_events::{room_key::RoomKeyToDeviceEventContent, ToDeviceEvent};
|
||||||
use ruma_identifiers::{room_id, user_id, EventEncryptionAlgorithm};
|
use ruma_identifiers::{room_id, user_id, EventEncryptionAlgorithm};
|
||||||
use serde_json::{json, to_value as to_json_value};
|
use serde_json::{json, to_value as to_json_value};
|
||||||
|
|
||||||
@ -6,12 +6,12 @@ use serde_json::{json, to_value as to_json_value};
|
|||||||
fn serialization() {
|
fn serialization() {
|
||||||
let ev = ToDeviceEvent {
|
let ev = ToDeviceEvent {
|
||||||
sender: user_id!("@example:example.org"),
|
sender: user_id!("@example:example.org"),
|
||||||
content: AnyToDeviceEventContent::RoomKey(RoomKeyToDeviceEventContent::new(
|
content: RoomKeyToDeviceEventContent::new(
|
||||||
EventEncryptionAlgorithm::MegolmV1AesSha2,
|
EventEncryptionAlgorithm::MegolmV1AesSha2,
|
||||||
room_id!("!testroomid:example.org"),
|
room_id!("!testroomid:example.org"),
|
||||||
"SessId".into(),
|
"SessId".into(),
|
||||||
"SessKey".into(),
|
"SessKey".into(),
|
||||||
)),
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user