diff --git a/tests/integration_tests.rs b/tests/integration_tests.rs index 1ddc0b5..c5ee3b9 100644 --- a/tests/integration_tests.rs +++ b/tests/integration_tests.rs @@ -6,9 +6,12 @@ fn hexyl() -> Command { cmd } -#[test] -fn can_print_simple_ascii_file() { - hexyl() +mod basic { + use super::hexyl; + + #[test] + fn can_print_simple_ascii_file() { + hexyl() .arg("ascii") .arg("--color=never") .assert() @@ -18,11 +21,11 @@ fn can_print_simple_ascii_file() { │00000000│ 61 62 63 64 65 66 67 68 ┊ 21 3f 25 26 2f 28 29 0a │abcdefgh┊!?%&/()_│\n\ └────────┴─────────────────────────┴─────────────────────────┴────────┴────────┘\n", ); -} + } -#[test] -fn can_read_input_from_stdin() { - hexyl() + #[test] + fn can_read_input_from_stdin() { + hexyl() .arg("--color=never") .write_stdin("abc") .assert() @@ -32,16 +35,34 @@ fn can_read_input_from_stdin() { │00000000│ 61 62 63 ┊ │abc ┊ │\n\ └────────┴─────────────────────────┴─────────────────────────┴────────┴────────┘\n", ); + } + + #[test] + fn fails_on_non_existing_input() { + hexyl().arg("non-existing").assert().failure(); + } + + #[test] + fn prints_warning_on_empty_content() { + hexyl() + .arg("empty") + .arg("--color=never") + .assert() + .success() + .stdout( + "┌────────┬─────────────────────────┬─────────────────────────┬────────┬────────┐\n\ + │ │ No content to print │ │ │ │\n\ + └────────┴─────────────────────────┴─────────────────────────┴────────┴────────┘\n", + ); + } } -#[test] -fn fails_on_non_existing_input() { - hexyl().arg("non-existing").assert().failure(); -} +mod length { + use super::hexyl; -#[test] -fn length_restricts_output_size() { - hexyl() + #[test] + fn length_restricts_output_size() { + hexyl() .arg("hello_world_elf64") .arg("--color=never") .arg("--length=32") @@ -53,25 +74,25 @@ fn length_restricts_output_size() { │00000010│ 02 00 3e 00 01 00 00 00 ┊ 00 10 40 00 00 00 00 00 │•0>0•000┊0•@00000│\n\ └────────┴─────────────────────────┴─────────────────────────┴────────┴────────┘\n", ); + } + + #[test] + fn fail_if_length_and_bytes_options_are_used_simultaneously() { + hexyl() + .arg("hello_world_elf64") + .arg("--length=32") + .arg("--bytes=10") + .assert() + .failure(); + } } -#[test] -fn prints_warning_on_empty_content() { - hexyl() - .arg("empty") - .arg("--color=never") - .assert() - .success() - .stdout( - "┌────────┬─────────────────────────┬─────────────────────────┬────────┬────────┐\n\ - │ │ No content to print │ │ │ │\n\ - └────────┴─────────────────────────┴─────────────────────────┴────────┴────────┘\n", - ); -} +mod skip { + use super::hexyl; -#[test] -fn prints_warning_when_skipping_past_the_end() { - hexyl() + #[test] + fn prints_warning_when_skipping_past_the_end() { + hexyl() .arg("ascii") .arg("--color=never") .arg("--skip=1000") @@ -82,42 +103,42 @@ fn prints_warning_when_skipping_past_the_end() { │ │ No content to print │ │ │ │\n\ └────────┴─────────────────────────┴─────────────────────────┴────────┴────────┘\n", ); -} + } -#[test] -fn can_handle_negative_skip_arguments() { - hexyl() - .arg("hello_world_elf64") + #[test] + fn can_handle_negative_arguments() { + hexyl() + .arg("ascii") .arg("--color=never") - .arg("--skip=-1KiB") + .arg("--skip=2") + .arg("--length=4") .assert() - .success(); + .success() + .stdout( + "┌────────┬─────────────────────────┬─────────────────────────┬────────┬────────┐\n\ + │00000002│ 63 64 65 66 ┊ │cdef ┊ │\n\ + └────────┴─────────────────────────┴─────────────────────────┴────────┴────────┘\n", + ); + } + + #[test] + fn fails_if_negative_offset_is_too_large() { + hexyl() + .arg("hello_world_elf64") + .arg("--color=never") + .arg("--skip=-1MiB") + .assert() + .failure() + .stderr(predicates::str::contains("Failed to jump")); + } } -#[test] -fn fails_if_negative_offset_is_too_large() { - hexyl() - .arg("hello_world_elf64") - .arg("--color=never") - .arg("--skip=-1MiB") - .assert() - .failure() - .stderr(predicates::str::contains("Failed to jump")); -} +mod display_offset { + use super::hexyl; -#[test] -fn fail_if_length_and_bytes_options_are_used_simultaneously() { - hexyl() - .arg("hello_world_elf64") - .arg("--length=32") - .arg("--bytes=10") - .assert() - .failure(); -} - -#[test] -fn display_offset() { - hexyl() + #[test] + fn basic() { + hexyl() .arg("ascii") .arg("--color=never") .arg("--display-offset=0xc0ffee") @@ -128,11 +149,11 @@ fn display_offset() { │00c0ffee│ 61 62 63 64 65 66 67 68 ┊ 21 3f 25 26 2f 28 29 0a │abcdefgh┊!?%&/()_│\n\ └────────┴─────────────────────────┴─────────────────────────┴────────┴────────┘\n", ); -} + } -#[test] -fn display_offset_and_skip() { - hexyl() + #[test] + fn display_offset_and_skip() { + hexyl() .arg("hello_world_elf64") .arg("--color=never") .arg("--display-offset=0x20") @@ -145,19 +166,24 @@ fn display_offset_and_skip() { │00000030│ 02 00 3e 00 01 00 00 00 ┊ 00 10 40 00 00 00 00 00 │•0>0•000┊0•@00000│\n\ └────────┴─────────────────────────┴─────────────────────────┴────────┴────────┘\n", ); + } } -#[test] -fn fails_for_zero_or_negative_blocksize() { - hexyl() - .arg("ascii") - .arg("--block-size=0") - .assert() - .failure(); +mod blocksize { + use super::hexyl; - hexyl() - .arg("ascii") - .arg("--block-size=-16") - .assert() - .failure(); + #[test] + fn fails_for_zero_or_negative_blocksize() { + hexyl() + .arg("ascii") + .arg("--block-size=0") + .assert() + .failure(); + + hexyl() + .arg("ascii") + .arg("--block-size=-16") + .assert() + .failure(); + } }