Initial vendor packages
Signed-off-by: Valentin Popov <valentin@popov.link>
This commit is contained in:
		
							
								
								
									
										44
									
								
								vendor/fastrand/tests/char.rs
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								vendor/fastrand/tests/char.rs
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -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);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										143
									
								
								vendor/fastrand/tests/smoke.rs
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										143
									
								
								vendor/fastrand/tests/smoke.rs
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,143 @@
 | 
			
		||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
 | 
			
		||||
use wasm_bindgen_test::wasm_bindgen_test as test;
 | 
			
		||||
 | 
			
		||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
 | 
			
		||||
wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_browser);
 | 
			
		||||
 | 
			
		||||
#[test]
 | 
			
		||||
fn bool() {
 | 
			
		||||
    for x in &[false, true] {
 | 
			
		||||
        while fastrand::bool() != *x {}
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[test]
 | 
			
		||||
fn u8() {
 | 
			
		||||
    for x in 0..10 {
 | 
			
		||||
        while fastrand::u8(..10) != x {}
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    for x in 200..=u8::MAX {
 | 
			
		||||
        while fastrand::u8(200..) != x {}
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[test]
 | 
			
		||||
fn i8() {
 | 
			
		||||
    for x in -128..-120 {
 | 
			
		||||
        while fastrand::i8(..-120) != x {}
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    for x in 120..=127 {
 | 
			
		||||
        while fastrand::i8(120..) != x {}
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[test]
 | 
			
		||||
fn u32() {
 | 
			
		||||
    for n in 1u32..10_000 {
 | 
			
		||||
        let n = n.wrapping_mul(n);
 | 
			
		||||
        let n = n.wrapping_mul(n);
 | 
			
		||||
        if n != 0 {
 | 
			
		||||
            for _ in 0..1000 {
 | 
			
		||||
                assert!(fastrand::u32(..n) < n);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[test]
 | 
			
		||||
fn u64() {
 | 
			
		||||
    for n in 1u64..10_000 {
 | 
			
		||||
        let n = n.wrapping_mul(n);
 | 
			
		||||
        let n = n.wrapping_mul(n);
 | 
			
		||||
        let n = n.wrapping_mul(n);
 | 
			
		||||
        if n != 0 {
 | 
			
		||||
            for _ in 0..1000 {
 | 
			
		||||
                assert!(fastrand::u64(..n) < n);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[test]
 | 
			
		||||
fn u128() {
 | 
			
		||||
    for n in 1u128..10_000 {
 | 
			
		||||
        let n = n.wrapping_mul(n);
 | 
			
		||||
        let n = n.wrapping_mul(n);
 | 
			
		||||
        let n = n.wrapping_mul(n);
 | 
			
		||||
        let n = n.wrapping_mul(n);
 | 
			
		||||
        if n != 0 {
 | 
			
		||||
            for _ in 0..1000 {
 | 
			
		||||
                assert!(fastrand::u128(..n) < n);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[test]
 | 
			
		||||
fn fill() {
 | 
			
		||||
    let mut r = fastrand::Rng::new();
 | 
			
		||||
    let mut a = [0u8; 64];
 | 
			
		||||
    let mut b = [0u8; 64];
 | 
			
		||||
 | 
			
		||||
    r.fill(&mut a);
 | 
			
		||||
    r.fill(&mut b);
 | 
			
		||||
 | 
			
		||||
    assert_ne!(a, b);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[test]
 | 
			
		||||
fn rng() {
 | 
			
		||||
    let mut r = fastrand::Rng::new();
 | 
			
		||||
 | 
			
		||||
    assert_ne!(r.u64(..), r.u64(..));
 | 
			
		||||
 | 
			
		||||
    r.seed(7);
 | 
			
		||||
    let a = r.u64(..);
 | 
			
		||||
    r.seed(7);
 | 
			
		||||
    let b = r.u64(..);
 | 
			
		||||
    assert_eq!(a, b);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[test]
 | 
			
		||||
fn rng_init() {
 | 
			
		||||
    let mut a = fastrand::Rng::new();
 | 
			
		||||
    let mut b = fastrand::Rng::new();
 | 
			
		||||
    assert_ne!(a.u64(..), b.u64(..));
 | 
			
		||||
 | 
			
		||||
    a.seed(7);
 | 
			
		||||
    b.seed(7);
 | 
			
		||||
    assert_eq!(a.u64(..), b.u64(..));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[test]
 | 
			
		||||
fn with_seed() {
 | 
			
		||||
    let mut a = fastrand::Rng::with_seed(7);
 | 
			
		||||
    let mut b = fastrand::Rng::new();
 | 
			
		||||
    b.seed(7);
 | 
			
		||||
    assert_eq!(a.u64(..), b.u64(..));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[test]
 | 
			
		||||
fn choose_multiple() {
 | 
			
		||||
    let mut a = fastrand::Rng::new();
 | 
			
		||||
    let mut elements = (0..20).collect::<Vec<_>>();
 | 
			
		||||
 | 
			
		||||
    while !elements.is_empty() {
 | 
			
		||||
        let chosen = a.choose_multiple(0..20, 5);
 | 
			
		||||
        for &x in &chosen {
 | 
			
		||||
            elements.retain(|&y| y != x);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[test]
 | 
			
		||||
fn choice() {
 | 
			
		||||
    let items = [1, 4, 9, 5, 2, 3, 6, 7, 8, 0];
 | 
			
		||||
    let mut r = fastrand::Rng::new();
 | 
			
		||||
 | 
			
		||||
    for item in &items {
 | 
			
		||||
        while r.choice(&items).unwrap() != item {}
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user