From 3f927cb968653dd2efcfb1d858c19e5a7927d48c Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Thu, 9 Mar 2023 01:23:07 -0500 Subject: bump deps --- tests/quickcheck.rs | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) (limited to 'tests') diff --git a/tests/quickcheck.rs b/tests/quickcheck.rs index 3591285..5610934 100644 --- a/tests/quickcheck.rs +++ b/tests/quickcheck.rs @@ -1,15 +1,26 @@ -use rand::Rng as _; +use quickcheck::Arbitrary as _; mod helpers; #[derive(Clone, Debug)] struct TerminalInput(Vec); +fn gen_range(gen: &mut quickcheck::Gen, range: std::ops::Range) -> T +where + T: Copy, + T: quickcheck::Arbitrary, + T: std::ops::Add + + std::ops::Rem + + std::ops::Sub, +{ + T::arbitrary(gen) % (range.end - range.start) + range.start +} + impl quickcheck::Arbitrary for TerminalInput { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { let size = { let s = g.size(); - g.gen_range(0, s) + gen_range(g, 0..s) }; TerminalInput( (0..size) @@ -23,7 +34,8 @@ impl quickcheck::Arbitrary for TerminalInput { } } -fn choose_terminal_input_fragment(g: &mut G) -> Vec { +fn choose_terminal_input_fragment(g: &mut quickcheck::Gen) -> Vec { + #[derive(Clone)] enum Fragment { Text, Control, @@ -35,11 +47,9 @@ fn choose_terminal_input_fragment(g: &mut G) -> Vec { Dcs, } - impl rand::distributions::Distribution - for rand::distributions::Standard - { - fn sample(&self, rng: &mut R) -> Fragment { - match rng.gen() { + impl quickcheck::Arbitrary for Fragment { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { + match u8::arbitrary(g) { 0u8..=231 => Fragment::Text, 232..=239 => Fragment::Control, 240..=247 => Fragment::Escape, @@ -48,9 +58,9 @@ fn choose_terminal_input_fragment(g: &mut G) -> Vec { } } - match g.gen() { + match Fragment::arbitrary(g) { Fragment::Text => { - let mut u: u32 = g.gen_range(32, 2u32.pow(20) - 2048); + let mut u: u32 = gen_range(g, 32..(2u32.pow(20) - 2048)); // surrogates aren't valid codepoints on their own if u >= 0xD800 { u += 2048; @@ -64,17 +74,17 @@ fn choose_terminal_input_fragment(g: &mut G) -> Vec { let s = c.encode_utf8(&mut b); (*s).to_string().into_bytes() } - Fragment::Control => vec![g.gen_range(7, 14)], + Fragment::Control => vec![gen_range(g, 7..14)], Fragment::Escape => { let mut v = vec![0x1b]; - let c = g.gen_range(b'0', b'~'); + let c = gen_range(g, b'0'..b'~'); v.push(c); v } Fragment::Csi => { let mut v = vec![0x1b, b'[']; // TODO: params - let c = g.gen_range(b'@', b'~'); + let c = gen_range(g, b'@'..b'~'); v.push(c); v } -- cgit v1.2.3-54-g00ecf