Add support for room version 5.
This commit is contained in:
parent
6de32b1b9c
commit
9506c565e0
@ -38,12 +38,19 @@ pub struct RoomVersionId(InnerRoomVersionId);
|
||||
enum InnerRoomVersionId {
|
||||
/// A version 1 room.
|
||||
Version1,
|
||||
|
||||
/// A version 2 room.
|
||||
Version2,
|
||||
|
||||
/// A version 3 room.
|
||||
Version3,
|
||||
|
||||
/// A version 4 room.
|
||||
Version4,
|
||||
|
||||
/// A version 5 room.
|
||||
Version5,
|
||||
|
||||
/// A custom room version.
|
||||
Custom(String),
|
||||
}
|
||||
@ -72,6 +79,11 @@ impl RoomVersionId {
|
||||
Self(InnerRoomVersionId::Version4)
|
||||
}
|
||||
|
||||
/// Creates a version 5 room ID.
|
||||
pub fn version_5() -> Self {
|
||||
Self(InnerRoomVersionId::Version5)
|
||||
}
|
||||
|
||||
/// Creates a custom room version ID from the given string slice.
|
||||
pub fn custom(id: &str) -> Self {
|
||||
Self(InnerRoomVersionId::Custom(id.to_string()))
|
||||
@ -109,6 +121,11 @@ impl RoomVersionId {
|
||||
pub fn is_version_4(&self) -> bool {
|
||||
self.0 == InnerRoomVersionId::Version4
|
||||
}
|
||||
|
||||
/// Whether or not this is a version 5 room.
|
||||
pub fn is_version_5(&self) -> bool {
|
||||
self.0 == InnerRoomVersionId::Version5
|
||||
}
|
||||
}
|
||||
|
||||
impl Display for RoomVersionId {
|
||||
@ -118,6 +135,7 @@ impl Display for RoomVersionId {
|
||||
InnerRoomVersionId::Version2 => "2",
|
||||
InnerRoomVersionId::Version3 => "3",
|
||||
InnerRoomVersionId::Version4 => "4",
|
||||
InnerRoomVersionId::Version5 => "5",
|
||||
InnerRoomVersionId::Custom(ref version) => version,
|
||||
};
|
||||
|
||||
@ -153,6 +171,7 @@ impl<'a> TryFrom<&'a str> for RoomVersionId {
|
||||
"2" => Self(InnerRoomVersionId::Version2),
|
||||
"3" => Self(InnerRoomVersionId::Version3),
|
||||
"4" => Self(InnerRoomVersionId::Version4),
|
||||
"5" => Self(InnerRoomVersionId::Version5),
|
||||
custom => {
|
||||
if custom.is_empty() {
|
||||
return Err(Error::MinimumLengthNotSatisfied);
|
||||
@ -204,6 +223,7 @@ mod tests {
|
||||
"1"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn valid_version_2_room_version_id() {
|
||||
assert_eq!(
|
||||
@ -213,6 +233,7 @@ mod tests {
|
||||
"2"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn valid_version_3_room_version_id() {
|
||||
assert_eq!(
|
||||
@ -222,6 +243,7 @@ mod tests {
|
||||
"3"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn valid_version_4_room_version_id() {
|
||||
assert_eq!(
|
||||
@ -232,6 +254,16 @@ mod tests {
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn valid_version_5_room_version_id() {
|
||||
assert_eq!(
|
||||
RoomVersionId::try_from("5")
|
||||
.expect("Failed to create RoomVersionId.")
|
||||
.to_string(),
|
||||
"5"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn valid_custom_room_version_id() {
|
||||
assert_eq!(
|
||||
@ -311,35 +343,42 @@ mod tests {
|
||||
assert!(RoomVersionId::version_2().is_version_2());
|
||||
assert!(RoomVersionId::version_3().is_version_3());
|
||||
assert!(RoomVersionId::version_4().is_version_4());
|
||||
assert!(RoomVersionId::version_5().is_version_5());
|
||||
assert!(RoomVersionId::custom("foo").is_custom());
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[allow(clippy::cognitive_complexity)]
|
||||
fn predicate_methods() {
|
||||
let version_1 = RoomVersionId::try_from("1").expect("Failed to create RoomVersionId.");
|
||||
let version_2 = RoomVersionId::try_from("2").expect("Failed to create RoomVersionId.");
|
||||
let version_3 = RoomVersionId::try_from("3").expect("Failed to create RoomVersionId.");
|
||||
let version_4 = RoomVersionId::try_from("4").expect("Failed to create RoomVersionId.");
|
||||
let version_5 = RoomVersionId::try_from("5").expect("Failed to create RoomVersionId.");
|
||||
let custom = RoomVersionId::try_from("io.ruma.1").expect("Failed to create RoomVersionId.");
|
||||
|
||||
assert!(version_1.is_version_1());
|
||||
assert!(version_2.is_version_2());
|
||||
assert!(version_3.is_version_3());
|
||||
assert!(version_4.is_version_4());
|
||||
assert!(version_5.is_version_5());
|
||||
|
||||
assert!(!version_1.is_version_2());
|
||||
assert!(!version_1.is_version_3());
|
||||
assert!(!version_1.is_version_4());
|
||||
assert!(!version_1.is_version_5());
|
||||
|
||||
assert!(version_1.is_official());
|
||||
assert!(version_2.is_official());
|
||||
assert!(version_3.is_official());
|
||||
assert!(version_4.is_official());
|
||||
assert!(version_5.is_official());
|
||||
|
||||
assert!(!version_1.is_custom());
|
||||
assert!(!version_2.is_custom());
|
||||
assert!(!version_3.is_custom());
|
||||
assert!(!version_4.is_custom());
|
||||
assert!(!version_5.is_custom());
|
||||
|
||||
assert!(custom.is_custom());
|
||||
assert!(!custom.is_official());
|
||||
@ -347,5 +386,6 @@ mod tests {
|
||||
assert!(!custom.is_version_2());
|
||||
assert!(!custom.is_version_3());
|
||||
assert!(!custom.is_version_4());
|
||||
assert!(!custom.is_version_5());
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user