FromSlice
in unbalanced
tests
This commit is contained in:
parent
d61d70b996
commit
0e07e43f85
@ -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 {
|
||||||
@ -168,15 +182,7 @@ 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() {
|
||||||
@ -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());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user