use nu_test_support::{nu, pipeline}; const SAMPLE_INPUT: &str = r#" [[first_name, last_name, rusty_at]; [Andrés, Robalino, Ecuador], [JT, Turner, "Estados Unidos"], [Yehuda, Katz, "Estados Unidos"]] "#; #[test] fn summarizes_by_column_given() { let actual = nu!(pipeline(&format!( r#" {SAMPLE_INPUT} | histogram rusty_at countries --percentage-type relative | where rusty_at == "Ecuador" | get countries | get 0 "# ))); assert_eq!( actual.out, "**************************************************" ); // 50% } #[test] fn summarizes_by_column_given_with_normalize_percentage() { let actual = nu!(pipeline(&format!( r#" {SAMPLE_INPUT} | histogram rusty_at countries | where rusty_at == "Ecuador" | get countries | get 0 "# ))); assert_eq!(actual.out, "*********************************"); // 33% } #[test] fn summarizes_by_values() { let actual = nu!(pipeline(&format!( r#" {SAMPLE_INPUT} | get rusty_at | histogram | where value == "Estados Unidos" | get count | get 0 "# ))); assert_eq!(actual.out, "2"); } #[test] fn help() { let help_command = nu!("help histogram"); let help_short = nu!("histogram -h"); let help_long = nu!("histogram --help"); assert_eq!(help_short.out, help_command.out); assert_eq!(help_long.out, help_command.out); } #[test] fn count() { let actual = nu!(pipeline( " echo [[bit]; [1] [0] [0] [0] [0] [0] [0] [1] [1]] | histogram bit --percentage-type relative | sort-by count | reject frequency | to json " )); let bit_json = r#"[ { "bit": 1, "count": 3, "quantile": 0.5, "percentage": "50.00%" }, { "bit": 0, "count": 6, "quantile": 1, "percentage": "100.00%" }]"#; assert_eq!(actual.out, bit_json); } #[test] fn count_with_normalize_percentage() { let actual = nu!(pipeline( " echo [[bit]; [1] [0] [0] [0] [0] [0] [0] [1]] | histogram bit --percentage-type normalize | sort-by count | reject frequency | to json " )); let bit_json = r#"[ { "bit": 1, "count": 2, "quantile": 0.25, "percentage": "25.00%" }, { "bit": 0, "count": 6, "quantile": 0.75, "percentage": "75.00%" }]"#; assert_eq!(actual.out, bit_json); }