From f01685c63f05d842fc40afd98e4d3b1d1d5d534c Mon Sep 17 00:00:00 2001 From: Jonathan Date: Sun, 29 Apr 2018 13:05:31 -0300 Subject: [PATCH] Add tests for SizeFilter (--size) fixes sharkdp/fd#289 --- tests/tests.rs | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/tests/tests.rs b/tests/tests.rs index 668eec4..fc6dcaa 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -1001,3 +1001,80 @@ fn test_invalid_utf8() { // Should not be found under a different extension te.assert_output(&["-e", "zip", "", "test1/"], ""); } + +/// (--size) +#[test] +fn test_size() { + use std::ffi::OsStr; + use std::os::unix::ffi::OsStrExt; + + let dirs = &["test1", "test2"]; + let files = &["test1/a.foo", "test1/b.foo", "test1/c.foo"]; + let te = TestEnv::new(dirs, files); + + let mut f = fs::File::create(te.test_root().join("test1/tiny.foo")).unwrap(); + f.write("Hello world".as_bytes()).unwrap(); // 11 bytes + f.flush().unwrap(); + + let mut f = fs::File::create(te.test_root().join("test2/big.foo")).unwrap(); + f.write("Hello user, fd is a nice tool.".as_bytes()).unwrap(); // 30 bytes + f.flush().unwrap(); + + // Zero and non-zero sized files. + te.assert_output( + &["", "test1", "test2", "--size", "+0B"], + "test1/a.foo + test1/b.foo + test1/c.foo + test1/tiny.foo + test2/big.foo" + ); + + // Zero sized files. + te.assert_output( + &["", "test1", "test2", "--size", "-0B"], + "test1/a.foo + test1/b.foo + test1/c.foo" + ); + + // Files with 2 bytes or more. + te.assert_output( + &["", "test1", "test2", "--size", "+2B"], + "test1/tiny.foo + test2/big.foo" + ); + + // Files with 2 bytes or less. + te.assert_output( + &["", "test1", "test2", "--size", "-2B"], + "test1/a.foo + test1/b.foo + test1/c.foo" + ); + + // Files with size between 1 byte and 11 bytes. + te.assert_output( + &["", "test1", "test2", "--size", "+1B", "--size", "-11B"], + "test1/tiny.foo" + ); + + // Files with size between 1 byte and 30 bytes. + te.assert_output( + &["", "test1", "test2", "--size", "+1B", "--size", "-30B"], + "test1/tiny.foo + test2/big.foo" + ); + + // Files with size between 12 and 30 bytes. + te.assert_output( + &["", "test1", "test2", "--size", "+12B", "--size", "-30B"], + "test2/big.foo" + ); + + // Files with size between 31 and 100 bytes. + te.assert_output( + &["", "test1", "test2", "--size", "+31B", "--size", "-100B"], + "" + ); +}