84 lines
2.5 KiB
Rust
84 lines
2.5 KiB
Rust
use chrono::NaiveDate;
|
|
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn test_parse_version_string() {
|
|
let version_string = "v0.2023.05.15.08.04.stable_01";
|
|
let parsed_version: ParsedVersion = version_string
|
|
.try_into()
|
|
.expect("version string is parsable");
|
|
assert_eq!(parsed_version.major, 0);
|
|
assert_eq!(
|
|
parsed_version.date,
|
|
NaiveDate::from_ymd_opt(2023, 5, 15)
|
|
.unwrap()
|
|
.and_hms_opt(8, 4, 0)
|
|
.unwrap()
|
|
);
|
|
assert_eq!(parsed_version.patch, 1);
|
|
}
|
|
|
|
#[test]
|
|
fn test_major_versions_compare_correctly() {
|
|
let older_version: ParsedVersion = "v0.2023.05.15.08.04.stable_01"
|
|
.try_into()
|
|
.expect("older_version is parsable");
|
|
let newer_version: ParsedVersion = "v1.2023.05.15.08.04.stable_01"
|
|
.try_into()
|
|
.expect("newer_version is parsable");
|
|
assert!(newer_version > older_version);
|
|
}
|
|
|
|
#[test]
|
|
fn test_dates_compare_correctly() {
|
|
let older_version: ParsedVersion = "v0.2023.05.15.08.04.stable_01"
|
|
.try_into()
|
|
.expect("older_version is parsable");
|
|
let newer_version: ParsedVersion = "v0.2023.05.22.08.04.stable_00"
|
|
.try_into()
|
|
.expect("newer_version is parsable");
|
|
assert!(newer_version > older_version);
|
|
}
|
|
|
|
#[test]
|
|
fn test_patches_compare_correctly() {
|
|
let older_version: ParsedVersion = "v0.2023.05.15.08.04.stable_00"
|
|
.try_into()
|
|
.expect("older_version is parsable");
|
|
let newer_version: ParsedVersion = "v0.2023.05.15.08.04.stable_01"
|
|
.try_into()
|
|
.expect("newer_version is parsable");
|
|
assert!(newer_version > older_version);
|
|
}
|
|
|
|
#[test]
|
|
fn test_ignores_unknown_channels() {
|
|
// We no longer support or parse-out beta and canary versions, but we
|
|
// need to be able to parse a JSON file that still contains them.
|
|
let channel_version_string = r#"{
|
|
"beta": {
|
|
"version": "v0.2024.01.30.16.52.beta_00"
|
|
},
|
|
"canary": {
|
|
"version": "v0.2022.09.29.08.08.canary_00"
|
|
},
|
|
"dev": {
|
|
"version": "v0.2024.01.30.20.34.dev_00"
|
|
},
|
|
"preview": {
|
|
"version": "v0.2024.01.30.20.34.preview_00"
|
|
},
|
|
"stable": {
|
|
"version": "v0.2024.01.16.16.31.stable_01"
|
|
}
|
|
}"#;
|
|
|
|
let channel_versions: ChannelVersions = serde_json::from_str(channel_version_string)
|
|
.expect("Should be able to parse channel versions");
|
|
assert_eq!(
|
|
channel_versions.stable.version_info().version,
|
|
"v0.2024.01.16.16.31.stable_01"
|
|
);
|
|
}
|