From e0ecedf96dfb13f30c143f073a1d9cb5b307b2f4 Mon Sep 17 00:00:00 2001 From: Henry Schimke Date: Tue, 30 Aug 2022 17:49:02 -0500 Subject: [PATCH] rbg not passing --- src/RGBLuminanceSourceTestCase.java | 63 ------------------------- src/RGBLuminanceSourceTestCase.rs | 72 +++++++++++++++++++++++++++++ src/lib.rs | 13 ++++-- 3 files changed, 80 insertions(+), 68 deletions(-) delete mode 100644 src/RGBLuminanceSourceTestCase.java create mode 100644 src/RGBLuminanceSourceTestCase.rs diff --git a/src/RGBLuminanceSourceTestCase.java b/src/RGBLuminanceSourceTestCase.java deleted file mode 100644 index 97f9794..0000000 --- a/src/RGBLuminanceSourceTestCase.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2014 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.zxing; - -import org.junit.Assert; -import org.junit.Test; - -/** - * Tests {@link RGBLuminanceSource}. - */ -public final class RGBLuminanceSourceTestCase extends Assert { - - private static final RGBLuminanceSource SOURCE = new RGBLuminanceSource(3, 3, new int[] { - 0x000000, 0x7F7F7F, 0xFFFFFF, - 0xFF0000, 0x00FF00, 0x0000FF, - 0x0000FF, 0x00FF00, 0xFF0000}); - - @Test - public void testCrop() { - assertTrue(SOURCE.isCropSupported()); - LuminanceSource cropped = SOURCE.crop(1, 1, 1, 1); - assertEquals(1, cropped.getHeight()); - assertEquals(1, cropped.getWidth()); - assertArrayEquals(new byte[] { 0x7F }, cropped.getRow(0, null)); - } - - @Test - public void testMatrix() { - assertArrayEquals(new byte[] { 0x00, 0x7F, (byte) 0xFF, 0x3F, 0x7F, 0x3F, 0x3F, 0x7F, 0x3F }, - SOURCE.getMatrix()); - LuminanceSource croppedFullWidth = SOURCE.crop(0, 1, 3, 2); - assertArrayEquals(new byte[] { 0x3F, 0x7F, 0x3F, 0x3F, 0x7F, 0x3F }, - croppedFullWidth.getMatrix()); - LuminanceSource croppedCorner = SOURCE.crop(1, 1, 2, 2); - assertArrayEquals(new byte[] { 0x7F, 0x3F, 0x7F, 0x3F }, - croppedCorner.getMatrix()); - } - - @Test - public void testGetRow() { - assertArrayEquals(new byte[] { 0x3F, 0x7F, 0x3F }, SOURCE.getRow(2, new byte[3])); - } - - @Test - public void testToString() { - assertEquals("#+ \n#+#\n#+#\n", SOURCE.toString()); - } - -} diff --git a/src/RGBLuminanceSourceTestCase.rs b/src/RGBLuminanceSourceTestCase.rs new file mode 100644 index 0000000..8f9f5d4 --- /dev/null +++ b/src/RGBLuminanceSourceTestCase.rs @@ -0,0 +1,72 @@ +/* + * Copyright 2014 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// package com.google.zxing; + +// import org.junit.Assert; +// import org.junit.Test; + +// /** +// * Tests {@link RGBLuminanceSource}. +// */ +// public final class RGBLuminanceSourceTestCase extends Assert { + +use crate::{RGBLuminanceSource, LuminanceSource}; + + static src_data : [u32;9] = [0x000000, 0x7F7F7F, 0xFFFFFF, + 0xFF0000, 0x00FF00, 0x0000FF, + 0x0000FF, 0x00FF00, 0xFF0000]; + + #[test] + fn testCrop() { + let SOURCE = RGBLuminanceSource::new_with_width_height_pixels(3,3,&src_data.to_vec()); + + assert!(SOURCE.isCropSupported()); + let cropped = SOURCE.crop(1, 1, 1, 1).unwrap(); + assert_eq!(1, cropped.getHeight()); + assert_eq!(1, cropped.getWidth()); + assert_eq!(vec![ 0x7F ], cropped.getRow(0, &vec![0;0])); + } + + #[test] + fn testMatrix() { + let SOURCE = RGBLuminanceSource::new_with_width_height_pixels(3,3,&src_data.to_vec()); + + assert_eq!(vec![ 0x00, 0x7F, 0xFF, 0x3F, 0x7F, 0x3F, 0x3F, 0x7F, 0x3F ], + SOURCE.getMatrix()); + let croppedFullWidth = SOURCE.crop(0, 1, 3, 2).unwrap(); + assert_eq!(vec![ 0x3F, 0x7F, 0x3F, 0x3F, 0x7F, 0x3F ], + croppedFullWidth.getMatrix()); + let croppedCorner = SOURCE.crop(1, 1, 2, 2).unwrap(); + assert_eq!(vec![ 0x7F, 0x3F, 0x7F, 0x3F ], + croppedCorner.getMatrix()); + } + + #[test] + fn testGetRow() { + let SOURCE = RGBLuminanceSource::new_with_width_height_pixels(3,3,&src_data.to_vec()); + + assert_eq!(vec![ 0x3F, 0x7F, 0x3F ], SOURCE.getRow(2, &vec![0;3])); + } + + // #[test] + // fn testToString() { + // let SOURCE = RGBLuminanceSource::new_with_width_height_pixels(3,3,&src_data.to_vec()); + + // assert_eq!("#+ \n#+#\n#+#\n", SOURCE.toString()); + // } + +// } diff --git a/src/lib.rs b/src/lib.rs index 8336507..f9c7999 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -11,6 +11,9 @@ use std::time::{SystemTime, UNIX_EPOCH}; #[cfg(test)] mod PlanarYUVLuminanceSourceTestCase; + +#[cfg(test)] +mod RGBLuminanceSourceTestCase; /* * Copyright 2007 ZXing authors * @@ -1828,7 +1831,7 @@ impl LuminanceSource for RGBLuminanceSource { let width = self.getWidth(); let offset = (y + self.top) * self.dataWidth + self.left; - row[0..width].clone_from_slice(&self.luminances[offset..width]); + row[0..width].clone_from_slice(&self.luminances[offset..offset+width]); //System.arraycopy(self.luminances, offset, row, 0, width); if self.invert { row = self.invert_block_of_bytes(row); @@ -1918,7 +1921,7 @@ impl LuminanceSource for RGBLuminanceSource { } impl RGBLuminanceSource { - pub fn new_with_width_height_pixels(width: usize, height: usize, pixels: &Vec) -> Self { + pub fn new_with_width_height_pixels(width: usize, height: usize, pixels: &Vec) -> Self { //super(width, height); let dataWidth = width; @@ -1935,11 +1938,11 @@ impl RGBLuminanceSource { for offset in 0..size { //for (int offset = 0; offset < size; offset++) { let pixel = pixels[offset]; - let r = ((pixel as u32 >> 16) & 0xff) as u8; // red - let g2 = ((pixel as u16 >> 7) & 0x1fe) as u8; // 2 * green + let r = (pixel >> 16) & 0xff ; // red + let g2 = (pixel >> 7) & 0x1fe; // 2 * green let b = pixel & 0xff; // blue // Calculate green-favouring average cheaply - luminances[offset] = (r + g2 + b) / 4; + luminances[offset] = ((r + g2 + b) / 4).try_into().unwrap(); } Self { luminances,