extern crate alloc;
use alloc::format;
use super::super::super::support::arb_vv;
use super::{arb_dots, arb_roster, have};
use crate::metis::with_scope;
use proptest::prelude::*;
proptest! {
#[test]
fn prop_peek_agrees_with_forget(
v in arb_vv(), dots in arb_dots(), r in arb_roster(),
) {
let set = have(&dots);
with_scope(r.iter().copied(), |scope| {
let sv = scope.restrict(&v);
let sd = scope.restrict_dots(&set);
let peeked_vv = format!("{:?}", sv.peek());
let peeked_ds = format!("{:?}", sd.peek());
let sv2 = scope.restrict(&v);
let sd2 = scope.restrict_dots(&set);
prop_assert_eq!(sv.peek(), sv2.peek());
prop_assert_eq!(sd.peek(), sd2.peek());
prop_assert_eq!(peeked_vv, format!("{:?}", sv.forget()));
prop_assert_eq!(peeked_ds, format!("{:?}", sd.forget()));
Ok(())
})?;
}
}