FromSlice in unbalanced tests
All checks were successful
buildbot/cargo fmt (1.72) Build done.
buildbot/cargo clippy (1.72) Build done.
buildbot/cargo test (1.65) Build done.
buildbot/cargo doc (1.72) Build done.
buildbot/cargo clippy (1.65) Build done.

This commit is contained in:
AF 2023-08-31 21:25:49 +00:00
parent d61d70b996
commit 0e07e43f85

View File

@ -144,16 +144,30 @@ impl<'a, T: Monad<'a>, A: 'a + Send + Sync> UnbalancedConstructor<'a, T, A> {
let ctr = self.clone(); let ctr = self.clone();
UnbalancedTree::Node(Arc::new(UnbalancedReference((ctr.wrap)(node)))).into() UnbalancedTree::Node(Arc::new(UnbalancedReference((ctr.wrap)(node)))).into()
} }
}
#[cfg(test)] #[cfg(test)]
pub fn from_slice<R: 'a + rand::Rng>( mod tests {
self: &Arc<Self>, use rand::{Rng, SeedableRng};
rng: &mut R,
slice: &[A], use crate::{flow::comparator::*, rstd::tracing::*};
) -> Arc<UnbalancedTree<'a, T, A>>
where use super::{algorithms::contains::*, algorithms::subset::*, *};
A: 'a + Clone,
trait FromSlice<R> {
type Tree;
type A;
fn from_slice(self: &Arc<Self>, rng: &mut R, slice: &[Self::A]) -> Arc<Self::Tree>;
}
impl<'a, T: Monad<'a>, A: 'a + Send + Sync + Clone, R: 'a + rand::Rng> FromSlice<R>
for UnbalancedConstructor<'a, T, A>
{ {
type A = A;
type Tree = UnbalancedTree<'a, T, A>;
fn from_slice(self: &Arc<Self>, rng: &mut R, slice: &[Self::A]) -> Arc<Self::Tree> {
if slice.is_empty() { if slice.is_empty() {
self.leaf() self.leaf()
} else { } else {
@ -170,14 +184,6 @@ impl<'a, T: Monad<'a>, A: 'a + Send + Sync> UnbalancedConstructor<'a, T, A> {
} }
} }
#[cfg(test)]
mod tests {
use rand::{Rng, SeedableRng};
use crate::{flow::comparator::*, rstd::tracing::*};
use super::{algorithms::contains::*, algorithms::subset::*, *};
#[test] #[test]
fn test_simple_slices() { fn test_simple_slices() {
let ctr: Arc<UnbalancedConstructor<instances::result::ResultInstance<()>, _>> = let ctr: Arc<UnbalancedConstructor<instances::result::ResultInstance<()>, _>> =
@ -265,7 +271,6 @@ mod tests {
UnbalancedConstructor::rc(Box::new(|node| { UnbalancedConstructor::rc(Box::new(|node| {
Box::new(move || TracedMonad::pure(node.clone()).after_resolution()) Box::new(move || TracedMonad::pure(node.clone()).after_resolution())
})); }));
// let mut rng = rand::thread_rng();
let mut rng = rand::rngs::StdRng::seed_from_u64(426); let mut rng = rand::rngs::StdRng::seed_from_u64(426);
let big: Vec<i32> = (0..(rng.gen_range(1000..2000))).collect(); let big: Vec<i32> = (0..(rng.gen_range(1000..2000))).collect();
let key = big[rng.gen_range(0..big.len())]; let key = big[rng.gen_range(0..big.len())];
@ -284,6 +289,5 @@ mod tests {
None, None,
); );
assert!(traced.value.is_ok()); assert!(traced.value.is_ok());
// panic!("{:?}", traced.render().to_vec());
} }
} }