From e598bf0835639a1c2fe34af00dad646cf4657f28 Mon Sep 17 00:00:00 2001 From: Jeffrey Finkelstein Date: Mon, 14 Feb 2022 21:16:37 -0500 Subject: [PATCH 1/2] tests: add CmdResult::stdout_is_fixture_bytes() Add helper method `CmdResult::stdout_is_fixture_bytes()`, which is like `stdout_is_fixture()` but compares stdout to the raw bytes of a given file instead of decoding the contents of the file to a UTF-8 string. --- tests/common/util.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/common/util.rs b/tests/common/util.rs index 4db4e2561..422d36328 100644 --- a/tests/common/util.rs +++ b/tests/common/util.rs @@ -265,6 +265,28 @@ impl CmdResult { let contents = read_scenario_fixture(&self.tmpd, file_rel_path); self.stdout_is(String::from_utf8(contents).unwrap()) } + + /// Assert that the bytes of stdout exactly match those of the given file. + /// + /// Contrast this with [`CmdResult::stdout_is_fixture`], which + /// decodes the contents of the file as a UTF-8 [`String`] before + /// comparison with stdout. + /// + /// # Examples + /// + /// Use this method in a unit test like this: + /// + /// ```rust,ignore + /// #[test] + /// fn test_something() { + /// new_ucmd!().succeeds().stdout_is_fixture_bytes("expected.bin"); + /// } + /// ``` + pub fn stdout_is_fixture_bytes>(&self, file_rel_path: T) -> &Self { + let contents = read_scenario_fixture(&self.tmpd, file_rel_path); + self.stdout_is_bytes(contents) + } + /// like stdout_is_fixture(...), but replaces the data in fixture file based on values provided in template_vars /// command output pub fn stdout_is_templated_fixture>( From ba1ce7179bf6cd2e24a522f8b9d14271561483f4 Mon Sep 17 00:00:00 2001 From: Jeffrey Finkelstein Date: Mon, 14 Feb 2022 21:20:12 -0500 Subject: [PATCH 2/2] dd: move unit tests into dd.rs and test_dd.rs Clean up unit tests in the `dd` crate to make them easier to manage. This commit does a few things. * move test cases that test the complete functionality of the `dd` program from the `dd_unit_tests` module up to the `tests/by-util/test_dd.rs` module so that they can take advantage of the testing framework and common testing tools provided by uutils, * move test cases that test internal functions of the `dd` implementation into the `tests` module within `dd.rs` so that they live closer to the code they are testing, * replace test cases defined by macros with test cases defined by plain old functions to make the test cases easier to read at a glance. --- src/uu/dd/src/dd.rs | 454 +++++++++++++++++- .../src/dd_unit_tests/block_unblock_tests.rs | 351 -------------- .../dd/src/dd_unit_tests/conv_sync_tests.rs | 106 ---- .../dd/src/dd_unit_tests/conversion_tests.rs | 233 --------- src/uu/dd/src/dd_unit_tests/mod.rs | 89 ---- src/uu/dd/src/dd_unit_tests/sanity_tests.rs | 316 ------------ ...ndom-5828891cb1230748e146f34223bbd3b5.test | Bin 0 -> 74400 bytes .../gnudd-conv-atoe-seq-byte-values.spec | Bin 256 -> 0 bytes .../gnudd-conv-atoibm-seq-byte-values.spec | Bin 256 -> 0 bytes ...nudd-conv-ebcdic-ltou-seq-byte-values.spec | Bin 256 -> 0 bytes ...nudd-conv-ebcdic-utol-seq-byte-values.spec | Bin 256 -> 0 bytes .../gnudd-conv-etoa-seq-byte-values.spec | Bin 256 -> 0 bytes .../gnudd-conv-ibm-ltou-seq-byte-values.spec | Bin 256 -> 0 bytes .../gnudd-conv-ibm-utol-seq-byte-values.spec | Bin 256 -> 0 bytes .../gnudd-conv-ltou-seq-byte-values.spec | Bin 256 -> 0 bytes .../gnudd-conv-utol-seq-byte-values.spec | Bin 256 -> 0 bytes src/uu/dd/test-resources/seq-byte-values.test | Bin 256 -> 0 bytes tests/by-util/test_dd.rs | 363 +++++++++++++- ...hars-37eff01866ba3f538421b30b7cbefcac.test | Bin .../fixtures/dd}/dd-block-cbs16-win.test | 0 .../fixtures/dd}/dd-block-cbs16.spec | 0 .../fixtures/dd}/dd-block-cbs16.test | 0 .../fixtures/dd}/dd-block-cbs8.spec | 0 .../dd}/dd-block-consecutive-nl-cbs16.spec | 0 .../dd}/dd-block-consecutive-nl-win.test | 0 .../fixtures/dd}/dd-block-consecutive-nl.test | 0 .../fixtures/dd}/dd-unblock-cbs16-win.spec | 0 .../fixtures/dd}/dd-unblock-cbs16.spec | 0 .../fixtures/dd}/dd-unblock-cbs16.test | 0 .../fixtures/dd}/dd-unblock-cbs8-win.spec | 0 .../fixtures/dd}/dd-unblock-cbs8.spec | 0 tests/fixtures/dd/deadbeef-16.spec | Bin 0 -> 128 bytes tests/fixtures/dd/deadbeef-16.test | 1 + ...beef-18d99661a1de1fc9af21b0ec2cd67ba3.test | 0 ...d-conv-sync-ibs-1031-obs-521-deadbeef.spec | 0 ...udd-conv-sync-ibs-1031-obs-521-random.spec | Bin ...nudd-conv-sync-ibs-1031-obs-521-zeros.spec | Bin ...d-conv-sync-ibs-521-obs-1031-deadbeef.spec | 0 ...udd-conv-sync-ibs-521-obs-1031-random.spec | Bin ...nudd-conv-sync-ibs-521-obs-1031-zeros.spec | Bin .../dd}/gnudd-deadbeef-first-12345.spec | 0 .../dd}/gnudd-deadbeef-first-16k.spec | 0 .../fixtures/dd}/gnudd-random-first-32k.spec | Bin .../fixtures/dd}/lcase-ascii.test | Bin .../fixtures/dd}/lcase-ebcdic.spec | Bin .../fixtures/dd}/lcase-ebcdic.test | Bin .../fixtures/dd}/lcase-ibm.spec | Bin .../fixtures/dd}/lcase-ibm.test | Bin ...ones-6ae59e64850377ee5470c854761551ea.test | 0 ...ndom-5828891cb1230748e146f34223bbd3b5.test | Bin 0 -> 74400 bytes ...lues-b632a992d3aed5d8d1a59cc5a5a455ba.test | Bin .../fixtures/dd}/seq-byte-values-odd.spec | Bin .../fixtures/dd}/seq-byte-values-odd.test | Bin .../fixtures/dd}/seq-byte-values-swapped.test | Bin .../fixtures/dd}/ucase-ascii.test | Bin .../fixtures/dd}/ucase-ebcdic.spec | Bin .../fixtures/dd}/ucase-ebcdic.test | Bin .../fixtures/dd}/ucase-ibm.spec | Bin .../fixtures/dd}/ucase-ibm.test | Bin ...eros-620f0b67a91f7f74151bc5be745b7110.test | Bin 60 files changed, 813 insertions(+), 1100 deletions(-) delete mode 100644 src/uu/dd/src/dd_unit_tests/block_unblock_tests.rs delete mode 100644 src/uu/dd/src/dd_unit_tests/conv_sync_tests.rs delete mode 100644 src/uu/dd/src/dd_unit_tests/conversion_tests.rs delete mode 100644 src/uu/dd/src/dd_unit_tests/mod.rs delete mode 100644 src/uu/dd/src/dd_unit_tests/sanity_tests.rs create mode 100644 src/uu/dd/test-resources/FAILED-random-5828891cb1230748e146f34223bbd3b5.test delete mode 100644 src/uu/dd/test-resources/gnudd-conv-atoe-seq-byte-values.spec delete mode 100644 src/uu/dd/test-resources/gnudd-conv-atoibm-seq-byte-values.spec delete mode 100644 src/uu/dd/test-resources/gnudd-conv-ebcdic-ltou-seq-byte-values.spec delete mode 100644 src/uu/dd/test-resources/gnudd-conv-ebcdic-utol-seq-byte-values.spec delete mode 100644 src/uu/dd/test-resources/gnudd-conv-etoa-seq-byte-values.spec delete mode 100644 src/uu/dd/test-resources/gnudd-conv-ibm-ltou-seq-byte-values.spec delete mode 100644 src/uu/dd/test-resources/gnudd-conv-ibm-utol-seq-byte-values.spec delete mode 100644 src/uu/dd/test-resources/gnudd-conv-ltou-seq-byte-values.spec delete mode 100644 src/uu/dd/test-resources/gnudd-conv-utol-seq-byte-values.spec delete mode 100644 src/uu/dd/test-resources/seq-byte-values.test rename {src/uu/dd/test-resources => tests/fixtures/dd}/all-valid-ascii-chars-37eff01866ba3f538421b30b7cbefcac.test (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/dd-block-cbs16-win.test (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/dd-block-cbs16.spec (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/dd-block-cbs16.test (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/dd-block-cbs8.spec (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/dd-block-consecutive-nl-cbs16.spec (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/dd-block-consecutive-nl-win.test (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/dd-block-consecutive-nl.test (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/dd-unblock-cbs16-win.spec (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/dd-unblock-cbs16.spec (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/dd-unblock-cbs16.test (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/dd-unblock-cbs8-win.spec (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/dd-unblock-cbs8.spec (100%) create mode 100644 tests/fixtures/dd/deadbeef-16.spec create mode 100644 tests/fixtures/dd/deadbeef-16.test rename {src/uu/dd/test-resources => tests/fixtures/dd}/deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/gnudd-conv-sync-ibs-1031-obs-521-deadbeef.spec (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/gnudd-conv-sync-ibs-1031-obs-521-random.spec (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/gnudd-conv-sync-ibs-1031-obs-521-zeros.spec (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/gnudd-conv-sync-ibs-521-obs-1031-deadbeef.spec (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/gnudd-conv-sync-ibs-521-obs-1031-random.spec (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/gnudd-conv-sync-ibs-521-obs-1031-zeros.spec (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/gnudd-deadbeef-first-12345.spec (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/gnudd-deadbeef-first-16k.spec (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/gnudd-random-first-32k.spec (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/lcase-ascii.test (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/lcase-ebcdic.spec (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/lcase-ebcdic.test (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/lcase-ibm.spec (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/lcase-ibm.test (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/ones-6ae59e64850377ee5470c854761551ea.test (100%) create mode 100644 tests/fixtures/dd/random-5828891cb1230748e146f34223bbd3b5.test rename {src/uu/dd/test-resources => tests/fixtures/dd}/seq-byte-values-b632a992d3aed5d8d1a59cc5a5a455ba.test (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/seq-byte-values-odd.spec (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/seq-byte-values-odd.test (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/seq-byte-values-swapped.test (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/ucase-ascii.test (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/ucase-ebcdic.spec (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/ucase-ebcdic.test (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/ucase-ibm.spec (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/ucase-ibm.test (100%) rename {src/uu/dd/test-resources => tests/fixtures/dd}/zeros-620f0b67a91f7f74151bc5be745b7110.test (100%) diff --git a/src/uu/dd/src/dd.rs b/src/uu/dd/src/dd.rs index 9d9b426b7..f8f3b7081 100644 --- a/src/uu/dd/src/dd.rs +++ b/src/uu/dd/src/dd.rs @@ -7,9 +7,6 @@ // spell-checker:ignore fname, tname, fpath, specfile, testfile, unspec, ifile, ofile, outfile, fullblock, urand, fileio, atoe, atoibm, behaviour, bmax, bremain, btotal, cflags, creat, ctable, ctty, datastructures, doesnt, etoa, fileout, fname, gnudd, iconvflags, nocache, noctty, noerror, nofollow, nolinks, nonblock, oconvflags, outfile, parseargs, rlen, rmax, rposition, rremain, rsofar, rstat, sigusr, sigval, wlen, wstat seekable -#[cfg(test)] -mod dd_unit_tests; - mod datastructures; use datastructures::*; @@ -1171,3 +1168,454 @@ General-Flags ") ) } + +#[cfg(test)] +mod tests { + + use crate::datastructures::{IConvFlags, IFlags, OConvFlags}; + use crate::ReadStat; + use crate::{block, calc_bsize, unblock, uu_app, Input, Output, OutputTrait}; + + use std::cmp; + use std::fs; + use std::fs::File; + use std::io; + use std::io::{BufReader, Read}; + + struct LazyReader { + src: R, + } + + impl Read for LazyReader { + fn read(&mut self, buf: &mut [u8]) -> io::Result { + let reduced = cmp::max(buf.len() / 2, 1); + self.src.read(&mut buf[..reduced]) + } + } + + const NEWLINE: u8 = b'\n'; + const SPACE: u8 = b' '; + + #[test] + fn block_test_no_nl() { + let mut rs = ReadStat::default(); + let buf = [0u8, 1u8, 2u8, 3u8]; + let res = block(&buf, 4, &mut rs); + + assert_eq!(res, vec![vec![0u8, 1u8, 2u8, 3u8],]); + } + + #[test] + fn block_test_no_nl_short_record() { + let mut rs = ReadStat::default(); + let buf = [0u8, 1u8, 2u8, 3u8]; + let res = block(&buf, 8, &mut rs); + + assert_eq!( + res, + vec![vec![0u8, 1u8, 2u8, 3u8, SPACE, SPACE, SPACE, SPACE],] + ); + } + + #[test] + fn block_test_no_nl_trunc() { + let mut rs = ReadStat::default(); + let buf = [0u8, 1u8, 2u8, 3u8, 4u8]; + let res = block(&buf, 4, &mut rs); + + // Commented section(s) should be truncated and appear for reference only. + assert_eq!(res, vec![vec![0u8, 1u8, 2u8, 3u8 /*, 4u8*/],]); + assert_eq!(rs.records_truncated, 1); + } + + #[test] + fn block_test_nl_gt_cbs_trunc() { + let mut rs = ReadStat::default(); + let buf = [ + 0u8, 1u8, 2u8, 3u8, 4u8, NEWLINE, 0u8, 1u8, 2u8, 3u8, 4u8, NEWLINE, 5u8, 6u8, 7u8, 8u8, + ]; + let res = block(&buf, 4, &mut rs); + + assert_eq!( + res, + vec![ + // Commented section(s) should be truncated and appear for reference only. + vec![0u8, 1u8, 2u8, 3u8], + // vec![4u8, SPACE, SPACE, SPACE], + vec![0u8, 1u8, 2u8, 3u8], + // vec![4u8, SPACE, SPACE, SPACE], + vec![5u8, 6u8, 7u8, 8u8], + ] + ); + assert_eq!(rs.records_truncated, 2); + } + + #[test] + fn block_test_surrounded_nl() { + let mut rs = ReadStat::default(); + let buf = [0u8, 1u8, 2u8, 3u8, NEWLINE, 4u8, 5u8, 6u8, 7u8, 8u8]; + let res = block(&buf, 8, &mut rs); + + assert_eq!( + res, + vec![ + vec![0u8, 1u8, 2u8, 3u8, SPACE, SPACE, SPACE, SPACE], + vec![4u8, 5u8, 6u8, 7u8, 8u8, SPACE, SPACE, SPACE], + ] + ); + } + + #[test] + fn block_test_multiple_nl_same_cbs_block() { + let mut rs = ReadStat::default(); + let buf = [ + 0u8, 1u8, 2u8, 3u8, NEWLINE, 4u8, NEWLINE, 5u8, 6u8, 7u8, 8u8, 9u8, + ]; + let res = block(&buf, 8, &mut rs); + + assert_eq!( + res, + vec![ + vec![0u8, 1u8, 2u8, 3u8, SPACE, SPACE, SPACE, SPACE], + vec![4u8, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE], + vec![5u8, 6u8, 7u8, 8u8, 9u8, SPACE, SPACE, SPACE], + ] + ); + } + + #[test] + fn block_test_multiple_nl_diff_cbs_block() { + let mut rs = ReadStat::default(); + let buf = [ + 0u8, 1u8, 2u8, 3u8, NEWLINE, 4u8, 5u8, 6u8, 7u8, NEWLINE, 8u8, 9u8, + ]; + let res = block(&buf, 8, &mut rs); + + assert_eq!( + res, + vec![ + vec![0u8, 1u8, 2u8, 3u8, SPACE, SPACE, SPACE, SPACE], + vec![4u8, 5u8, 6u8, 7u8, SPACE, SPACE, SPACE, SPACE], + vec![8u8, 9u8, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE], + ] + ); + } + + #[test] + fn block_test_end_nl_diff_cbs_block() { + let mut rs = ReadStat::default(); + let buf = [0u8, 1u8, 2u8, 3u8, NEWLINE]; + let res = block(&buf, 4, &mut rs); + + assert_eq!(res, vec![vec![0u8, 1u8, 2u8, 3u8],]); + } + + #[test] + fn block_test_end_nl_same_cbs_block() { + let mut rs = ReadStat::default(); + let buf = [0u8, 1u8, 2u8, NEWLINE]; + let res = block(&buf, 4, &mut rs); + + assert_eq!(res, vec![vec![0u8, 1u8, 2u8, SPACE]]); + } + + #[test] + fn block_test_double_end_nl() { + let mut rs = ReadStat::default(); + let buf = [0u8, 1u8, 2u8, NEWLINE, NEWLINE]; + let res = block(&buf, 4, &mut rs); + + assert_eq!( + res, + vec![vec![0u8, 1u8, 2u8, SPACE], vec![SPACE, SPACE, SPACE, SPACE],] + ); + } + + #[test] + fn block_test_start_nl() { + let mut rs = ReadStat::default(); + let buf = [NEWLINE, 0u8, 1u8, 2u8, 3u8]; + let res = block(&buf, 4, &mut rs); + + assert_eq!( + res, + vec![vec![SPACE, SPACE, SPACE, SPACE], vec![0u8, 1u8, 2u8, 3u8],] + ); + } + + #[test] + fn block_test_double_surrounded_nl_no_trunc() { + let mut rs = ReadStat::default(); + let buf = [0u8, 1u8, 2u8, 3u8, NEWLINE, NEWLINE, 4u8, 5u8, 6u8, 7u8]; + let res = block(&buf, 8, &mut rs); + + assert_eq!( + res, + vec![ + vec![0u8, 1u8, 2u8, 3u8, SPACE, SPACE, SPACE, SPACE], + vec![SPACE, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE], + vec![4u8, 5u8, 6u8, 7u8, SPACE, SPACE, SPACE, SPACE], + ] + ); + } + + #[test] + fn block_test_double_surrounded_nl_double_trunc() { + let mut rs = ReadStat::default(); + let buf = [ + 0u8, 1u8, 2u8, 3u8, NEWLINE, NEWLINE, 4u8, 5u8, 6u8, 7u8, 8u8, + ]; + let res = block(&buf, 4, &mut rs); + + assert_eq!( + res, + vec![ + // Commented section(s) should be truncated and appear for reference only. + vec![0u8, 1u8, 2u8, 3u8], + vec![SPACE, SPACE, SPACE, SPACE], + vec![4u8, 5u8, 6u8, 7u8 /*, 8u8*/], + ] + ); + assert_eq!(rs.records_truncated, 1); + } + + #[test] + fn unblock_test_full_cbs() { + let buf = [0u8, 1u8, 2u8, 3u8, 4u8, 5u8, 6u8, 7u8]; + let res = unblock(&buf, 8); + + assert_eq!(res, vec![0u8, 1u8, 2u8, 3u8, 4u8, 5u8, 6u8, 7u8, NEWLINE],); + } + + #[test] + fn unblock_test_all_space() { + let buf = [SPACE, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE]; + let res = unblock(&buf, 8); + + assert_eq!(res, vec![NEWLINE],); + } + + #[test] + fn unblock_test_decoy_spaces() { + let buf = [0u8, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE, 7u8]; + let res = unblock(&buf, 8); + + assert_eq!( + res, + vec![0u8, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE, 7u8, NEWLINE], + ); + } + + #[test] + fn unblock_test_strip_single_cbs() { + let buf = [0u8, 1u8, 2u8, 3u8, SPACE, SPACE, SPACE, SPACE]; + let res = unblock(&buf, 8); + + assert_eq!(res, vec![0u8, 1u8, 2u8, 3u8, NEWLINE],); + } + + #[test] + fn unblock_test_strip_multi_cbs() { + let buf = vec![ + vec![0u8, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE], + vec![0u8, 1u8, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE], + vec![0u8, 1u8, 2u8, SPACE, SPACE, SPACE, SPACE, SPACE], + vec![0u8, 1u8, 2u8, 3u8, SPACE, SPACE, SPACE, SPACE], + ] + .into_iter() + .flatten() + .collect::>(); + + let res = unblock(&buf, 8); + + let exp = vec![ + vec![0u8, NEWLINE], + vec![0u8, 1u8, NEWLINE], + vec![0u8, 1u8, 2u8, NEWLINE], + vec![0u8, 1u8, 2u8, 3u8, NEWLINE], + ] + .into_iter() + .flatten() + .collect::>(); + + assert_eq!(res, exp); + } + + #[test] + fn bsize_test_primes() { + let (n, m) = (7901, 7919); + let res = calc_bsize(n, m); + assert!(res % n == 0); + assert!(res % m == 0); + + assert_eq!(res, n * m); + } + + #[test] + fn bsize_test_rel_prime_obs_greater() { + let (n, m) = (7 * 5119, 13 * 5119); + let res = calc_bsize(n, m); + assert!(res % n == 0); + assert!(res % m == 0); + + assert_eq!(res, 7 * 13 * 5119); + } + + #[test] + fn bsize_test_rel_prime_ibs_greater() { + let (n, m) = (13 * 5119, 7 * 5119); + let res = calc_bsize(n, m); + assert!(res % n == 0); + assert!(res % m == 0); + + assert_eq!(res, 7 * 13 * 5119); + } + + #[test] + fn bsize_test_3fac_rel_prime() { + let (n, m) = (11 * 13 * 5119, 7 * 11 * 5119); + let res = calc_bsize(n, m); + assert!(res % n == 0); + assert!(res % m == 0); + + assert_eq!(res, 7 * 11 * 13 * 5119); + } + + #[test] + fn bsize_test_ibs_greater() { + let (n, m) = (512 * 1024, 256 * 1024); + let res = calc_bsize(n, m); + assert!(res % n == 0); + assert!(res % m == 0); + + assert_eq!(res, n); + } + + #[test] + fn bsize_test_obs_greater() { + let (n, m) = (256 * 1024, 512 * 1024); + let res = calc_bsize(n, m); + assert!(res % n == 0); + assert!(res % m == 0); + + assert_eq!(res, m); + } + + #[test] + fn bsize_test_bs_eq() { + let (n, m) = (1024, 1024); + let res = calc_bsize(n, m); + assert!(res % n == 0); + assert!(res % m == 0); + + assert_eq!(res, m); + } + + #[test] + #[should_panic] + fn test_nocreat_causes_failure_when_ofile_doesnt_exist() { + let args = vec![ + String::from("dd"), + String::from("--conv=nocreat"), + String::from("--of=not-a-real.file"), + ]; + + let matches = uu_app().try_get_matches_from(args).unwrap(); + let _ = Output::::new(&matches).unwrap(); + } + + #[test] + fn test_deadbeef_16_delayed() { + let input = Input { + src: LazyReader { + src: File::open("./test-resources/deadbeef-16.test").unwrap(), + }, + non_ascii: false, + ibs: 16, + print_level: None, + count: None, + cflags: IConvFlags { + sync: Some(0), + ..IConvFlags::default() + }, + iflags: IFlags::default(), + }; + + let output = Output { + dst: File::create("./test-resources/FAILED-deadbeef-16-delayed.test").unwrap(), + obs: 32, + cflags: OConvFlags::default(), + }; + + output.dd_out(input).unwrap(); + + let tmp_fname = "./test-resources/FAILED-deadbeef-16-delayed.test"; + let spec = File::open("./test-resources/deadbeef-16.spec").unwrap(); + + let res = File::open(tmp_fname).unwrap(); + // Check test file isn't empty (unless spec file is too) + assert_eq!( + res.metadata().unwrap().len(), + spec.metadata().unwrap().len() + ); + + let spec = BufReader::new(spec); + let res = BufReader::new(res); + + // Check all bytes match + for (b_res, b_spec) in res.bytes().zip(spec.bytes()) { + assert_eq!(b_res.unwrap(), b_spec.unwrap()); + } + + fs::remove_file(tmp_fname).unwrap(); + } + + #[test] + fn test_random_73k_test_lazy_fullblock() { + let input = Input { + src: LazyReader { + src: File::open("./test-resources/random-5828891cb1230748e146f34223bbd3b5.test") + .unwrap(), + }, + non_ascii: false, + ibs: 521, + print_level: None, + count: None, + cflags: IConvFlags::default(), + iflags: IFlags { + fullblock: true, + ..IFlags::default() + }, + }; + + let output = Output { + dst: File::create("./test-resources/FAILED-random_73k_test_lazy_fullblock.test") + .unwrap(), + obs: 1031, + cflags: OConvFlags::default(), + }; + + output.dd_out(input).unwrap(); + + let tmp_fname = "./test-resources/FAILED-random_73k_test_lazy_fullblock.test"; + let spec = + File::open("./test-resources/random-5828891cb1230748e146f34223bbd3b5.test").unwrap(); + + let res = File::open(tmp_fname).unwrap(); + // Check test file isn't empty (unless spec file is too) + assert_eq!( + res.metadata().unwrap().len(), + spec.metadata().unwrap().len() + ); + + let spec = BufReader::new(spec); + let res = BufReader::new(res); + + // Check all bytes match + for (b_res, b_spec) in res.bytes().zip(spec.bytes()) { + assert_eq!(b_res.unwrap(), b_spec.unwrap()); + } + + fs::remove_file(tmp_fname).unwrap(); + } +} diff --git a/src/uu/dd/src/dd_unit_tests/block_unblock_tests.rs b/src/uu/dd/src/dd_unit_tests/block_unblock_tests.rs deleted file mode 100644 index 919ddbb9c..000000000 --- a/src/uu/dd/src/dd_unit_tests/block_unblock_tests.rs +++ /dev/null @@ -1,351 +0,0 @@ -// spell-checker:ignore fname, tname, fpath, specfile, testfile, unspec, ifile, ofile, outfile, fullblock, urand, fileio, atoe, atoibm, behaviour, bmax, bremain, btotal, cflags, creat, ctable, ctty, datastructures, doesnt, etoa, fileout, fname, gnudd, iconvflags, nocache, noctty, noerror, nofollow, nolinks, nonblock, oconvflags, outfile, parseargs, rlen, rmax, rposition, rremain, rsofar, rstat, sigusr, sigval, wlen, wstat - -use super::*; - -#[cfg(unix)] -macro_rules! make_block_test ( - ( $test_id:ident, $test_name:expr, $src:expr, $block:expr, $spec:expr ) => - { - make_spec_test!($test_id, - $test_name, - Input { - src: $src, - non_ascii: false, - ibs: 512, - print_level: None, - count: None, - cflags: IConvFlags { - block: $block, - ..IConvFlags::default() - }, - iflags: IFlags::default(), - }, - Output { - dst: File::create(format!("./test-resources/FAILED-{}.test", $test_name)).unwrap(), - obs: 512, - cflags: OConvFlags::default(), - }, - $spec, - format!("./test-resources/FAILED-{}.test", $test_name) - ); - }; -); - -#[cfg(unix)] -macro_rules! make_unblock_test ( - ( $test_id:ident, $test_name:expr, $src:expr, $unblock:expr, $spec:expr ) => - { - make_spec_test!($test_id, - $test_name, - Input { - src: $src, - non_ascii: false, - ibs: 512, - print_level: None, - count: None, - cflags: IConvFlags { - unblock: $unblock, - ..IConvFlags::default() - }, - iflags: IFlags::default(), - }, - Output { - dst: File::create(format!("./test-resources/FAILED-{}.test", $test_name)).unwrap(), - obs: 512, - cflags: OConvFlags::default(), - }, - $spec, - format!("./test-resources/FAILED-{}.test", $test_name) - ); - }; -); - -#[test] -fn block_test_no_nl() { - let mut rs = ReadStat::default(); - let buf = [0u8, 1u8, 2u8, 3u8]; - let res = block(&buf, 4, &mut rs); - - assert_eq!(res, vec![vec![0u8, 1u8, 2u8, 3u8],]); -} - -#[test] -fn block_test_no_nl_short_record() { - let mut rs = ReadStat::default(); - let buf = [0u8, 1u8, 2u8, 3u8]; - let res = block(&buf, 8, &mut rs); - - assert_eq!( - res, - vec![vec![0u8, 1u8, 2u8, 3u8, SPACE, SPACE, SPACE, SPACE],] - ); -} - -#[test] -fn block_test_no_nl_trunc() { - let mut rs = ReadStat::default(); - let buf = [0u8, 1u8, 2u8, 3u8, 4u8]; - let res = block(&buf, 4, &mut rs); - - // Commented section(s) should be truncated and appear for reference only. - assert_eq!(res, vec![vec![0u8, 1u8, 2u8, 3u8 /*, 4u8*/],]); - assert_eq!(rs.records_truncated, 1); -} - -#[test] -fn block_test_nl_gt_cbs_trunc() { - let mut rs = ReadStat::default(); - let buf = [ - 0u8, 1u8, 2u8, 3u8, 4u8, NEWLINE, 0u8, 1u8, 2u8, 3u8, 4u8, NEWLINE, 5u8, 6u8, 7u8, 8u8, - ]; - let res = block(&buf, 4, &mut rs); - - assert_eq!( - res, - vec![ - // Commented section(s) should be truncated and appear for reference only. - vec![0u8, 1u8, 2u8, 3u8], - // vec![4u8, SPACE, SPACE, SPACE], - vec![0u8, 1u8, 2u8, 3u8], - // vec![4u8, SPACE, SPACE, SPACE], - vec![5u8, 6u8, 7u8, 8u8], - ] - ); - assert_eq!(rs.records_truncated, 2); -} - -#[test] -fn block_test_surrounded_nl() { - let mut rs = ReadStat::default(); - let buf = [0u8, 1u8, 2u8, 3u8, NEWLINE, 4u8, 5u8, 6u8, 7u8, 8u8]; - let res = block(&buf, 8, &mut rs); - - assert_eq!( - res, - vec![ - vec![0u8, 1u8, 2u8, 3u8, SPACE, SPACE, SPACE, SPACE], - vec![4u8, 5u8, 6u8, 7u8, 8u8, SPACE, SPACE, SPACE], - ] - ); -} - -#[test] -fn block_test_multiple_nl_same_cbs_block() { - let mut rs = ReadStat::default(); - let buf = [ - 0u8, 1u8, 2u8, 3u8, NEWLINE, 4u8, NEWLINE, 5u8, 6u8, 7u8, 8u8, 9u8, - ]; - let res = block(&buf, 8, &mut rs); - - assert_eq!( - res, - vec![ - vec![0u8, 1u8, 2u8, 3u8, SPACE, SPACE, SPACE, SPACE], - vec![4u8, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE], - vec![5u8, 6u8, 7u8, 8u8, 9u8, SPACE, SPACE, SPACE], - ] - ); -} - -#[test] -fn block_test_multiple_nl_diff_cbs_block() { - let mut rs = ReadStat::default(); - let buf = [ - 0u8, 1u8, 2u8, 3u8, NEWLINE, 4u8, 5u8, 6u8, 7u8, NEWLINE, 8u8, 9u8, - ]; - let res = block(&buf, 8, &mut rs); - - assert_eq!( - res, - vec![ - vec![0u8, 1u8, 2u8, 3u8, SPACE, SPACE, SPACE, SPACE], - vec![4u8, 5u8, 6u8, 7u8, SPACE, SPACE, SPACE, SPACE], - vec![8u8, 9u8, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE], - ] - ); -} - -#[test] -fn block_test_end_nl_diff_cbs_block() { - let mut rs = ReadStat::default(); - let buf = [0u8, 1u8, 2u8, 3u8, NEWLINE]; - let res = block(&buf, 4, &mut rs); - - assert_eq!(res, vec![vec![0u8, 1u8, 2u8, 3u8],]); -} - -#[test] -fn block_test_end_nl_same_cbs_block() { - let mut rs = ReadStat::default(); - let buf = [0u8, 1u8, 2u8, NEWLINE]; - let res = block(&buf, 4, &mut rs); - - assert_eq!(res, vec![vec![0u8, 1u8, 2u8, SPACE]]); -} - -#[test] -fn block_test_double_end_nl() { - let mut rs = ReadStat::default(); - let buf = [0u8, 1u8, 2u8, NEWLINE, NEWLINE]; - let res = block(&buf, 4, &mut rs); - - assert_eq!( - res, - vec![vec![0u8, 1u8, 2u8, SPACE], vec![SPACE, SPACE, SPACE, SPACE],] - ); -} - -#[test] -fn block_test_start_nl() { - let mut rs = ReadStat::default(); - let buf = [NEWLINE, 0u8, 1u8, 2u8, 3u8]; - let res = block(&buf, 4, &mut rs); - - assert_eq!( - res, - vec![vec![SPACE, SPACE, SPACE, SPACE], vec![0u8, 1u8, 2u8, 3u8],] - ); -} - -#[test] -fn block_test_double_surrounded_nl_no_trunc() { - let mut rs = ReadStat::default(); - let buf = [0u8, 1u8, 2u8, 3u8, NEWLINE, NEWLINE, 4u8, 5u8, 6u8, 7u8]; - let res = block(&buf, 8, &mut rs); - - assert_eq!( - res, - vec![ - vec![0u8, 1u8, 2u8, 3u8, SPACE, SPACE, SPACE, SPACE], - vec![SPACE, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE], - vec![4u8, 5u8, 6u8, 7u8, SPACE, SPACE, SPACE, SPACE], - ] - ); -} - -#[test] -fn block_test_double_surrounded_nl_double_trunc() { - let mut rs = ReadStat::default(); - let buf = [ - 0u8, 1u8, 2u8, 3u8, NEWLINE, NEWLINE, 4u8, 5u8, 6u8, 7u8, 8u8, - ]; - let res = block(&buf, 4, &mut rs); - - assert_eq!( - res, - vec![ - // Commented section(s) should be truncated and appear for reference only. - vec![0u8, 1u8, 2u8, 3u8], - vec![SPACE, SPACE, SPACE, SPACE], - vec![4u8, 5u8, 6u8, 7u8 /*, 8u8*/], - ] - ); - assert_eq!(rs.records_truncated, 1); -} - -#[cfg(unix)] -make_block_test!( - block_cbs16, - "block-cbs-16", - File::open("./test-resources/dd-block-cbs16.test").unwrap(), - Some(16), - File::open("./test-resources/dd-block-cbs16.spec").unwrap() -); - -#[cfg(unix)] -make_block_test!( - block_cbs16_as_cbs8, - "block-cbs-16-as-cbs8", - File::open("./test-resources/dd-block-cbs16.test").unwrap(), - Some(8), - File::open("./test-resources/dd-block-cbs8.spec").unwrap() -); - -#[cfg(unix)] -make_block_test!( - block_consecutive_nl, - "block-consecutive-nl", - File::open("./test-resources/dd-block-consecutive-nl.test").unwrap(), - Some(16), - File::open("./test-resources/dd-block-consecutive-nl-cbs16.spec").unwrap() -); - -#[test] -fn unblock_test_full_cbs() { - let buf = [0u8, 1u8, 2u8, 3u8, 4u8, 5u8, 6u8, 7u8]; - let res = unblock(&buf, 8); - - assert_eq!(res, vec![0u8, 1u8, 2u8, 3u8, 4u8, 5u8, 6u8, 7u8, NEWLINE],); -} - -#[test] -fn unblock_test_all_space() { - let buf = [SPACE, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE]; - let res = unblock(&buf, 8); - - assert_eq!(res, vec![NEWLINE],); -} - -#[test] -fn unblock_test_decoy_spaces() { - let buf = [0u8, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE, 7u8]; - let res = unblock(&buf, 8); - - assert_eq!( - res, - vec![0u8, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE, 7u8, NEWLINE], - ); -} - -#[test] -fn unblock_test_strip_single_cbs() { - let buf = [0u8, 1u8, 2u8, 3u8, SPACE, SPACE, SPACE, SPACE]; - let res = unblock(&buf, 8); - - assert_eq!(res, vec![0u8, 1u8, 2u8, 3u8, NEWLINE],); -} - -#[test] -fn unblock_test_strip_multi_cbs() { - let buf = vec![ - vec![0u8, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE], - vec![0u8, 1u8, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE], - vec![0u8, 1u8, 2u8, SPACE, SPACE, SPACE, SPACE, SPACE], - vec![0u8, 1u8, 2u8, 3u8, SPACE, SPACE, SPACE, SPACE], - ] - .into_iter() - .flatten() - .collect::>(); - - let res = unblock(&buf, 8); - - let exp = vec![ - vec![0u8, NEWLINE], - vec![0u8, 1u8, NEWLINE], - vec![0u8, 1u8, 2u8, NEWLINE], - vec![0u8, 1u8, 2u8, 3u8, NEWLINE], - ] - .into_iter() - .flatten() - .collect::>(); - - assert_eq!(res, exp); -} - -#[cfg(unix)] -make_unblock_test!( - unblock_multi_16, - "unblock-multi-16", - File::open("./test-resources/dd-unblock-cbs16.test").unwrap(), - Some(16), - File::open("./test-resources/dd-unblock-cbs16.spec").unwrap() -); - -#[cfg(unix)] -make_unblock_test!( - unblock_multi_16_as_8, - "unblock-multi-16-as-8", - File::open("./test-resources/dd-unblock-cbs16.test").unwrap(), - Some(8), - File::open("./test-resources/dd-unblock-cbs8.spec").unwrap() -); diff --git a/src/uu/dd/src/dd_unit_tests/conv_sync_tests.rs b/src/uu/dd/src/dd_unit_tests/conv_sync_tests.rs deleted file mode 100644 index 904a97cf5..000000000 --- a/src/uu/dd/src/dd_unit_tests/conv_sync_tests.rs +++ /dev/null @@ -1,106 +0,0 @@ -// spell-checker:ignore fname, tname, fpath, specfile, testfile, unspec, ifile, ofile, outfile, fullblock, urand, fileio, atoe, atoibm, behaviour, bmax, bremain, btotal, cflags, creat, ctable, ctty, datastructures, doesnt, etoa, fileout, fname, gnudd, iconvflags, nocache, noctty, noerror, nofollow, nolinks, nonblock, oconvflags, outfile, parseargs, rlen, rmax, rposition, rremain, rsofar, rstat, sigusr, sigval, wlen, wstat - -use super::*; - -macro_rules! make_sync_test ( - ( $test_id:ident, $test_name:expr, $src:expr, $sync:expr, $ibs:expr, $obs:expr, $spec:expr ) => - { - make_spec_test!($test_id, - $test_name, - Input { - src: $src, - non_ascii: false, - ibs: $ibs, - print_level: None, - count: None, - cflags: IConvFlags { - sync: $sync, - ..IConvFlags::default() - }, - iflags: IFlags::default(), - }, - Output { - dst: File::create(format!("./test-resources/FAILED-{}.test", $test_name)).unwrap(), - obs: $obs, - cflags: OConvFlags::default(), - }, - $spec, - format!("./test-resources/FAILED-{}.test", $test_name) - ); - }; -); - -// Zeros -make_sync_test!( - zeros_4k_conv_sync_obs_gt_ibs, - "zeros_4k_conv_sync_obs_gt_ibs", - File::open("./test-resources/zeros-620f0b67a91f7f74151bc5be745b7110.test").unwrap(), - Some(0u8), - 521, - 1031, - File::open("./test-resources/gnudd-conv-sync-ibs-521-obs-1031-zeros.spec").unwrap() -); - -make_sync_test!( - zeros_4k_conv_sync_ibs_gt_obs, - "zeros_4k_conv_sync_ibs_gt_obs", - File::open("./test-resources/zeros-620f0b67a91f7f74151bc5be745b7110.test").unwrap(), - Some(0u8), - 1031, - 521, - File::open("./test-resources/gnudd-conv-sync-ibs-1031-obs-521-zeros.spec").unwrap() -); - -// Deadbeef -make_sync_test!( - deadbeef_32k_conv_sync_obs_gt_ibs, - "deadbeef_32k_conv_sync_obs_gt_ibs", - File::open("./test-resources/deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test").unwrap(), - Some(0u8), - 521, - 1031, - File::open("./test-resources/gnudd-conv-sync-ibs-521-obs-1031-deadbeef.spec").unwrap() -); - -make_sync_test!( - deadbeef_32k_conv_sync_ibs_gt_obs, - "deadbeef_32k_conv_sync_ibs_gt_obs", - File::open("./test-resources/deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test").unwrap(), - Some(0u8), - 1031, - 521, - File::open("./test-resources/gnudd-conv-sync-ibs-1031-obs-521-deadbeef.spec").unwrap() -); - -// Random -make_sync_test!( - random_73k_test_bs_prime_obs_gt_ibs_sync, - "random-73k-test-bs-prime-obs-gt-ibs-sync", - File::open("./test-resources/random-5828891cb1230748e146f34223bbd3b5.test").unwrap(), - Some(0u8), - 521, - 1031, - File::open("./test-resources/gnudd-conv-sync-ibs-521-obs-1031-random.spec").unwrap() -); - -make_sync_test!( - random_73k_test_bs_prime_ibs_gt_obs_sync, - "random-73k-test-bs-prime-ibs-gt-obs-sync", - File::open("./test-resources/random-5828891cb1230748e146f34223bbd3b5.test").unwrap(), - Some(0u8), - 1031, - 521, - File::open("./test-resources/gnudd-conv-sync-ibs-1031-obs-521-random.spec").unwrap() -); - -make_sync_test!( - deadbeef_16_delayed, - "deadbeef-16-delayed", - LazyReader { - src: File::open("./test-resources/deadbeef-16.test").unwrap() - }, - Some(0u8), - 16, - 32, - File::open("./test-resources/deadbeef-16.spec").unwrap() -); diff --git a/src/uu/dd/src/dd_unit_tests/conversion_tests.rs b/src/uu/dd/src/dd_unit_tests/conversion_tests.rs deleted file mode 100644 index 9255a1a89..000000000 --- a/src/uu/dd/src/dd_unit_tests/conversion_tests.rs +++ /dev/null @@ -1,233 +0,0 @@ -// spell-checker:ignore fname, tname, fpath, specfile, testfile, unspec, ifile, ofile, outfile, fullblock, urand, fileio, atoe, atoibm, behaviour, bmax, bremain, btotal, cflags, creat, ctable, ctty, datastructures, doesnt, etoa, fileout, fname, gnudd, iconvflags, nocache, noctty, noerror, nofollow, nolinks, nonblock, oconvflags, outfile, parseargs, rlen, rmax, rposition, rremain, rsofar, rstat, sigusr, sigval, wlen, wstat - -use super::*; - -macro_rules! make_conv_test ( - ( $test_id:ident, $test_name:expr, $src:expr, $ctable:expr, $spec:expr ) => - { - make_spec_test!($test_id, - $test_name, - Input { - src: $src, - non_ascii: false, - ibs: 512, - print_level: None, - count: None, - cflags: icf!($ctable), - iflags: IFlags::default(), - }, - Output { - dst: File::create(format!("./test-resources/FAILED-{}.test", $test_name)).unwrap(), - obs: 512, - cflags: OConvFlags::default(), - }, - $spec, - format!("./test-resources/FAILED-{}.test", $test_name) - ); - }; -); - -macro_rules! make_icf_test ( - ( $test_id:ident, $test_name:expr, $src:expr, $icf:expr, $spec:expr ) => - { - make_spec_test!($test_id, - $test_name, - Input { - src: $src, - non_ascii: false, - ibs: 512, - print_level: None, - count: None, - cflags: $icf, - iflags: IFlags::default(), - }, - Output { - dst: File::create(format!("./test-resources/FAILED-{}.test", $test_name)).unwrap(), - obs: 512, - cflags: OConvFlags::default(), - }, - $spec, - format!("./test-resources/FAILED-{}.test", $test_name) - ); - }; -); - -make_conv_test!( - atoe_conv_spec_test, - "atoe-conv-spec-test", - File::open("./test-resources/seq-byte-values-b632a992d3aed5d8d1a59cc5a5a455ba.test").unwrap(), - Some(&ASCII_TO_EBCDIC), - File::open("./test-resources/gnudd-conv-atoe-seq-byte-values.spec").unwrap() -); - -make_conv_test!( - etoa_conv_spec_test, - "etoa-conv-spec-test", - File::open("./test-resources/seq-byte-values-b632a992d3aed5d8d1a59cc5a5a455ba.test").unwrap(), - Some(&EBCDIC_TO_ASCII), - File::open("./test-resources/gnudd-conv-etoa-seq-byte-values.spec").unwrap() -); - -make_conv_test!( - atoibm_conv_spec_test, - "atoibm-conv-spec-test", - File::open("./test-resources/seq-byte-values-b632a992d3aed5d8d1a59cc5a5a455ba.test").unwrap(), - Some(&ASCII_TO_IBM), - File::open("./test-resources/gnudd-conv-atoibm-seq-byte-values.spec").unwrap() -); - -make_conv_test!( - lcase_ascii_to_ucase_ascii, - "lcase_ascii_to_ucase_ascii", - File::open("./test-resources/lcase-ascii.test").unwrap(), - Some(&ASCII_LCASE_TO_UCASE), - File::open("./test-resources/ucase-ascii.test").unwrap() -); - -make_conv_test!( - ucase_ascii_to_lcase_ascii, - "ucase_ascii_to_lcase_ascii", - File::open("./test-resources/ucase-ascii.test").unwrap(), - Some(&ASCII_UCASE_TO_LCASE), - File::open("./test-resources/lcase-ascii.test").unwrap() -); - -make_conv_test!( - // conv=ebcdic,ucase - atoe_and_ucase_conv_spec_test, - "atoe-and-ucase-conv-spec-test", - File::open("./test-resources/seq-byte-values-b632a992d3aed5d8d1a59cc5a5a455ba.test").unwrap(), - Some(&ASCII_TO_EBCDIC_LCASE_TO_UCASE), - File::open("./test-resources/ucase-ebcdic.test").unwrap() -); - -make_conv_test!( - // conv=ebcdic,lcase - atoe_and_lcase_conv_spec_test, - "atoe-and-lcase-conv-spec-test", - File::open("./test-resources/seq-byte-values-b632a992d3aed5d8d1a59cc5a5a455ba.test").unwrap(), - Some(&ASCII_TO_EBCDIC_UCASE_TO_LCASE), - File::open("./test-resources/lcase-ebcdic.test").unwrap() -); - -make_conv_test!( - // conv=ibm,ucase - atoibm_and_ucase_conv_spec_test, - "atoibm-and-ucase-conv-spec-test", - File::open("./test-resources/seq-byte-values-b632a992d3aed5d8d1a59cc5a5a455ba.test").unwrap(), - Some(&ASCII_TO_IBM_UCASE_TO_LCASE), - File::open("./test-resources/lcase-ibm.test").unwrap() -); - -make_conv_test!( - // conv=ibm,lcase - atoibm_and_lcase_conv_spec_test, - "atoibm-and-lcase-conv-spec-test", - File::open("./test-resources/seq-byte-values-b632a992d3aed5d8d1a59cc5a5a455ba.test").unwrap(), - Some(&ASCII_TO_IBM_LCASE_TO_UCASE), - File::open("./test-resources/ucase-ibm.test").unwrap() -); - -#[test] -fn all_valid_ascii_ebcdic_ascii_roundtrip_conv_test() { - // ASCII->EBCDIC - let test_name = "all-valid-ascii-to-ebcdic"; - let tmp_fname_ae = format!("./test-resources/FAILED-{}.test", test_name); - - let i = Input { - src: File::open( - "./test-resources/all-valid-ascii-chars-37eff01866ba3f538421b30b7cbefcac.test", - ) - .unwrap(), - non_ascii: false, - ibs: 128, - print_level: None, - count: None, - cflags: icf!(Some(&ASCII_TO_EBCDIC)), - iflags: IFlags::default(), - }; - - let o = Output { - dst: File::create(&tmp_fname_ae).unwrap(), - obs: 1024, - cflags: OConvFlags::default(), - }; - - o.dd_out(i).unwrap(); - - // EBCDIC->ASCII - let test_name = "all-valid-ebcdic-to-ascii"; - let tmp_fname_ea = format!("./test-resources/FAILED-{}.test", test_name); - - let i = Input { - src: File::open(&tmp_fname_ae).unwrap(), - non_ascii: false, - ibs: 256, - print_level: None, - count: None, - cflags: icf!(Some(&EBCDIC_TO_ASCII)), - iflags: IFlags::default(), - }; - - let o = Output { - dst: File::create(&tmp_fname_ea).unwrap(), - obs: 1024, - cflags: OConvFlags::default(), - }; - - o.dd_out(i).unwrap(); - - // Final Comparison - let res = File::open(&tmp_fname_ea).unwrap(); - let spec = - File::open("./test-resources/all-valid-ascii-chars-37eff01866ba3f538421b30b7cbefcac.test") - .unwrap(); - - assert_eq!( - res.metadata().unwrap().len(), - spec.metadata().unwrap().len() - ); - - let res = BufReader::new(res); - let spec = BufReader::new(spec); - - let res = BufReader::new(res); - - // Check all bytes match - for (b_res, b_spec) in res.bytes().zip(spec.bytes()) { - assert_eq!(b_res.unwrap(), b_spec.unwrap()); - } - - fs::remove_file(&tmp_fname_ae).unwrap(); - fs::remove_file(&tmp_fname_ea).unwrap(); -} - -make_icf_test!( - swab_256_test, - "swab-256", - File::open("./test-resources/seq-byte-values.test").unwrap(), - IConvFlags { - ctable: None, - block: None, - unblock: None, - swab: true, - sync: None, - noerror: false, - }, - File::open("./test-resources/seq-byte-values-swapped.test").unwrap() -); - -make_icf_test!( - swab_257_test, - "swab-257", - File::open("./test-resources/seq-byte-values-odd.test").unwrap(), - IConvFlags { - ctable: None, - block: None, - unblock: None, - swab: true, - sync: None, - noerror: false, - }, - File::open("./test-resources/seq-byte-values-odd.spec").unwrap() -); diff --git a/src/uu/dd/src/dd_unit_tests/mod.rs b/src/uu/dd/src/dd_unit_tests/mod.rs deleted file mode 100644 index 9641c9bba..000000000 --- a/src/uu/dd/src/dd_unit_tests/mod.rs +++ /dev/null @@ -1,89 +0,0 @@ -// spell-checker:ignore fname, tname, fpath, specfile, testfile, unspec, ifile, ofile, outfile, fullblock, urand, fileio, atoe, atoibm, behaviour, bmax, bremain, btotal, cflags, creat, ctable, ctty, datastructures, doesnt, etoa, fileout, fname, gnudd, iconvflags, nocache, noctty, noerror, nofollow, nolinks, nonblock, oconvflags, outfile, parseargs, rlen, rmax, rposition, rremain, rsofar, rstat, sigusr, sigval, wlen, wstat - -use super::*; - -mod block_unblock_tests; -mod conv_sync_tests; -mod conversion_tests; -mod sanity_tests; - -use std::fs; -use std::io::prelude::*; -use std::io::BufReader; - -struct LazyReader { - src: R, -} - -impl Read for LazyReader { - fn read(&mut self, buf: &mut [u8]) -> io::Result { - let reduced = cmp::max(buf.len() / 2, 1); - self.src.read(&mut buf[..reduced]) - } -} - -#[macro_export] -macro_rules! icf ( - ( $ctable:expr ) => - { - IConvFlags { - ctable: $ctable, - ..IConvFlags::default() - } - }; -); - -#[macro_export] -macro_rules! make_spec_test ( - ( $test_id:ident, $test_name:expr, $src:expr ) => - { - // When spec not given, output should match input - make_spec_test!($test_id, $test_name, $src, $src); - }; - ( $test_id:ident, $test_name:expr, $src:expr, $spec:expr ) => - { - make_spec_test!($test_id, - $test_name, - Input { - src: $src, - non_ascii: false, - ibs: 512, - print_level: None, - count: None, - cflags: IConvFlags::default(), - iflags: IFlags::default(), - }, - Output { - dst: File::create(format!("./test-resources/FAILED-{}.test", $test_name)).unwrap(), - obs: 512, - cflags: OConvFlags::default(), - }, - $spec, - format!("./test-resources/FAILED-{}.test", $test_name) - ); - }; - ( $test_id:ident, $test_name:expr, $i:expr, $o:expr, $spec:expr, $tmp_fname:expr ) => - { - #[test] - fn $test_id() - { - $o.dd_out($i).unwrap(); - - let res = File::open($tmp_fname).unwrap(); - // Check test file isn't empty (unless spec file is too) - assert_eq!(res.metadata().unwrap().len(), $spec.metadata().unwrap().len()); - - let spec = BufReader::new($spec); - let res = BufReader::new(res); - - // Check all bytes match - for (b_res, b_spec) in res.bytes().zip(spec.bytes()) - { - assert_eq!(b_res.unwrap(), - b_spec.unwrap()); - } - - fs::remove_file($tmp_fname).unwrap(); - } - }; -); diff --git a/src/uu/dd/src/dd_unit_tests/sanity_tests.rs b/src/uu/dd/src/dd_unit_tests/sanity_tests.rs deleted file mode 100644 index f58d68c48..000000000 --- a/src/uu/dd/src/dd_unit_tests/sanity_tests.rs +++ /dev/null @@ -1,316 +0,0 @@ -// spell-checker:ignore fname, tname, fpath, specfile, testfile, unspec, ifile, ofile, outfile, fullblock, urand, fileio, atoe, atoibm, behaviour, bmax, bremain, btotal, cflags, creat, ctable, ctty, datastructures, doesnt, etoa, fileout, fname, gnudd, iconvflags, nocache, noctty, noerror, nofollow, nolinks, nonblock, oconvflags, outfile, parseargs, rlen, rmax, rposition, rremain, rsofar, rstat, sigusr, sigval, wlen, wstat - -use super::*; - -const DST_PLACEHOLDER: Vec = Vec::new(); - -macro_rules! make_io_test ( - ( $test_id:ident, $test_name:expr, $i:expr, $o:expr, $spec:expr ) => - { - make_spec_test!($test_id, - $test_name, - $i, - Output { - dst: File::create(format!("./test-resources/FAILED-{}.test", $test_name)).unwrap(), - obs: $o.obs, - cflags: $o.cflags, - }, - $spec, - format!("./test-resources/FAILED-{}.test", $test_name) - ); - }; -); - -make_spec_test!( - zeros_4k_test, - "zeros-4k", - File::open("./test-resources/zeros-620f0b67a91f7f74151bc5be745b7110.test").unwrap() -); - -make_spec_test!( - ones_4k_test, - "ones-4k", - File::open("./test-resources/ones-6ae59e64850377ee5470c854761551ea.test").unwrap() -); - -make_spec_test!( - deadbeef_32k_test, - "deadbeef-32k", - File::open("./test-resources/deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test").unwrap() -); - -make_spec_test!( - random_73k_test, - "random-73k", - File::open("./test-resources/random-5828891cb1230748e146f34223bbd3b5.test").unwrap() -); - -make_io_test!( - random_73k_test_not_a_multiple_obs_gt_ibs, - "random-73k-not-a-multiple-obs-gt-ibs", - Input { - src: File::open("./test-resources/random-5828891cb1230748e146f34223bbd3b5.test").unwrap(), - non_ascii: false, - ibs: 521, - print_level: None, - count: None, - cflags: IConvFlags::default(), - iflags: IFlags::default(), - }, - Output { - dst: DST_PLACEHOLDER, - obs: 1031, - cflags: OConvFlags::default(), - }, - File::open("./test-resources/random-5828891cb1230748e146f34223bbd3b5.test").unwrap() -); - -make_io_test!( - random_73k_test_obs_lt_not_a_multiple_ibs, - "random-73k-obs-lt-not-a-multiple-ibs", - Input { - src: File::open("./test-resources/random-5828891cb1230748e146f34223bbd3b5.test").unwrap(), - non_ascii: false, - ibs: 1031, - print_level: None, - count: None, - cflags: IConvFlags::default(), - iflags: IFlags::default(), - }, - Output { - dst: DST_PLACEHOLDER, - obs: 521, - cflags: OConvFlags::default(), - }, - File::open("./test-resources/random-5828891cb1230748e146f34223bbd3b5.test").unwrap() -); - -make_io_test!( - deadbeef_all_32k_test_count_reads, - "deadbeef_all_32k_test_count_reads", - Input { - src: File::open("./test-resources/deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test").unwrap(), - non_ascii: false, - ibs: 1024, - print_level: None, - count: Some(CountType::Reads(32)), - cflags: IConvFlags::default(), - iflags: IFlags::default(), - }, - Output { - dst: DST_PLACEHOLDER, - obs: 1024, - cflags: OConvFlags::default(), - }, - File::open("./test-resources/deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test").unwrap() -); - -make_io_test!( - deadbeef_all_32k_test_count_bytes, - "deadbeef_all_32k_test_count_bytes", - Input { - src: File::open("./test-resources/deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test").unwrap(), - non_ascii: false, - ibs: 531, - print_level: None, - count: Some(CountType::Bytes(32 * 1024)), - cflags: IConvFlags::default(), - iflags: IFlags::default(), - }, - Output { - dst: DST_PLACEHOLDER, - obs: 1031, - cflags: OConvFlags::default(), - }, - File::open("./test-resources/deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test").unwrap() -); - -make_io_test!( - deadbeef_32k_to_16k_test_count_reads, - "deadbeef_32k_test_count_reads", - Input { - src: File::open("./test-resources/deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test").unwrap(), - non_ascii: false, - ibs: 1024, - print_level: None, - count: Some(CountType::Reads(16)), - cflags: IConvFlags::default(), - iflags: IFlags::default(), - }, - Output { - dst: DST_PLACEHOLDER, - obs: 1031, - cflags: OConvFlags::default(), - }, - File::open("./test-resources/gnudd-deadbeef-first-16k.spec").unwrap() -); - -make_io_test!( - deadbeef_32k_to_12345_test_count_bytes, - "deadbeef_32k_to_12345_test_count_bytes", - Input { - src: File::open("./test-resources/deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test").unwrap(), - non_ascii: false, - ibs: 531, - print_level: None, - count: Some(CountType::Bytes(12345)), - cflags: IConvFlags::default(), - iflags: IFlags::default(), - }, - Output { - dst: DST_PLACEHOLDER, - obs: 1031, - cflags: OConvFlags::default(), - }, - File::open("./test-resources/gnudd-deadbeef-first-12345.spec").unwrap() -); - -make_io_test!( - random_73k_test_count_reads, - "random-73k-test-count-reads", - Input { - src: File::open("./test-resources/random-5828891cb1230748e146f34223bbd3b5.test").unwrap(), - non_ascii: false, - ibs: 1024, - print_level: None, - count: Some(CountType::Reads(32)), - cflags: IConvFlags::default(), - iflags: IFlags::default(), - }, - Output { - dst: DST_PLACEHOLDER, - obs: 1024, - cflags: OConvFlags::default(), - }, - File::open("./test-resources/gnudd-random-first-32k.spec").unwrap() -); - -make_io_test!( - random_73k_test_count_bytes, - "random-73k-test-count-bytes", - Input { - src: File::open("./test-resources/random-5828891cb1230748e146f34223bbd3b5.test").unwrap(), - non_ascii: false, - ibs: 521, - print_level: None, - count: Some(CountType::Bytes(32 * 1024)), - cflags: IConvFlags::default(), - iflags: IFlags::default(), - }, - Output { - dst: DST_PLACEHOLDER, - obs: 1031, - cflags: OConvFlags::default(), - }, - File::open("./test-resources/gnudd-random-first-32k.spec").unwrap() -); - -make_io_test!( - random_73k_test_lazy_fullblock, - "random-73k-test-lazy-fullblock", - Input { - src: LazyReader { - src: File::open("./test-resources/random-5828891cb1230748e146f34223bbd3b5.test") - .unwrap() - }, - non_ascii: false, - ibs: 521, - print_level: None, - count: None, - cflags: IConvFlags::default(), - iflags: IFlags { - fullblock: true, - ..IFlags::default() - }, - }, - Output { - dst: DST_PLACEHOLDER, - obs: 1031, - cflags: OConvFlags::default(), - }, - File::open("./test-resources/random-5828891cb1230748e146f34223bbd3b5.test").unwrap() -); - -// Test internal buffer size fn -#[test] -fn bsize_test_primes() { - let (n, m) = (7901, 7919); - let res = calc_bsize(n, m); - assert!(res % n == 0); - assert!(res % m == 0); - - assert_eq!(res, n * m); -} - -#[test] -fn bsize_test_rel_prime_obs_greater() { - let (n, m) = (7 * 5119, 13 * 5119); - let res = calc_bsize(n, m); - assert!(res % n == 0); - assert!(res % m == 0); - - assert_eq!(res, 7 * 13 * 5119); -} - -#[test] -fn bsize_test_rel_prime_ibs_greater() { - let (n, m) = (13 * 5119, 7 * 5119); - let res = calc_bsize(n, m); - assert!(res % n == 0); - assert!(res % m == 0); - - assert_eq!(res, 7 * 13 * 5119); -} - -#[test] -fn bsize_test_3fac_rel_prime() { - let (n, m) = (11 * 13 * 5119, 7 * 11 * 5119); - let res = calc_bsize(n, m); - assert!(res % n == 0); - assert!(res % m == 0); - - assert_eq!(res, 7 * 11 * 13 * 5119); -} - -#[test] -fn bsize_test_ibs_greater() { - let (n, m) = (512 * 1024, 256 * 1024); - let res = calc_bsize(n, m); - assert!(res % n == 0); - assert!(res % m == 0); - - assert_eq!(res, n); -} - -#[test] -fn bsize_test_obs_greater() { - let (n, m) = (256 * 1024, 512 * 1024); - let res = calc_bsize(n, m); - assert!(res % n == 0); - assert!(res % m == 0); - - assert_eq!(res, m); -} - -#[test] -fn bsize_test_bs_eq() { - let (n, m) = (1024, 1024); - let res = calc_bsize(n, m); - assert!(res % n == 0); - assert!(res % m == 0); - - assert_eq!(res, m); -} - -#[test] -#[should_panic] -fn test_nocreat_causes_failure_when_ofile_doesnt_exist() { - let args = vec![ - String::from("dd"), - String::from("--conv=nocreat"), - String::from("--of=not-a-real.file"), - ]; - - let matches = uu_app().try_get_matches_from(args).unwrap(); - let _ = Output::::new(&matches).unwrap(); -} diff --git a/src/uu/dd/test-resources/FAILED-random-5828891cb1230748e146f34223bbd3b5.test b/src/uu/dd/test-resources/FAILED-random-5828891cb1230748e146f34223bbd3b5.test new file mode 100644 index 0000000000000000000000000000000000000000..6e997411c30e758e1d8654b02d365940cda4426d GIT binary patch literal 74400 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 Ruin0S|L*s%zkmM!0{}7Ge}Mo1 diff --git a/src/uu/dd/test-resources/gnudd-conv-atoibm-seq-byte-values.spec b/src/uu/dd/test-resources/gnudd-conv-atoibm-seq-byte-values.spec deleted file mode 100644 index 3835d57cfb07e4c9021a7b8e0e2447a212c3032b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 zcmZQ%U}n-a*Vkhe<5uP6;pY<+5EinvQ8SX1P`8(rk(Y~dsIJe6t__Iw^@~Z!PW1lx z;q#}jU%r3)`6I5X&L=F{MD=0u35isa}c5AB>BU7X!qJ=_C5 zgM>!owmXl9N(X($g|C3JZ#hN=wSi8Y;TGdVBi&vL?)#J#X%U`KwoXty#Zr&h5-No diff --git a/src/uu/dd/test-resources/gnudd-conv-ebcdic-utol-seq-byte-values.spec b/src/uu/dd/test-resources/gnudd-conv-ebcdic-utol-seq-byte-values.spec deleted file mode 100644 index 13c82e5e3c8500dbc52f6820c5fe57b5ab5e9762..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 zcmZQ%U}n-a*Vkhe<5uP6;pY<+5EinvQ8SX1P`8(rk(Y~dsIJe6t__Iw^@~Z!PW1lx z;q#}jU%r3)`6I5X&L=;wv8K7HwWYnSvt!c4DU+v7oiTmU%q5GLEnTsE?aI9ma%VMG z;*vkG@`68myrP1#lBkL}o2G`g7N?Fhm!W~Nl&J}anWcrbl?cm2J10jMXE#?5_dw6! zpwN);u*ityq|}u3w9Jgcg5sjmlJc^Kiteu7p8me933F!8o4a8C>Q!EA*00;RVe_V~ sTeff8xnuXPg?skzJALZxne*pv-@1F}{=L_)-oAPN?)R_1fBydi0I5)U0RR91 diff --git a/src/uu/dd/test-resources/gnudd-conv-etoa-seq-byte-values.spec b/src/uu/dd/test-resources/gnudd-conv-etoa-seq-byte-values.spec deleted file mode 100644 index 433b1f600bebcdb8e30264c727d5e5c7b6eac6af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 zcmZQ%U}oZ+Q{UD*ox6{hho4VSKv<}CZaashME@jN8F{(JhUO-&7HRR$j_xkj9(J~g z6DEsIox(D0=8W01L`9_LEl^mraLM9jOIIw{yQ*PRqrFmX^{TaN*00;RK}AthtIk?q zck`yLTeff8xkKl4ysEw3?p=HL?B93rK*AwqD|H7Y+r-1kNvSF6X_*;Ej~qXC@gD!SFT^XdE@r2yLay2d-&k-qu3|UpE*`L zJGr{JyLo!NeDV6#+c#ddKHh%50scXO@85m=@cGmHn2_MG(1`G;$gf|%fBX5v(7@Qp R)WqD((&G28zkmM!0{|_%e}Mo1 diff --git a/src/uu/dd/test-resources/gnudd-conv-ibm-ltou-seq-byte-values.spec b/src/uu/dd/test-resources/gnudd-conv-ibm-ltou-seq-byte-values.spec deleted file mode 100644 index d425e7d012beb1c314cc4e1f72fafed1afe378e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 zcmZQ%U}n-a*Vkhe<5uP6;pY<+5EinvQ8SX1P`8(rk(Y~dsIJe6t__Iw^@~Z!PW1lx z;q#}jU%r3)`6I5X&L=_JxWH%1WXt;%u54+FG1C(p-iH#!{vx9A=gl)>a}c5AB>BU7X!qJ=_C5 zgM>!owmXl9N(X($g|C3JZ#hN=wSi8Y;TGdVBi&W=)tgd*0jy^H;B0yJr2mjT<&^ t+PY=?ww*h6@7lX(|Gv|w&Yn4c?)I&_ckbVN{p#(T_wRoH`upeqKL7->hPMC! diff --git a/src/uu/dd/test-resources/gnudd-conv-ibm-utol-seq-byte-values.spec b/src/uu/dd/test-resources/gnudd-conv-ibm-utol-seq-byte-values.spec deleted file mode 100644 index 1dcaccbcdf8adfd826979f9273c87cd9568b0209..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 zcmZQ%U}n-a*Vkhe<5uP6;pY<+5EinvQ8SX1P`8(rk(Y~dsIJe6t__Iw^@~Z!PW1lx z;q#}jU%r3)`6I5X&L=;wv8K7HwWYnSvt!c4DU+v7oiTmU%q5GLEnTsE?aI9ma^o8- zamgQ8dBLB3p`wDalBkL}o2G`g7N?Fhm!W~Nl&J}anWcrbl?cm2J10jMXE#?5_dw6! zpwN);u*ityq|}u3w9Jgcg5sjmlJc^Kiteu7p8mdB6XwjGH+RAO)vMO7S-)=MhRvI{ sZrQ$V=Z@XG_U_rg@ARp&XU?Cyee3R>`}bbIdi&=6yWhY5{`vn80K=@5f_t`kd~5_k(X0cP*ze^QCHK{(ALt`(bqFH zFg7wZF*mccu(qcc@%IZ12o4Gj2@i{mh>nVliH~zkz$ITD zRa;YE*Vxe9)Y{VC*4feB)!WnGH*vz`NmHjxpEh&G>{)Z?%%8V#!Qw?rmn>hla>eRZ zYuBt_w{gSfO@5f_t`kd~5_k(X0cP*ze^QCHK{(ALt`(bqFH zFg7wZF*mccu(q{)Z?%%8V#!Qw?rmn>hla>eRZ zYuBt_w{gSfOMC+6cQE@6%&_`l#-T_m6KOcR8m$^Ra4i{)Y8_`)zddH zG%_|ZH8Z!cw6eCbwX=6{baHlab#wRd^z!!c_45x13RUz zF>}`JIdkXDU$Ah|;w4L$Enl&6)#^2C*R9{Mant54TeofBv2)k%J$v` Some(&ASCII_TO_IBM_UCASE_TO_LCASE), +// (ConvFlag::FmtAtoI, ConvFlag::LCase) => Some(&ASCII_TO_IBM_LCASE_TO_UCASE), +// +// If my reading is correct and that is a typo, then the +// UCASE_TO_LCASE and LCASE_TO_UCASE in those lines should be swapped, +// and the expected output for the following two tests should be +// updated accordingly. +#[test] +fn test_atoibm_and_ucase_conv_spec_test() { + new_ucmd!() + .args(&["conv=ibm,ucase"]) + .pipe_in_fixture("seq-byte-values-b632a992d3aed5d8d1a59cc5a5a455ba.test") + .succeeds() + .stdout_is_fixture_bytes("lcase-ibm.test"); +} + +#[test] +fn test_atoibm_and_lcase_conv_spec_test() { + new_ucmd!() + .args(&["conv=ibm,lcase"]) + .pipe_in_fixture("seq-byte-values-b632a992d3aed5d8d1a59cc5a5a455ba.test") + .succeeds() + .stdout_is_fixture_bytes("ucase-ibm.test"); +} + +#[test] +fn test_swab_256_test() { + new_ucmd!() + .args(&["conv=swab"]) + .pipe_in_fixture("seq-byte-values.test") + .succeeds() + .stdout_is_fixture_bytes("seq-byte-values-swapped.test"); +} + +#[test] +fn test_swab_257_test() { + new_ucmd!() + .args(&["conv=swab"]) + .pipe_in_fixture("seq-byte-values-odd.test") + .succeeds() + .stdout_is_fixture_bytes("seq-byte-values-odd.spec"); +} + +#[test] +fn test_zeros_4k_conv_sync_obs_gt_ibs() { + new_ucmd!() + .args(&["conv=sync", "ibs=521", "obs=1031"]) + .pipe_in_fixture("zeros-620f0b67a91f7f74151bc5be745b7110.test") + .succeeds() + .stdout_is_fixture_bytes("gnudd-conv-sync-ibs-521-obs-1031-zeros.spec"); +} + +#[test] +fn test_zeros_4k_conv_sync_ibs_gt_obs() { + new_ucmd!() + .args(&["conv=sync", "ibs=1031", "obs=521"]) + .pipe_in_fixture("zeros-620f0b67a91f7f74151bc5be745b7110.test") + .succeeds() + .stdout_is_fixture_bytes("gnudd-conv-sync-ibs-1031-obs-521-zeros.spec"); +} + +#[test] +fn test_deadbeef_32k_conv_sync_obs_gt_ibs() { + new_ucmd!() + .args(&[ + "conv=sync", + "ibs=521", + "obs=1031", + "if=deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test", + ]) + .succeeds() + .stdout_is_fixture_bytes("gnudd-conv-sync-ibs-521-obs-1031-deadbeef.spec"); +} + +#[test] +fn test_deadbeef_32k_conv_sync_ibs_gt_obs() { + new_ucmd!() + .args(&[ + "conv=sync", + "ibs=1031", + "obs=521", + "if=deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test", + ]) + .succeeds() + .stdout_is_fixture_bytes("gnudd-conv-sync-ibs-1031-obs-521-deadbeef.spec"); +} + +#[test] +fn test_random_73k_test_bs_prime_obs_gt_ibs_sync() { + new_ucmd!() + .args(&[ + "conv=sync", + "ibs=521", + "obs=1031", + "if=random-5828891cb1230748e146f34223bbd3b5.test", + ]) + .succeeds() + .stdout_is_fixture_bytes("gnudd-conv-sync-ibs-521-obs-1031-random.spec"); +} + +#[test] +fn test_random_73k_test_bs_prime_ibs_gt_obs_sync() { + new_ucmd!() + .args(&[ + "conv=sync", + "ibs=1031", + "obs=521", + "if=random-5828891cb1230748e146f34223bbd3b5.test", + ]) + .succeeds() + .stdout_is_fixture_bytes("gnudd-conv-sync-ibs-1031-obs-521-random.spec"); +} + +#[test] +fn test_identity() { + new_ucmd!() + .args(&["if=zeros-620f0b67a91f7f74151bc5be745b7110.test"]) + .succeeds() + .stdout_is_fixture_bytes("zeros-620f0b67a91f7f74151bc5be745b7110.test"); + new_ucmd!() + .args(&["if=ones-6ae59e64850377ee5470c854761551ea.test"]) + .succeeds() + .stdout_is_fixture_bytes("ones-6ae59e64850377ee5470c854761551ea.test"); + new_ucmd!() + .args(&["if=deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test"]) + .succeeds() + .stdout_is_fixture_bytes("deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test"); + new_ucmd!() + .args(&["if=random-5828891cb1230748e146f34223bbd3b5.test"]) + .succeeds() + .stdout_is_fixture_bytes("random-5828891cb1230748e146f34223bbd3b5.test"); +} + +#[test] +fn test_random_73k_test_not_a_multiple_obs_gt_ibs() { + new_ucmd!() + .args(&[ + "ibs=521", + "obs=1031", + "if=random-5828891cb1230748e146f34223bbd3b5.test", + ]) + .succeeds() + .stdout_is_fixture_bytes("random-5828891cb1230748e146f34223bbd3b5.test"); +} + +#[test] +fn test_random_73k_test_obs_lt_not_a_multiple_ibs() { + new_ucmd!() + .args(&[ + "ibs=1031", + "obs=521", + "if=random-5828891cb1230748e146f34223bbd3b5.test", + ]) + .succeeds() + .stdout_is_fixture_bytes("random-5828891cb1230748e146f34223bbd3b5.test"); +} + +#[test] +fn test_deadbeef_all_32k_test_count_reads() { + new_ucmd!() + .args(&[ + "bs=1024", + "count=32", + "if=deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test", + ]) + .succeeds() + .stdout_is_fixture_bytes("deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test"); +} + +#[test] +fn test_deadbeef_all_32k_test_count_bytes() { + new_ucmd!() + .args(&[ + "ibs=531", + "obs=1031", + "count=32x1024", + "oflag=count_bytes", + "if=deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test", + ]) + .succeeds() + .stdout_is_fixture_bytes("deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test"); +} + +#[test] +fn test_deadbeef_32k_to_16k_test_count_reads() { + new_ucmd!() + .args(&[ + "ibs=1024", + "obs=1031", + "count=16", + "if=deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test", + ]) + .succeeds() + .stdout_is_fixture_bytes("gnudd-deadbeef-first-16k.spec"); +} + +#[test] +fn test_deadbeef_32k_to_12345_test_count_bytes() { + new_ucmd!() + .args(&[ + "ibs=531", + "obs=1031", + "count=12345", + "iflag=count_bytes", + "if=deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test", + ]) + .succeeds() + .stdout_is_fixture_bytes("gnudd-deadbeef-first-12345.spec"); +} + +#[test] +fn test_random_73k_test_count_reads() { + new_ucmd!() + .args(&[ + "bs=1024", + "count=32", + "if=random-5828891cb1230748e146f34223bbd3b5.test", + ]) + .succeeds() + .stdout_is_fixture_bytes("gnudd-random-first-32k.spec"); +} + +#[test] +fn test_random_73k_test_count_bytes() { + new_ucmd!() + .args(&[ + "ibs=521", + "obs=1031", + "count=32x1024", + "iflag=count_bytes", + "if=random-5828891cb1230748e146f34223bbd3b5.test", + ]) + .succeeds() + .stdout_is_fixture_bytes("gnudd-random-first-32k.spec"); +} + +#[test] +fn test_all_valid_ascii_ebcdic_ascii_roundtrip_conv_test() { + let tmp = new_ucmd!() + .args(&["ibs=128", "obs=1024", "conv=ebcdic"]) + .pipe_in_fixture("all-valid-ascii-chars-37eff01866ba3f538421b30b7cbefcac.test") + .succeeds() + .stdout_move_bytes(); + new_ucmd!() + .args(&["ibs=256", "obs=1024", "conv=ascii"]) + .pipe_in(tmp) + .succeeds() + .stdout_is_fixture_bytes("all-valid-ascii-chars-37eff01866ba3f538421b30b7cbefcac.test"); +} diff --git a/src/uu/dd/test-resources/all-valid-ascii-chars-37eff01866ba3f538421b30b7cbefcac.test b/tests/fixtures/dd/all-valid-ascii-chars-37eff01866ba3f538421b30b7cbefcac.test similarity index 100% rename from src/uu/dd/test-resources/all-valid-ascii-chars-37eff01866ba3f538421b30b7cbefcac.test rename to tests/fixtures/dd/all-valid-ascii-chars-37eff01866ba3f538421b30b7cbefcac.test diff --git a/src/uu/dd/test-resources/dd-block-cbs16-win.test b/tests/fixtures/dd/dd-block-cbs16-win.test similarity index 100% rename from src/uu/dd/test-resources/dd-block-cbs16-win.test rename to tests/fixtures/dd/dd-block-cbs16-win.test diff --git a/src/uu/dd/test-resources/dd-block-cbs16.spec b/tests/fixtures/dd/dd-block-cbs16.spec similarity index 100% rename from src/uu/dd/test-resources/dd-block-cbs16.spec rename to tests/fixtures/dd/dd-block-cbs16.spec diff --git a/src/uu/dd/test-resources/dd-block-cbs16.test b/tests/fixtures/dd/dd-block-cbs16.test similarity index 100% rename from src/uu/dd/test-resources/dd-block-cbs16.test rename to tests/fixtures/dd/dd-block-cbs16.test diff --git a/src/uu/dd/test-resources/dd-block-cbs8.spec b/tests/fixtures/dd/dd-block-cbs8.spec similarity index 100% rename from src/uu/dd/test-resources/dd-block-cbs8.spec rename to tests/fixtures/dd/dd-block-cbs8.spec diff --git a/src/uu/dd/test-resources/dd-block-consecutive-nl-cbs16.spec b/tests/fixtures/dd/dd-block-consecutive-nl-cbs16.spec similarity index 100% rename from src/uu/dd/test-resources/dd-block-consecutive-nl-cbs16.spec rename to tests/fixtures/dd/dd-block-consecutive-nl-cbs16.spec diff --git a/src/uu/dd/test-resources/dd-block-consecutive-nl-win.test b/tests/fixtures/dd/dd-block-consecutive-nl-win.test similarity index 100% rename from src/uu/dd/test-resources/dd-block-consecutive-nl-win.test rename to tests/fixtures/dd/dd-block-consecutive-nl-win.test diff --git a/src/uu/dd/test-resources/dd-block-consecutive-nl.test b/tests/fixtures/dd/dd-block-consecutive-nl.test similarity index 100% rename from src/uu/dd/test-resources/dd-block-consecutive-nl.test rename to tests/fixtures/dd/dd-block-consecutive-nl.test diff --git a/src/uu/dd/test-resources/dd-unblock-cbs16-win.spec b/tests/fixtures/dd/dd-unblock-cbs16-win.spec similarity index 100% rename from src/uu/dd/test-resources/dd-unblock-cbs16-win.spec rename to tests/fixtures/dd/dd-unblock-cbs16-win.spec diff --git a/src/uu/dd/test-resources/dd-unblock-cbs16.spec b/tests/fixtures/dd/dd-unblock-cbs16.spec similarity index 100% rename from src/uu/dd/test-resources/dd-unblock-cbs16.spec rename to tests/fixtures/dd/dd-unblock-cbs16.spec diff --git a/src/uu/dd/test-resources/dd-unblock-cbs16.test b/tests/fixtures/dd/dd-unblock-cbs16.test similarity index 100% rename from src/uu/dd/test-resources/dd-unblock-cbs16.test rename to tests/fixtures/dd/dd-unblock-cbs16.test diff --git a/src/uu/dd/test-resources/dd-unblock-cbs8-win.spec b/tests/fixtures/dd/dd-unblock-cbs8-win.spec similarity index 100% rename from src/uu/dd/test-resources/dd-unblock-cbs8-win.spec rename to tests/fixtures/dd/dd-unblock-cbs8-win.spec diff --git a/src/uu/dd/test-resources/dd-unblock-cbs8.spec b/tests/fixtures/dd/dd-unblock-cbs8.spec similarity index 100% rename from src/uu/dd/test-resources/dd-unblock-cbs8.spec rename to tests/fixtures/dd/dd-unblock-cbs8.spec diff --git a/tests/fixtures/dd/deadbeef-16.spec b/tests/fixtures/dd/deadbeef-16.spec new file mode 100644 index 0000000000000000000000000000000000000000..4eb7c10f190e85dbf88978936a95194d29658839 GIT binary patch literal 128 Ucmewl1q@IC<^G3q8EDN101#h4!2kdN literal 0 HcmV?d00001 diff --git a/tests/fixtures/dd/deadbeef-16.test b/tests/fixtures/dd/deadbeef-16.test new file mode 100644 index 000000000..85f2b7569 --- /dev/null +++ b/tests/fixtures/dd/deadbeef-16.test @@ -0,0 +1 @@ +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ \ No newline at end of file diff --git a/src/uu/dd/test-resources/deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test b/tests/fixtures/dd/deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test similarity index 100% rename from src/uu/dd/test-resources/deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test rename to tests/fixtures/dd/deadbeef-18d99661a1de1fc9af21b0ec2cd67ba3.test diff --git a/src/uu/dd/test-resources/gnudd-conv-sync-ibs-1031-obs-521-deadbeef.spec b/tests/fixtures/dd/gnudd-conv-sync-ibs-1031-obs-521-deadbeef.spec similarity index 100% rename from src/uu/dd/test-resources/gnudd-conv-sync-ibs-1031-obs-521-deadbeef.spec rename to tests/fixtures/dd/gnudd-conv-sync-ibs-1031-obs-521-deadbeef.spec diff --git a/src/uu/dd/test-resources/gnudd-conv-sync-ibs-1031-obs-521-random.spec b/tests/fixtures/dd/gnudd-conv-sync-ibs-1031-obs-521-random.spec similarity index 100% rename from src/uu/dd/test-resources/gnudd-conv-sync-ibs-1031-obs-521-random.spec rename to tests/fixtures/dd/gnudd-conv-sync-ibs-1031-obs-521-random.spec diff --git a/src/uu/dd/test-resources/gnudd-conv-sync-ibs-1031-obs-521-zeros.spec b/tests/fixtures/dd/gnudd-conv-sync-ibs-1031-obs-521-zeros.spec similarity index 100% rename from src/uu/dd/test-resources/gnudd-conv-sync-ibs-1031-obs-521-zeros.spec rename to tests/fixtures/dd/gnudd-conv-sync-ibs-1031-obs-521-zeros.spec diff --git a/src/uu/dd/test-resources/gnudd-conv-sync-ibs-521-obs-1031-deadbeef.spec b/tests/fixtures/dd/gnudd-conv-sync-ibs-521-obs-1031-deadbeef.spec similarity index 100% rename from src/uu/dd/test-resources/gnudd-conv-sync-ibs-521-obs-1031-deadbeef.spec rename to tests/fixtures/dd/gnudd-conv-sync-ibs-521-obs-1031-deadbeef.spec diff --git a/src/uu/dd/test-resources/gnudd-conv-sync-ibs-521-obs-1031-random.spec b/tests/fixtures/dd/gnudd-conv-sync-ibs-521-obs-1031-random.spec similarity index 100% rename from src/uu/dd/test-resources/gnudd-conv-sync-ibs-521-obs-1031-random.spec rename to tests/fixtures/dd/gnudd-conv-sync-ibs-521-obs-1031-random.spec diff --git a/src/uu/dd/test-resources/gnudd-conv-sync-ibs-521-obs-1031-zeros.spec b/tests/fixtures/dd/gnudd-conv-sync-ibs-521-obs-1031-zeros.spec similarity index 100% rename from src/uu/dd/test-resources/gnudd-conv-sync-ibs-521-obs-1031-zeros.spec rename to tests/fixtures/dd/gnudd-conv-sync-ibs-521-obs-1031-zeros.spec diff --git a/src/uu/dd/test-resources/gnudd-deadbeef-first-12345.spec b/tests/fixtures/dd/gnudd-deadbeef-first-12345.spec similarity index 100% rename from src/uu/dd/test-resources/gnudd-deadbeef-first-12345.spec rename to tests/fixtures/dd/gnudd-deadbeef-first-12345.spec diff --git a/src/uu/dd/test-resources/gnudd-deadbeef-first-16k.spec b/tests/fixtures/dd/gnudd-deadbeef-first-16k.spec similarity index 100% rename from src/uu/dd/test-resources/gnudd-deadbeef-first-16k.spec rename to tests/fixtures/dd/gnudd-deadbeef-first-16k.spec diff --git a/src/uu/dd/test-resources/gnudd-random-first-32k.spec b/tests/fixtures/dd/gnudd-random-first-32k.spec similarity index 100% rename from src/uu/dd/test-resources/gnudd-random-first-32k.spec rename to tests/fixtures/dd/gnudd-random-first-32k.spec diff --git a/src/uu/dd/test-resources/lcase-ascii.test b/tests/fixtures/dd/lcase-ascii.test similarity index 100% rename from src/uu/dd/test-resources/lcase-ascii.test rename to tests/fixtures/dd/lcase-ascii.test diff --git a/src/uu/dd/test-resources/lcase-ebcdic.spec b/tests/fixtures/dd/lcase-ebcdic.spec similarity index 100% rename from src/uu/dd/test-resources/lcase-ebcdic.spec rename to tests/fixtures/dd/lcase-ebcdic.spec diff --git a/src/uu/dd/test-resources/lcase-ebcdic.test b/tests/fixtures/dd/lcase-ebcdic.test similarity index 100% rename from src/uu/dd/test-resources/lcase-ebcdic.test rename to tests/fixtures/dd/lcase-ebcdic.test diff --git a/src/uu/dd/test-resources/lcase-ibm.spec b/tests/fixtures/dd/lcase-ibm.spec similarity index 100% rename from src/uu/dd/test-resources/lcase-ibm.spec rename to tests/fixtures/dd/lcase-ibm.spec diff --git a/src/uu/dd/test-resources/lcase-ibm.test b/tests/fixtures/dd/lcase-ibm.test similarity index 100% rename from src/uu/dd/test-resources/lcase-ibm.test rename to tests/fixtures/dd/lcase-ibm.test diff --git a/src/uu/dd/test-resources/ones-6ae59e64850377ee5470c854761551ea.test b/tests/fixtures/dd/ones-6ae59e64850377ee5470c854761551ea.test similarity index 100% rename from src/uu/dd/test-resources/ones-6ae59e64850377ee5470c854761551ea.test rename to tests/fixtures/dd/ones-6ae59e64850377ee5470c854761551ea.test diff --git a/tests/fixtures/dd/random-5828891cb1230748e146f34223bbd3b5.test b/tests/fixtures/dd/random-5828891cb1230748e146f34223bbd3b5.test new file mode 100644 index 0000000000000000000000000000000000000000..6e997411c30e758e1d8654b02d365940cda4426d GIT binary patch literal 74400 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