summaryrefslogtreecommitdiffstats
path: root/vendor/fastrand/tests/char.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:18:32 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:18:32 +0000
commit4547b622d8d29df964fa2914213088b148c498fc (patch)
tree9fc6b25f3c3add6b745be9a2400a6e96140046e9 /vendor/fastrand/tests/char.rs
parentReleasing progress-linux version 1.66.0+dfsg1-1~progress7.99u1. (diff)
downloadrustc-4547b622d8d29df964fa2914213088b148c498fc.tar.xz
rustc-4547b622d8d29df964fa2914213088b148c498fc.zip
Merging upstream version 1.67.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/fastrand/tests/char.rs')
-rw-r--r--vendor/fastrand/tests/char.rs44
1 files changed, 44 insertions, 0 deletions
diff --git a/vendor/fastrand/tests/char.rs b/vendor/fastrand/tests/char.rs
new file mode 100644
index 000000000..0f48c5770
--- /dev/null
+++ b/vendor/fastrand/tests/char.rs
@@ -0,0 +1,44 @@
+use std::convert::TryFrom;
+use std::ops::RangeBounds;
+
+fn test_char_coverage<R>(n: usize, range: R)
+where
+ R: Iterator<Item = char> + RangeBounds<char> + Clone,
+{
+ use std::collections::HashSet;
+
+ let all: HashSet<char> = range.clone().collect();
+ let mut covered = HashSet::new();
+ for _ in 0..n {
+ let c = fastrand::char(range.clone());
+ assert!(all.contains(&c));
+ covered.insert(c);
+ }
+ assert_eq!(covered, all);
+}
+
+#[test]
+fn test_char() {
+ // ASCII control chars.
+ let nul = 0u8 as char;
+ let soh = 1u8 as char;
+ let stx = 2u8 as char;
+ // Some undefined Hangul Jamo codepoints just before
+ // the surrogate area.
+ let last_jamo = char::try_from(0xd7ffu32).unwrap();
+ let penultimate_jamo = char::try_from(last_jamo as u32 - 1).unwrap();
+ // Private-use codepoints just after the surrogate area.
+ let first_private = char::try_from(0xe000u32).unwrap();
+ let second_private = char::try_from(first_private as u32 + 1).unwrap();
+ // Private-use codepoints at the end of Unicode space.
+ let last_private = std::char::MAX;
+ let penultimate_private = char::try_from(last_private as u32 - 1).unwrap();
+
+ test_char_coverage(100, nul..stx);
+ test_char_coverage(100, nul..=soh);
+
+ test_char_coverage(400, penultimate_jamo..second_private);
+ test_char_coverage(400, penultimate_jamo..=second_private);
+
+ test_char_coverage(100, penultimate_private..=last_private);
+}