mirror of
https://github.com/nushell/nushell
synced 2024-12-30 15:03:25 +00:00
7fb48b9a2f
# 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.
36 lines
832 B
Rust
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"))
|
|
}
|