diff --git a/src/uu/stat/src/stat.rs b/src/uu/stat/src/stat.rs index 600fdd304..a43836fd3 100644 --- a/src/uu/stat/src/stat.rs +++ b/src/uu/stat/src/stat.rs @@ -1082,3 +1082,115 @@ pub fn uu_app() -> Command { .value_hint(clap::ValueHint::FilePath), ) } + +#[cfg(test)] +mod tests { + use super::{group_num, Flags, ScanUtil, Stater, Token}; + + #[test] + fn test_scanners() { + assert_eq!(Some((-5, 2)), "-5zxc".scan_num::()); + assert_eq!(Some((51, 2)), "51zxc".scan_num::()); + assert_eq!(Some((192, 4)), "+192zxc".scan_num::()); + assert_eq!(None, "z192zxc".scan_num::()); + + assert_eq!(Some(('a', 3)), "141zxc".scan_char(8)); + assert_eq!(Some(('\n', 2)), "12qzxc".scan_char(8)); // spell-checker:disable-line + assert_eq!(Some(('\r', 1)), "dqzxc".scan_char(16)); // spell-checker:disable-line + assert_eq!(None, "z2qzxc".scan_char(8)); // spell-checker:disable-line + } + + #[test] + fn test_group_num() { + assert_eq!("12,379,821,234", group_num("12379821234")); + assert_eq!("21,234", group_num("21234")); + assert_eq!("821,234", group_num("821234")); + assert_eq!("1,821,234", group_num("1821234")); + assert_eq!("1,234", group_num("1234")); + assert_eq!("234", group_num("234")); + assert_eq!("24", group_num("24")); + assert_eq!("4", group_num("4")); + assert_eq!("", group_num("")); + assert_eq!("-5", group_num("-5")); + assert_eq!("-1,234", group_num("-1234")); + } + + #[test] + #[should_panic] + fn test_group_num_panic_if_invalid_numeric_characters() { + group_num("³³³³³"); + } + + #[test] + fn normal_format() { + let s = "%'010.2ac%-#5.w\n"; + let expected = vec![ + Token::Directive { + flag: Flags { + group: true, + zero: true, + ..Default::default() + }, + width: 10, + precision: 2, + format: 'a', + }, + Token::Char('c'), + Token::Directive { + flag: Flags { + left: true, + alter: true, + ..Default::default() + }, + width: 5, + precision: 0, + format: 'w', + }, + Token::Char('\n'), + ]; + assert_eq!(&expected, &Stater::generate_tokens(s, false).unwrap()); + } + + #[test] + fn printf_format() { + let s = "%-# 15a\\t\\r\\\"\\\\\\a\\b\\e\\f\\v%+020.-23w\\x12\\167\\132\\112\\n"; + let expected = vec![ + Token::Directive { + flag: Flags { + left: true, + alter: true, + space: true, + ..Default::default() + }, + width: 15, + precision: -1, + format: 'a', + }, + Token::Char('\t'), + Token::Char('\r'), + Token::Char('"'), + Token::Char('\\'), + Token::Char('\x07'), + Token::Char('\x08'), + Token::Char('\x1B'), + Token::Char('\x0C'), + Token::Char('\x0B'), + Token::Directive { + flag: Flags { + sign: true, + zero: true, + ..Default::default() + }, + width: 20, + precision: -1, + format: 'w', + }, + Token::Char('\x12'), + Token::Char('w'), + Token::Char('Z'), + Token::Char('J'), + Token::Char('\n'), + ]; + assert_eq!(&expected, &Stater::generate_tokens(s, true).unwrap()); + } +} diff --git a/tests/by-util/test_stat.rs b/tests/by-util/test_stat.rs index 659e8ee49..5a6fa41f2 100644 --- a/tests/by-util/test_stat.rs +++ b/tests/by-util/test_stat.rs @@ -7,126 +7,11 @@ extern crate regex; use crate::common::util::*; -extern crate stat; -pub use self::stat::*; - #[test] fn test_invalid_arg() { new_ucmd!().arg("--definitely-invalid").fails().code_is(1); } -#[test] -fn test_scanners() { - assert_eq!(Some((-5, 2)), "-5zxc".scan_num::()); - assert_eq!(Some((51, 2)), "51zxc".scan_num::()); - assert_eq!(Some((192, 4)), "+192zxc".scan_num::()); - assert_eq!(None, "z192zxc".scan_num::()); - - assert_eq!(Some(('a', 3)), "141zxc".scan_char(8)); - assert_eq!(Some(('\n', 2)), "12qzxc".scan_char(8)); // spell-checker:disable-line - assert_eq!(Some(('\r', 1)), "dqzxc".scan_char(16)); // spell-checker:disable-line - assert_eq!(None, "z2qzxc".scan_char(8)); // spell-checker:disable-line -} - -#[test] -fn test_group_num() { - assert_eq!("12,379,821,234", group_num("12379821234")); - assert_eq!("21,234", group_num("21234")); - assert_eq!("821,234", group_num("821234")); - assert_eq!("1,821,234", group_num("1821234")); - assert_eq!("1,234", group_num("1234")); - assert_eq!("234", group_num("234")); - assert_eq!("24", group_num("24")); - assert_eq!("4", group_num("4")); - assert_eq!("", group_num("")); - assert_eq!("-5", group_num("-5")); - assert_eq!("-1,234", group_num("-1234")); -} - -#[test] -#[should_panic] -fn test_group_num_panic_if_invalid_numeric_characters() { - group_num("³³³³³"); -} - -#[cfg(test)] -mod test_generate_tokens { - use super::*; - - #[test] - fn normal_format() { - let s = "%'010.2ac%-#5.w\n"; - let expected = vec![ - Token::Directive { - flag: Flags { - group: true, - zero: true, - ..Default::default() - }, - width: 10, - precision: 2, - format: 'a', - }, - Token::Char('c'), - Token::Directive { - flag: Flags { - left: true, - alter: true, - ..Default::default() - }, - width: 5, - precision: 0, - format: 'w', - }, - Token::Char('\n'), - ]; - assert_eq!(&expected, &Stater::generate_tokens(s, false).unwrap()); - } - - #[test] - fn printf_format() { - let s = "%-# 15a\\t\\r\\\"\\\\\\a\\b\\e\\f\\v%+020.-23w\\x12\\167\\132\\112\\n"; - let expected = vec![ - Token::Directive { - flag: Flags { - left: true, - alter: true, - space: true, - ..Default::default() - }, - width: 15, - precision: -1, - format: 'a', - }, - Token::Char('\t'), - Token::Char('\r'), - Token::Char('"'), - Token::Char('\\'), - Token::Char('\x07'), - Token::Char('\x08'), - Token::Char('\x1B'), - Token::Char('\x0C'), - Token::Char('\x0B'), - Token::Directive { - flag: Flags { - sign: true, - zero: true, - ..Default::default() - }, - width: 20, - precision: -1, - format: 'w', - }, - Token::Char('\x12'), - Token::Char('w'), - Token::Char('Z'), - Token::Char('J'), - Token::Char('\n'), - ]; - assert_eq!(&expected, &Stater::generate_tokens(s, true).unwrap()); - } -} - #[test] fn test_invalid_option() { new_ucmd!().arg("-w").arg("-q").arg("/").fails();