13189c037886fda47be73da9885e6760df50efd71Jason Noguchi/* 23189c037886fda47be73da9885e6760df50efd71Jason Noguchi * Copyright (C) 2010 The Android Open Source Project 33189c037886fda47be73da9885e6760df50efd71Jason Noguchi * 43189c037886fda47be73da9885e6760df50efd71Jason Noguchi * Licensed under the Apache License, Version 2.0 (the "License"); 53189c037886fda47be73da9885e6760df50efd71Jason Noguchi * you may not use this file except in compliance with the License. 63189c037886fda47be73da9885e6760df50efd71Jason Noguchi * You may obtain a copy of the License at 73189c037886fda47be73da9885e6760df50efd71Jason Noguchi * 83189c037886fda47be73da9885e6760df50efd71Jason Noguchi * http://www.apache.org/licenses/LICENSE-2.0 93189c037886fda47be73da9885e6760df50efd71Jason Noguchi * 103189c037886fda47be73da9885e6760df50efd71Jason Noguchi * Unless required by applicable law or agreed to in writing, software 113189c037886fda47be73da9885e6760df50efd71Jason Noguchi * distributed under the License is distributed on an "AS IS" BASIS, 123189c037886fda47be73da9885e6760df50efd71Jason Noguchi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133189c037886fda47be73da9885e6760df50efd71Jason Noguchi * See the License for the specific language governing permissions and 143189c037886fda47be73da9885e6760df50efd71Jason Noguchi * limitations under the License. 153189c037886fda47be73da9885e6760df50efd71Jason Noguchi */ 163189c037886fda47be73da9885e6760df50efd71Jason Noguchi 173189c037886fda47be73da9885e6760df50efd71Jason Noguchipackage com.android.camera.unittest; 183189c037886fda47be73da9885e6760df50efd71Jason Noguchi 193189c037886fda47be73da9885e6760df50efd71Jason Noguchiimport com.android.camera.util.CameraUtil; 203189c037886fda47be73da9885e6760df50efd71Jason Noguchi 213189c037886fda47be73da9885e6760df50efd71Jason Noguchiimport android.graphics.Matrix; 223189c037886fda47be73da9885e6760df50efd71Jason Noguchiimport android.test.suitebuilder.annotation.SmallTest; 233189c037886fda47be73da9885e6760df50efd71Jason Noguchi 243189c037886fda47be73da9885e6760df50efd71Jason Noguchiimport junit.framework.TestCase; 253189c037886fda47be73da9885e6760df50efd71Jason Noguchi 263189c037886fda47be73da9885e6760df50efd71Jason Noguchi@SmallTest 273189c037886fda47be73da9885e6760df50efd71Jason Noguchipublic class CameraUnitTest extends TestCase { 283189c037886fda47be73da9885e6760df50efd71Jason Noguchi public void testRoundOrientation() { 293189c037886fda47be73da9885e6760df50efd71Jason Noguchi int h = CameraUtil.ORIENTATION_HYSTERESIS; 303189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(0, CameraUtil.roundOrientation(0, 0)); 313189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(0, CameraUtil.roundOrientation(359, 0)); 323189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(0, CameraUtil.roundOrientation(0 + 44 + h, 0)); 333189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(90, CameraUtil.roundOrientation(0 + 45 + h, 0)); 343189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(0, CameraUtil.roundOrientation(360 - 44 - h, 0)); 353189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(270, CameraUtil.roundOrientation(360 - 45 - h, 0)); 363189c037886fda47be73da9885e6760df50efd71Jason Noguchi 373189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(90, CameraUtil.roundOrientation(90, 90)); 383189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(90, CameraUtil.roundOrientation(90 + 44 + h, 90)); 393189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(180, CameraUtil.roundOrientation(90 + 45 + h, 90)); 403189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(90, CameraUtil.roundOrientation(90 - 44 - h, 90)); 413189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(0, CameraUtil.roundOrientation(90 - 45 - h, 90)); 423189c037886fda47be73da9885e6760df50efd71Jason Noguchi 433189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(180, CameraUtil.roundOrientation(180, 180)); 443189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(180, CameraUtil.roundOrientation(180 + 44 + h, 180)); 453189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(270, CameraUtil.roundOrientation(180 + 45 + h, 180)); 463189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(180, CameraUtil.roundOrientation(180 - 44 - h, 180)); 473189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(90, CameraUtil.roundOrientation(180 - 45 - h, 180)); 483189c037886fda47be73da9885e6760df50efd71Jason Noguchi 493189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(270, CameraUtil.roundOrientation(270, 270)); 503189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(270, CameraUtil.roundOrientation(270 + 44 + h, 270)); 513189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(0, CameraUtil.roundOrientation(270 + 45 + h, 270)); 523189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(270, CameraUtil.roundOrientation(270 - 44 - h, 270)); 533189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(180, CameraUtil.roundOrientation(270 - 45 - h, 270)); 543189c037886fda47be73da9885e6760df50efd71Jason Noguchi 553189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(90, CameraUtil.roundOrientation(90, 0)); 563189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(180, CameraUtil.roundOrientation(180, 0)); 573189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(270, CameraUtil.roundOrientation(270, 0)); 583189c037886fda47be73da9885e6760df50efd71Jason Noguchi 593189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(0, CameraUtil.roundOrientation(0, 90)); 603189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(180, CameraUtil.roundOrientation(180, 90)); 613189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(270, CameraUtil.roundOrientation(270, 90)); 623189c037886fda47be73da9885e6760df50efd71Jason Noguchi 633189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(0, CameraUtil.roundOrientation(0, 180)); 643189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(90, CameraUtil.roundOrientation(90, 180)); 653189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(270, CameraUtil.roundOrientation(270, 180)); 663189c037886fda47be73da9885e6760df50efd71Jason Noguchi 673189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(0, CameraUtil.roundOrientation(0, 270)); 683189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(90, CameraUtil.roundOrientation(90, 270)); 693189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(180, CameraUtil.roundOrientation(180, 270)); 703189c037886fda47be73da9885e6760df50efd71Jason Noguchi } 713189c037886fda47be73da9885e6760df50efd71Jason Noguchi 723189c037886fda47be73da9885e6760df50efd71Jason Noguchi public void testPrepareMatrix() { 733189c037886fda47be73da9885e6760df50efd71Jason Noguchi Matrix matrix = new Matrix(); 743189c037886fda47be73da9885e6760df50efd71Jason Noguchi float[] points; 753189c037886fda47be73da9885e6760df50efd71Jason Noguchi int[] expected; 763189c037886fda47be73da9885e6760df50efd71Jason Noguchi 773189c037886fda47be73da9885e6760df50efd71Jason Noguchi CameraUtil.prepareMatrix(matrix, false, 0, 800, 480); 783189c037886fda47be73da9885e6760df50efd71Jason Noguchi points = new float[] {-1000, -1000, 0, 0, 1000, 1000, 0, 1000, -750, 250}; 793189c037886fda47be73da9885e6760df50efd71Jason Noguchi expected = new int[] {0, 0, 400, 240, 800, 480, 400, 480, 100, 300}; 803189c037886fda47be73da9885e6760df50efd71Jason Noguchi matrix.mapPoints(points); 813189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(expected, points); 823189c037886fda47be73da9885e6760df50efd71Jason Noguchi 833189c037886fda47be73da9885e6760df50efd71Jason Noguchi CameraUtil.prepareMatrix(matrix, false, 90, 800, 480); 843189c037886fda47be73da9885e6760df50efd71Jason Noguchi points = new float[] {-1000, -1000, 0, 0, 1000, 1000, 0, 1000, -750, 250}; 853189c037886fda47be73da9885e6760df50efd71Jason Noguchi expected = new int[] {800, 0, 400, 240, 0, 480, 0, 240, 300, 60}; 863189c037886fda47be73da9885e6760df50efd71Jason Noguchi matrix.mapPoints(points); 873189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(expected, points); 883189c037886fda47be73da9885e6760df50efd71Jason Noguchi 893189c037886fda47be73da9885e6760df50efd71Jason Noguchi CameraUtil.prepareMatrix(matrix, false, 180, 800, 480); 903189c037886fda47be73da9885e6760df50efd71Jason Noguchi points = new float[] {-1000, -1000, 0, 0, 1000, 1000, 0, 1000, -750, 250}; 913189c037886fda47be73da9885e6760df50efd71Jason Noguchi expected = new int[] {800, 480, 400, 240, 0, 0, 400, 0, 700, 180}; 923189c037886fda47be73da9885e6760df50efd71Jason Noguchi matrix.mapPoints(points); 933189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(expected, points); 943189c037886fda47be73da9885e6760df50efd71Jason Noguchi 953189c037886fda47be73da9885e6760df50efd71Jason Noguchi CameraUtil.prepareMatrix(matrix, true, 180, 800, 480); 963189c037886fda47be73da9885e6760df50efd71Jason Noguchi points = new float[] {-1000, -1000, 0, 0, 1000, 1000, 0, 1000, -750, 250}; 973189c037886fda47be73da9885e6760df50efd71Jason Noguchi expected = new int[] {0, 480, 400, 240, 800, 0, 400, 0, 100, 180}; 983189c037886fda47be73da9885e6760df50efd71Jason Noguchi matrix.mapPoints(points); 993189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals(expected, points); 1003189c037886fda47be73da9885e6760df50efd71Jason Noguchi } 1013189c037886fda47be73da9885e6760df50efd71Jason Noguchi 1023189c037886fda47be73da9885e6760df50efd71Jason Noguchi private void assertEquals(int expected[], float[] actual) { 1033189c037886fda47be73da9885e6760df50efd71Jason Noguchi for (int i = 0; i < expected.length; i++) { 1043189c037886fda47be73da9885e6760df50efd71Jason Noguchi assertEquals("Array index " + i + " mismatch", expected[i], Math.round(actual[i])); 1053189c037886fda47be73da9885e6760df50efd71Jason Noguchi } 1063189c037886fda47be73da9885e6760df50efd71Jason Noguchi } 1073189c037886fda47be73da9885e6760df50efd71Jason Noguchi} 108