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 test_zip_no_shuffle() {
    TestHelper::local_remote_env(|env| {
        let items1 = 0..3u8;
        let items2 = vec!["a".to_string(), "b".to_string(), "c".to_string()];

        let source1 = IteratorSource::new(items1.clone());
        let source2 = IteratorSource::new(items2.clone().into_iter());
        let stream1 = env.stream(source1);
        let stream2 = env.stream(source2);
        let res = stream1.zip(stream2).collect_vec();
        env.execute_blocking();
        if let Some(res) = res.get() {
            let expected = items1.into_iter().zip(items2).collect_vec();
            assert_eq!(res, expected);
        }
    });
}

#[test]
fn test_zip_balanced() {
    TestHelper::local_remote_env(|env| {
        let items1 = 0..3u8;
        let items2 = vec!["a".to_string(), "b".to_string(), "c".to_string()];

        let source1 = IteratorSource::new(items1.clone());
        let source2 = IteratorSource::new(items2.clone().into_iter());
        let stream1 = env.stream(source1).shuffle();
        let stream2 = env.stream(source2).shuffle();
        let res = stream1.zip(stream2).collect_vec();
        env.execute_blocking();
        if let Some(res) = res.get() {
            let (n, s): (Vec<_>, Vec<_>) = res.into_iter().unzip();
            let n = n.into_iter().sorted().collect_vec();
            let s = s.into_iter().sorted().collect_vec();

            assert_eq!(n, items1.collect_vec());
            assert_eq!(s, items2);
        }
    });
}

#[test]
fn test_zip_unbalanced() {
    TestHelper::local_remote_env(|env| {
        let items1 = 0..10u8;
        let items2 = vec!["a".to_string(), "b".to_string(), "c".to_string()];

        let source1 = IteratorSource::new(items1);
        let source2 = IteratorSource::new(items2.clone().into_iter());
        let stream1 = env.stream(source1).shuffle();
        let stream2 = env.stream(source2).shuffle();
        let res = stream1.zip(stream2).collect_vec();
        env.execute_blocking();
        if let Some(res) = res.get() {
            let (_n, s): (Vec<_>, Vec<_>) = res.into_iter().unzip();
            let s = s.into_iter().sorted().collect_vec();

            assert_eq!(s, items2);
        }
    });
}