diff --git a/src/decoder.rs b/src/decoder.rs index aa11ca5..69d45f4 100644 --- a/src/decoder.rs +++ b/src/decoder.rs @@ -201,10 +201,10 @@ mod test { // then extracting back-referenced data out of it. A complete test should // feed in other valid operations that populate the backbuffer, and then index // op codes to demonstrate the indexing operations. - fn new_with_backbuffer(bytes: I, back_buffer: [PixelRGBA; 64]) -> Self { + fn new_with_backbuffer(bytes: I, back_buffer: [PixelRGBA; 64], size: u32) -> Self { Self { - width: 0, - height: 0, + width: size, + height: 1, channels: 4, colorspace: 0, back_buffer, @@ -222,10 +222,10 @@ mod test { // A hack to unit test the run behavior. Same idea as the new_with_backbuffer() // function, but for testing a run of pixels. - fn new_with_previous_pixel(bytes: I, prev_pixel: PixelRGBA) -> Self { + fn new_with_previous_pixel(bytes: I, prev_pixel: PixelRGBA, size: u32) -> Self { Self { - width: 0, - height: 0, + width: size, + height: 1, channels: 4, colorspace: 0, back_buffer: [PixelRGBA::zero(); 64], @@ -240,10 +240,10 @@ mod test { // to extract it from the input iterator. For the decoder tests, this // needs to be skipped. Thus, we get *another* magic constructor // available only to the test module. - fn new_with_no_metadata(bytes: I) -> Self { + fn new_with_no_metadata(bytes: I, size: u32) -> Self { Self { - width: 0, - height: 0, + width: size, + height: 1, channels: 4, colorspace: 0, back_buffer: [PixelRGBA::zero(); 64], @@ -305,7 +305,7 @@ mod test { }, ]; - let decoder = Decoder::new_with_no_metadata(compressed.into_iter()); + let decoder = Decoder::new_with_no_metadata(compressed.into_iter(), expected.len() as u32); let result = decoder.collect::>(); assert_eq!(result, expected); } @@ -351,7 +351,7 @@ mod test { }, ]; - let decoder = Decoder::new_with_no_metadata(compressed.into_iter()); + let decoder = Decoder::new_with_no_metadata(compressed.into_iter(), expected.len() as u32); let result: Vec = decoder.collect(); assert_eq!(result, expected); } @@ -386,7 +386,7 @@ mod test { PixelRGBA::zero(), ]; - let decoder = Decoder::new_with_backbuffer(compressed.into_iter(), backbuffer); + let decoder = Decoder::new_with_backbuffer(compressed.into_iter(), backbuffer, expected.len() as u32); let result: Vec = decoder.collect(); assert_eq!(result, expected); } @@ -417,7 +417,7 @@ mod test { PixelRGBA::new(0, 0, 0, 255), ]; - let decoder = Decoder::new_with_no_metadata(compressed.into_iter()); + let decoder = Decoder::new_with_no_metadata(compressed.into_iter(), expected.len() as u32); let result: Vec = decoder.collect(); assert_eq!(result, expected); } @@ -436,7 +436,7 @@ mod test { PixelRGBA::new(1, 1, 1, 255), // holds at 1s ]; - let decoder = Decoder::new_with_previous_pixel(compressed.into_iter(), init_pixel); + let decoder = Decoder::new_with_previous_pixel(compressed.into_iter(), init_pixel, expected.len() as u32); let result: Vec = decoder.collect(); assert_eq!(result, expected); } @@ -455,7 +455,7 @@ mod test { PixelRGBA::new(254, 254, 254, 255), ]; - let decoder = Decoder::new_with_previous_pixel(compressed.into_iter(), init_pixel); + let decoder = Decoder::new_with_previous_pixel(compressed.into_iter(), init_pixel, expected.len() as u32); let result: Vec = decoder.collect(); assert_eq!(result, expected); } @@ -483,7 +483,7 @@ mod test { PixelRGBA::new(37, 19, 28, 255), ]; - let decoder = Decoder::new_with_no_metadata(compressed.into_iter()); + let decoder = Decoder::new_with_no_metadata(compressed.into_iter(), expected.len() as u32); let result: Vec = decoder.collect(); assert_eq!(result, expected); } @@ -497,7 +497,7 @@ mod test { ]; let expected = PixelRGBA::new(37, 30, 37, 255); - let mut decoder = Decoder::new_with_previous_pixel(compressed.into_iter(), init_pixel); + let mut decoder = Decoder::new_with_previous_pixel(compressed.into_iter(), init_pixel, 1); let result = decoder .next() .expect("Oops, didn't get a Pixel back from the Decoder"); @@ -513,7 +513,7 @@ mod test { ]; let expected = PixelRGBA::new(247, 243, 238, 255); - let mut decoder = Decoder::new_with_previous_pixel(compressed.into_iter(), init_pixel); + let mut decoder = Decoder::new_with_previous_pixel(compressed.into_iter(), init_pixel, 1); let result = decoder .next() .expect("Oops, didn't get a Pixel back from the Decoder"); @@ -534,7 +534,7 @@ mod test { // lets pretend an encoder did this for some reason. The decoder can still // unpack this correctly, it's just a sub-optimal compression is all. - let decoder = Decoder::new_with_previous_pixel(compressed.into_iter(), init_pixel); + let decoder = Decoder::new_with_previous_pixel(compressed.into_iter(), init_pixel, expected.len() as u32); let result: Vec = decoder.collect(); assert_eq!(result, expected); } @@ -576,7 +576,7 @@ mod test { PixelRGBA::new(0xFF, 0xFF, 0xFF, 0xFF), ]; - let mut decoder = Decoder::new_with_no_metadata(compressed.into_iter()); + let mut decoder = Decoder::new_with_no_metadata(compressed.into_iter(), expected.len() as u32); let mut result = Vec::::new(); loop { @@ -645,7 +645,7 @@ mod test { 39, // run x3 38, // final RGBA ]; - let mut decoder = Decoder::new_with_no_metadata(compressed.into_iter()); + let mut decoder = Decoder::new_with_no_metadata(compressed.into_iter(), indices.len() as u32); let mut iters = 0; loop { if let Some(pixel) = decoder.next() {