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