use nu_test_support::fs::Stub::FileWithContentToBeTrimmed; use nu_test_support::playground::Playground; use nu_test_support::{nu, pipeline}; #[test] fn uniq_rows() { Playground::setup("uniq_test_1", |dirs, sandbox| { sandbox.with_files(vec![FileWithContentToBeTrimmed( "los_tres_caballeros.csv", r#" first_name,last_name,rusty_at,type Andrés,Robalino,10/11/2013,A Jonathan,Turner,10/12/2013,B Yehuda,Katz,10/11/2013,A Jonathan,Turner,10/12/2013,B Yehuda,Katz,10/11/2013,A "#, )]); let actual = nu!( cwd: dirs.test(), pipeline( r#" open los_tres_caballeros.csv | uniq | count | echo $it "# )); assert_eq!(actual, "3"); }) } #[test] fn uniq_columns() { Playground::setup("uniq_test_2", |dirs, sandbox| { sandbox.with_files(vec![FileWithContentToBeTrimmed( "los_tres_caballeros.csv", r#" first_name,last_name,rusty_at,type Andrés,Robalino,10/11/2013,A Jonathan,Turner,10/12/2013,B Yehuda,Katz,10/11/2013,A Jonathan,Turner,10/12/2013,B Yehuda,Katz,10/11/2013,A "#, )]); let actual = nu!( cwd: dirs.test(), pipeline( r#" open los_tres_caballeros.csv | pick rusty_at type | uniq | count | echo $it "# )); assert_eq!(actual, "2"); }) } #[test] fn uniq_values() { Playground::setup("uniq_test_3", |dirs, sandbox| { sandbox.with_files(vec![FileWithContentToBeTrimmed( "los_tres_caballeros.csv", r#" first_name,last_name,rusty_at,type Andrés,Robalino,10/11/2013,A Jonathan,Turner,10/12/2013,B Yehuda,Katz,10/11/2013,A Jonathan,Turner,10/12/2013,B Yehuda,Katz,10/11/2013,A "#, )]); let actual = nu!( cwd: dirs.test(), pipeline( r#" open los_tres_caballeros.csv | pick get type | uniq | count | echo $it "# )); assert_eq!(actual, "2"); }) } #[test] fn uniq_when_keys_out_of_order() { let actual = nu!( cwd: "tests/fixtures/formats", pipeline( r#" echo '[{"a": "a", "b": [1,2,3]},{"b": [1,2,3], "a": "a"}]' | from-json | uniq | count | echo $it "# )); assert_eq!(actual, "1"); } #[test] fn uniq_nested_json_structures() { let actual = nu!( cwd: "tests/fixtures/formats", "open nested_uniq.json | uniq | count | echo $it" ); assert_eq!(actual, "3"); }