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 testPrepareMatrix() {
293189c037886fda47be73da9885e6760df50efd71Jason Noguchi        Matrix matrix = new Matrix();
303189c037886fda47be73da9885e6760df50efd71Jason Noguchi        float[] points;
313189c037886fda47be73da9885e6760df50efd71Jason Noguchi        int[] expected;
323189c037886fda47be73da9885e6760df50efd71Jason Noguchi
333189c037886fda47be73da9885e6760df50efd71Jason Noguchi        CameraUtil.prepareMatrix(matrix, false, 0, 800, 480);
343189c037886fda47be73da9885e6760df50efd71Jason Noguchi        points = new float[] {-1000, -1000, 0, 0, 1000, 1000, 0, 1000, -750, 250};
353189c037886fda47be73da9885e6760df50efd71Jason Noguchi        expected = new int[] {0, 0, 400, 240, 800, 480, 400, 480, 100, 300};
363189c037886fda47be73da9885e6760df50efd71Jason Noguchi        matrix.mapPoints(points);
373189c037886fda47be73da9885e6760df50efd71Jason Noguchi        assertEquals(expected, points);
383189c037886fda47be73da9885e6760df50efd71Jason Noguchi
393189c037886fda47be73da9885e6760df50efd71Jason Noguchi        CameraUtil.prepareMatrix(matrix, false, 90, 800, 480);
403189c037886fda47be73da9885e6760df50efd71Jason Noguchi        points = new float[] {-1000, -1000,   0,   0, 1000, 1000, 0, 1000, -750, 250};
413189c037886fda47be73da9885e6760df50efd71Jason Noguchi        expected = new int[] {800, 0, 400, 240, 0, 480, 0, 240, 300, 60};
423189c037886fda47be73da9885e6760df50efd71Jason Noguchi        matrix.mapPoints(points);
433189c037886fda47be73da9885e6760df50efd71Jason Noguchi        assertEquals(expected, points);
443189c037886fda47be73da9885e6760df50efd71Jason Noguchi
453189c037886fda47be73da9885e6760df50efd71Jason Noguchi        CameraUtil.prepareMatrix(matrix, false, 180, 800, 480);
463189c037886fda47be73da9885e6760df50efd71Jason Noguchi        points = new float[] {-1000, -1000, 0, 0, 1000, 1000, 0, 1000, -750, 250};
473189c037886fda47be73da9885e6760df50efd71Jason Noguchi        expected = new int[] {800, 480, 400, 240, 0, 0, 400, 0, 700, 180};
483189c037886fda47be73da9885e6760df50efd71Jason Noguchi        matrix.mapPoints(points);
493189c037886fda47be73da9885e6760df50efd71Jason Noguchi        assertEquals(expected, points);
503189c037886fda47be73da9885e6760df50efd71Jason Noguchi
513189c037886fda47be73da9885e6760df50efd71Jason Noguchi        CameraUtil.prepareMatrix(matrix, true, 180, 800, 480);
523189c037886fda47be73da9885e6760df50efd71Jason Noguchi        points = new float[] {-1000, -1000, 0, 0, 1000, 1000, 0, 1000, -750, 250};
533189c037886fda47be73da9885e6760df50efd71Jason Noguchi        expected = new int[] {0, 480, 400, 240, 800, 0, 400, 0, 100, 180};
543189c037886fda47be73da9885e6760df50efd71Jason Noguchi        matrix.mapPoints(points);
553189c037886fda47be73da9885e6760df50efd71Jason Noguchi        assertEquals(expected, points);
563189c037886fda47be73da9885e6760df50efd71Jason Noguchi    }
573189c037886fda47be73da9885e6760df50efd71Jason Noguchi
583189c037886fda47be73da9885e6760df50efd71Jason Noguchi    private void assertEquals(int expected[], float[] actual) {
593189c037886fda47be73da9885e6760df50efd71Jason Noguchi        for (int i = 0; i < expected.length; i++) {
603189c037886fda47be73da9885e6760df50efd71Jason Noguchi            assertEquals("Array index " + i + " mismatch", expected[i], Math.round(actual[i]));
613189c037886fda47be73da9885e6760df50efd71Jason Noguchi        }
623189c037886fda47be73da9885e6760df50efd71Jason Noguchi    }
633189c037886fda47be73da9885e6760df50efd71Jason Noguchi}
64