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 rich_map_stream() {
    TestHelper::local_remote_env(|env| {
        let source = IteratorSource::new(0..10u8);
        let res = env
            .stream(source)
            .map(|_| 1)
            .rich_map({
                let mut count = 0;
                move |n| {
                    count += n;
                    count
                }
            })
            .collect_vec();
        env.execute_blocking();
        if let Some(res) = res.get() {
            let expected = (1..=10u32).collect_vec();
            assert_eq!(res, expected);
        }
    });
}

#[test]
fn rich_map_keyed_stream() {
    TestHelper::local_remote_env(|env| {
        let source = IteratorSource::new(0..10u8);
        let res = env
            .stream(source)
            .group_by(|n| n % 2)
            .map(|_| 1)
            .rich_map({
                let mut count = 0;
                move |(_k, v)| {
                    count += v;
                    count
                }
            })
            .collect_vec();
        env.execute_blocking();
        if let Some(res) = res.get() {
            let res = res.into_iter().sorted().collect_vec();
            let expected = (0..=1)
                .flat_map(|k| (1..=5).map(move |v| (k, v)))
                .sorted()
                .collect_vec();
            assert_eq!(res, expected);
        }
    });
}