/* * 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; public final class PlanarYUVLuminanceSourceTestCase extends Assert { private static final byte[] YUV = { 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 0, -1, -1, -2, -3, -5, -8, -13, -21, -34, -55, -89, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, }; private static final int COLS = 6; private static final int ROWS = 4; private static final byte[] Y = new byte[COLS * ROWS]; static { System.arraycopy(YUV, 0, Y, 0, Y.length); } @Test public void testNoCrop() { PlanarYUVLuminanceSource source = new PlanarYUVLuminanceSource(YUV, COLS, ROWS, 0, 0, COLS, ROWS, false); assertEquals(Y, 0, source.getMatrix(), 0, Y.length); for (int r = 0; r < ROWS; r++) { assertEquals(Y, r * COLS, source.getRow(r, null), 0, COLS); } } @Test public void testCrop() { PlanarYUVLuminanceSource source = new PlanarYUVLuminanceSource(YUV, COLS, ROWS, 1, 1, COLS - 2, ROWS - 2, false); assertTrue(source.isCropSupported()); byte[] cropMatrix = source.getMatrix(); for (int r = 0; r < ROWS - 2; r++) { assertEquals(Y, (r + 1) * COLS + 1, cropMatrix, r * (COLS - 2), COLS - 2); } for (int r = 0; r < ROWS - 2; r++) { assertEquals(Y, (r + 1) * COLS + 1, source.getRow(r, null), 0, COLS - 2); } } @Test public void testThumbnail() { PlanarYUVLuminanceSource source = new PlanarYUVLuminanceSource(YUV, COLS, ROWS, 0, 0, COLS, ROWS, false); assertArrayEquals( new int[] { 0xFF000000, 0xFF010101, 0xFF030303, 0xFF000000, 0xFFFFFFFF, 0xFFFDFDFD }, source.renderThumbnail()); } private static void assertEquals(byte[] expected, int expectedFrom, byte[] actual, int actualFrom, int length) { for (int i = 0; i < length; i++) { assertEquals(expected[expectedFrom + i], actual[actualFrom + i]); } } }