Skip to content

Commit b785da0

Browse files
committed
tests: add more test cases inspired by mkosi
1 parent d080812 commit b785da0

File tree

1 file changed

+58
-1
lines changed

1 file changed

+58
-1
lines changed

tests/it.rs

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1-
//! Test cases from systemd's src/test/test-string-util.c
1+
//! Most test cases come from systemd's src/test/test-string-util.c
22
33
use std::cmp::Ordering;
44

55
use uapi_version::{strverscmp, Version};
66

77
fn assert_ordering(a: &str, b: &str, expected: Ordering) {
88
let ordering = strverscmp(a, b);
9+
if ordering != expected {
10+
println!("Wrong ordering: {a}, {b}");
11+
}
912
assert_eq!(ordering, expected);
1013
}
1114

@@ -73,6 +76,31 @@ fn order() {
7376
}
7477
}
7578

79+
/// Test data comes from systemd's `strverscmp_improved` docstring in src/fundamental/string-util-fundamental.c
80+
#[test]
81+
fn order_strverscmp_improved_doc() {
82+
let versions = [
83+
"122.1",
84+
"123~rc1-1",
85+
"123",
86+
"123-a",
87+
"123-a.1",
88+
"123-1",
89+
"123-1.1",
90+
"123^post1",
91+
"123.a-1",
92+
"123.1-1",
93+
"123a-1",
94+
"124-1",
95+
];
96+
97+
for (i, first) in versions.iter().enumerate() {
98+
for next in versions.iter().skip(i + 1) {
99+
assert_smaller(first, next);
100+
}
101+
}
102+
}
103+
76104
#[test]
77105
fn compare() {
78106
assert_smaller_list(&[
@@ -184,3 +212,32 @@ fn zeros() {
184212
("0.0.9", "1.0.0"),
185213
]);
186214
}
215+
216+
/// Test data comes from the examples from the UAPI version spec.
217+
#[test]
218+
fn uapi_spec_examples() {
219+
assert_ordering_list(&[
220+
("11", "11", Ordering::Equal),
221+
("systemd-123", "systemd-123", Ordering::Equal),
222+
("bar-123", "foo-123", Ordering::Less),
223+
("123a", "123", Ordering::Greater),
224+
("123.a", "123", Ordering::Greater),
225+
("123.a", "123.b", Ordering::Less),
226+
("123a", "123.a", Ordering::Greater),
227+
("11α", "11β", Ordering::Equal),
228+
("A", "a", Ordering::Less),
229+
("", "0", Ordering::Less),
230+
("0.", "0", Ordering::Greater),
231+
("0.0", "0", Ordering::Greater),
232+
("0", "~", Ordering::Greater),
233+
("", "~", Ordering::Greater),
234+
("1_", "1", Ordering::Equal),
235+
("_1", "1", Ordering::Equal),
236+
("1_", "1.2", Ordering::Less),
237+
("1_2_3", "1.3.3", Ordering::Greater),
238+
("1+", "1", Ordering::Equal),
239+
("+1", "1", Ordering::Equal),
240+
("1+", "1.2", Ordering::Less),
241+
("1+2+3", "1.3.3", Ordering::Greater),
242+
]);
243+
}

0 commit comments

Comments
 (0)