nushell/crates/nu-command/tests/commands/histogram.rs
Renan Ribeiro 54d73748e4
Remove file I/O from tests that don't need it (#11182)
# Description

This PR implements modifications to command tests that write unnecessary
json and csv to disk then load it with open, by using nuon literals
instead.

- Fixes #7189



# User-Facing Changes
None

# Tests + Formatting
This only affects existing tests, which still pass.
2023-11-29 23:21:34 +01:00

103 lines
2.7 KiB
Rust

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);
}