nu-command 0.112.1

Nushell's built-in commands
Documentation
use nu_test_support::prelude::*;

const ZIP_POWERED_TEST_ASSERTION_COMMAND: &str = "
export def expect [
    left,
    --to-eq,
    right
] {
    $left | zip $right | all {|row|
        $row.name.0 == $row.name.1 and $row.commits.0 == $row.commits.1
    }
}
";

#[test]
fn zips_two_tables() -> Result {
    let mut tester = test();
    let _: () = tester.run(ZIP_POWERED_TEST_ASSERTION_COMMAND)?;
    let code = "
        let contributors = ([
            [name, commits];
            [andres,    10]
            [    jt,    20]
        ]);

        let actual = ($contributors | upsert commits {|i| ($i.commits + 10) });
        expect $actual --to-eq [[name, commits]; [andres, 20], [jt, 30]]
    ";

    tester.run(code).expect_value_eq(true)
}

#[test]
fn zips_two_lists() -> Result {
    let code = "
        echo [0 2 4 6 8]
        | zip [1 3 5 7 9]
        | flatten
        | into string
        | str join '-'
    ";

    test().run(code).expect_value_eq("0-1-2-3-4-5-6-7-8-9")
}