nushell/crates/nu-command/tests/commands/into_filesize.rs
Lily Mara d90420ac4c
Add subcommand into filesize (#3987)
* Add subcommand `into filesize`

It's currently not possible to convert a number or a string containing a number
into a filesize. The only way to create an instance of filesize type today is
with a literal in nushell syntax. This commit adds the `into filesize`
subcommand so that file sizes can be created from the outputs of programs
producing numbers or strings, like standard unix tools.

There is a limitation with this - it doesn't currently parse values like `10 MB`
or `10 MiB`, it can only look at the number itself. If the desire is there, more
flexible parsing can be added.

* fixup! Add subcommand `into filesize`

* fixup! Add subcommand `into filesize`
2021-09-02 18:19:54 -05:00

76 lines
1.2 KiB
Rust

use nu_test_support::{nu, pipeline};
#[test]
fn into_filesize_int() {
let actual = nu!(
cwd: ".", pipeline(
r#"
1 | into filesize
"#
));
assert!(actual.out.contains("1 B"));
}
#[test]
fn into_filesize_decimal() {
let actual = nu!(
cwd: ".", pipeline(
r#"
1.2 | into filesize
"#
));
assert!(actual.out.contains("1 B"));
}
#[test]
fn into_filesize_str() {
let actual = nu!(
cwd: ".", pipeline(
r#"
'2000' | into filesize
"#
));
assert!(actual.out.contains("2.0 KB"));
}
#[test]
fn into_filesize_str_newline() {
let actual = nu!(
cwd: ".", pipeline(
r#"
'2000
' | into filesize
"#
));
assert!(actual.out.contains("2.0 KB"));
}
#[test]
fn into_filesize_str_many_newlines() {
let actual = nu!(
cwd: ".", pipeline(
r#"
'2000
' | into filesize
"#
));
assert!(actual.out.contains("2.0 KB"));
}
#[test]
fn into_filesize_filesize() {
let actual = nu!(
cwd: ".", pipeline(
r#"
3kb | into filesize
"#
));
assert!(actual.out.contains("3.0 KB"));
}