noir-compute 0.2.0

Network of Operators In Rust
Documentation
use itertools::Itertools;

use noir_compute::operator::source::IteratorSource;
use utils::TestHelper;

mod utils;

#[test]
fn fold_stream() {
    TestHelper::local_remote_env(|env| {
        let source = IteratorSource::new(0..10u8);
        let res = env
            .stream(source)
            .fold("".to_string(), |s, n| *s += &n.to_string())
            .collect_vec();
        env.execute_blocking();
        if let Some(res) = res.get() {
            assert_eq!(res.len(), 1);
            assert_eq!(res[0], "0123456789");
        }
    });
}

#[test]
fn fold_assoc_stream() {
    TestHelper::local_remote_env(|env| {
        let source = IteratorSource::new(0..10u8);
        let res = env
            .stream(source)
            .fold_assoc(
                "".to_string(),
                |s, n| *s += &n.to_string(),
                |s1, s2| *s1 += &s2,
            )
            .collect_vec();
        env.execute_blocking();
        if let Some(res) = res.get() {
            assert_eq!(res.len(), 1);
            assert_eq!(res[0], "0123456789");
        }
    });
}

#[test]
fn fold_shuffled_stream() {
    TestHelper::local_remote_env(|env| {
        let source = IteratorSource::new(0..10u8);
        let res = env
            .stream(source)
            .shuffle()
            .fold(Vec::new(), |v, n| v.push(n))
            .collect_vec();
        env.execute_blocking();
        if let Some(mut res) = res.get() {
            assert_eq!(res.len(), 1);
            res[0].sort_unstable();
            assert_eq!(res[0], (0..10u8).collect_vec());
        }
    });
}

#[test]
fn fold_assoc_shuffled_stream() {
    TestHelper::local_remote_env(|env| {
        let source = IteratorSource::new(0..10u8);
        let res = env
            .stream(source)
            .shuffle()
            .fold_assoc(
                Vec::new(),
                |v, n| v.push(n),
                |v1, mut v2| v1.append(&mut v2),
            )
            .collect_vec();
        env.execute_blocking();
        if let Some(mut res) = res.get() {
            assert_eq!(res.len(), 1);
            res[0].sort_unstable();
            assert_eq!(res[0], (0..10u8).collect_vec());
        }
    });
}