1 #![allow(
2 clippy::eq_op,
3 clippy::needless_pass_by_value,
4 clippy::toplevel_ref_arg,
5 clippy::wildcard_imports
6 )]
7
8 mod util;
9
10 use crate::util::*;
11 use semver::Prerelease;
12
13 #[test]
test_new()14 fn test_new() {
15 fn test(identifier: Prerelease, expected: &str) {
16 assert_eq!(identifier.is_empty(), expected.is_empty());
17 assert_eq!(identifier.len(), expected.len());
18 assert_eq!(identifier.as_str(), expected);
19 assert_eq!(identifier, identifier);
20 assert_eq!(identifier, identifier.clone());
21 }
22
23 let ref mut string = String::new();
24 let limit = if cfg!(miri) { 40 } else { 280 }; // miri is slow
25 for _ in 0..limit {
26 test(prerelease(string), string);
27 string.push('1');
28 }
29
30 if !cfg!(miri) {
31 let ref string = string.repeat(20000);
32 test(prerelease(string), string);
33 }
34 }
35
36 #[test]
test_eq()37 fn test_eq() {
38 assert_eq!(prerelease("-"), prerelease("-"));
39 assert_ne!(prerelease("a"), prerelease("aa"));
40 assert_ne!(prerelease("aa"), prerelease("a"));
41 assert_ne!(prerelease("aaaaaaaaa"), prerelease("a"));
42 assert_ne!(prerelease("a"), prerelease("aaaaaaaaa"));
43 assert_ne!(prerelease("aaaaaaaaa"), prerelease("bbbbbbbbb"));
44 assert_ne!(build_metadata("1"), build_metadata("001"));
45 }
46
47 #[test]
test_prerelease()48 fn test_prerelease() {
49 let err = prerelease_err("1.b\0");
50 assert_to_string(err, "unexpected character in pre-release identifier");
51 }
52