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 index 0cb939fd9..ffb095c4a 100644 --- a/src/uu/dd/src/dd_unit_tests/conv_sync_tests.rs +++ b/src/uu/dd/src/dd_unit_tests/conv_sync_tests.rs @@ -1,5 +1,19 @@ use super::*; +struct LazyReader +{ + src: R, +} + +impl Read for LazyReader +{ + fn read(&mut self, buf: &mut [u8]) -> io::Result + { + let half = buf.len() / 2; + self.src.read(&mut buf[..half]) + } +} + macro_rules! make_sync_test ( ( $test_id:ident, $test_name:expr, $src:expr, $sync:expr, $ibs:expr, $obs:expr, $spec:expr ) => { @@ -95,3 +109,12 @@ make_sync_test!( 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/test-resources/deadbeef-16.spec b/src/uu/dd/test-resources/deadbeef-16.spec new file mode 100644 index 000000000..4eb7c10f1 Binary files /dev/null and b/src/uu/dd/test-resources/deadbeef-16.spec differ diff --git a/src/uu/dd/test-resources/deadbeef-16.test b/src/uu/dd/test-resources/deadbeef-16.test new file mode 100644 index 000000000..85f2b7569 --- /dev/null +++ b/src/uu/dd/test-resources/deadbeef-16.test @@ -0,0 +1 @@ +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ \ No newline at end of file