nushell/crates/nu-command/tests/commands/math/round.rs
juanPabloMiceli 7fb48b9a2f
Fix negative precision round with ints (issue #9049) (#9073)
# Description
Before this PR, `math round` ignores the input if it's an `int`. This
results in the following behaviour:
```
> 123 | math round --precision -1
123
```
When the correct result is 120.

Now `int values` are converted to `float values` before actually
rounding up the number in order to take advantage of the float
implementation.

Fixes #9049.
2023-05-03 23:07:32 +02:00

36 lines
832 B
Rust

use nu_test_support::nu;
#[test]
fn can_round_very_large_numbers() {
let actual = nu!("18.1372544780074142289927665486772012345 | math round");
assert_eq!(actual.out, "18")
}
#[test]
fn can_round_very_large_numbers_with_precision() {
let actual = nu!("18.13725447800741422899276654867720121457878988 | math round -p 10");
assert_eq!(actual.out, "18.137254478")
}
#[test]
fn can_round_integer_with_negative_precision() {
let actual = nu!("123 | math round -p -1");
assert_eq!(actual.out, "120")
}
#[test]
fn can_round_float_with_negative_precision() {
let actual = nu!("123.3 | math round -p -1");
assert_eq!(actual.out, "120")
}
#[test]
fn fails_with_wrong_input_type() {
let actual = nu!("\"not_a_number\" | math round");
assert!(actual.err.contains("Input type not supported"))
}