1572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams/*
2572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Copyright (C) 2011 The Android Open Source Project
3572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams *
4572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Licensed under the Apache License, Version 2.0 (the "License");
5572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * you may not use this file except in compliance with the License.
6572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * You may obtain a copy of the License at
7572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams *
8572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams *      http://www.apache.org/licenses/LICENSE-2.0
9572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams *
10572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * Unless required by applicable law or agreed to in writing, software
11572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * distributed under the License is distributed on an "AS IS" BASIS,
12572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * See the License for the specific language governing permissions and
14572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * limitations under the License.
15572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams */
16572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
17572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samspackage com.android.rs.image;
18572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
19572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport com.android.rs.image.ImageProcessingTestRunner;
20572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
21572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.os.Bundle;
22572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport com.android.rs.image.ImageProcessingActivity.TestName;
23572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
24572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.test.ActivityInstrumentationTestCase2;
25572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.test.suitebuilder.annotation.LargeTest;
26572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samsimport android.util.Log;
27572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
28572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams/**
29572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * ImageProcessing benchmark test.
30572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * To run the test, please use command
31572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams *
32572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams * adb shell am instrument -e iteration <n> -w com.android.rs.image/.ImageProcessingTestRunner
33572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams *
34572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams */
35572a5031a5d8602db0bec0b253428a034bd4dd59Jason Samspublic class ImageProcessingTest extends ActivityInstrumentationTestCase2<ImageProcessingActivity> {
36572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private final String TAG = "ImageProcessingTest";
37572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private final String TEST_NAME = "Testname";
38572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private final String ITERATIONS = "Iterations";
39572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private final String BENCHMARK = "Benchmark";
40572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private static int INSTRUMENTATION_IN_PROGRESS = 2;
41572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private int mIteration;
42572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    private ImageProcessingActivity mActivity;
43572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
44572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public ImageProcessingTest() {
45572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        super(ImageProcessingActivity.class);
46572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
47572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
48572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @Override
49572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void setUp() throws Exception {
50572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        super.setUp();
51572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        setActivityInitialTouchMode(false);
52572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        mActivity = getActivity();
53572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        ImageProcessingTestRunner mRunner = (ImageProcessingTestRunner) getInstrumentation();
54572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        mIteration = mRunner.mIteration;
55572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        assertTrue("please enter a valid iteration value", mIteration > 0);
56572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams   }
57572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
58572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @Override
59572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void tearDown() throws Exception {
60572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        super.tearDown();
61572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
62572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
63572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    class TestAction implements Runnable {
64572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestName mTestName;
65572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        float mResult;
66572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        public TestAction(TestName testName) {
67572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            mTestName = testName;
68572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        }
69572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        public void run() {
70572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            mActivity.changeTest(mTestName);
71572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            mResult = mActivity.getBenchmark();
72572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            Log.v(TAG, "Benchmark for test \"" + mTestName.toString() + "\" is: " + mResult);
73572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            synchronized(this) {
74572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams                this.notify();
75572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            }
76572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        }
77572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        public float getBenchmark() {
78572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            return mResult;
79572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        }
80572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
81572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
82572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Set the benchmark thread to run on ui thread
83572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Synchronized the thread such that the test will wait for the benchmark thread to finish
84572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void runOnUiThread(Runnable action) {
85572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        synchronized(action) {
86572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            mActivity.runOnUiThread(action);
87572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            try {
88572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams                action.wait();
89572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            } catch (InterruptedException e) {
90572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams                Log.v(TAG, "waiting for action running on UI thread is interrupted: " +
91572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams                        e.toString());
92572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            }
93572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        }
94572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
95572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
96572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void runTest(TestAction ta, String testName) {
97572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        float sum = 0;
98572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        for (int i = 0; i < mIteration; i++) {
99572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            runOnUiThread(ta);
100572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            float bmValue = ta.getBenchmark();
101572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            Log.v(TAG, "results for iteration " + i + " is " + bmValue);
102572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams            sum += bmValue;
103572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        }
104572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        float avgResult = sum/mIteration;
105572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
106572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        // post result to INSTRUMENTATION_STATUS
107572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        Bundle results = new Bundle();
108572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        results.putString(TEST_NAME, testName);
109572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        results.putInt(ITERATIONS, mIteration);
110572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        results.putFloat(BENCHMARK, avgResult);
111572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        getInstrumentation().sendStatus(INSTRUMENTATION_IN_PROGRESS, results);
112572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
113572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
114572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 0: Levels Vec3 Relaxed
115572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
116572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testLevelsVec3Relaxed() {
117572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.LEVELS_VEC3_RELAXED);
118572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.LEVELS_VEC3_RELAXED.name());
119572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
120572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
121572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 1: Levels Vec4 Relaxed
122572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
123572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testLevelsVec4Relaxed() {
124572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.LEVELS_VEC4_RELAXED);
125572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.LEVELS_VEC4_RELAXED.name());
126572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
127572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
128572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 2: Levels Vec3 Full
129572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
130572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testLevelsVec3Full() {
131572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.LEVELS_VEC3_FULL);
132572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.LEVELS_VEC3_FULL.name());
133572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
134572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
135572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 3: Levels Vec4 Full
136572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
137572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testLevelsVec4Full() {
138572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.LEVELS_VEC4_FULL);
139572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.LEVELS_VEC4_FULL.name());
140572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
141572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
142572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 4: Blur Radius 25
143572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
144572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testBlurRadius25() {
145572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.BLUR_RADIUS_25);
146572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.BLUR_RADIUS_25.name());
147572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
148572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
149572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 5: Intrinsic Blur Radius 25
150572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
151572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testIntrinsicBlurRadius25() {
152572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.INTRINSIC_BLUE_RADIUS_25);
153572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.INTRINSIC_BLUE_RADIUS_25.name());
154572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
155572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
156572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 6: Greyscale
157572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
158572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testGreyscale() {
159572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.GREYSCALE);
160572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.GREYSCALE.name());
161572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
162572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
163572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 7: Grain
164572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
165572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testGrain() {
166572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.GRAIN);
167572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.GRAIN.name());
168572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
169572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
170572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 8: Fisheye Full
171572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
172572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testFisheyeFull() {
173572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.FISHEYE_FULL);
174572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.FISHEYE_FULL.name());
175572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
176572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
177572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 9: Fisheye Relaxed
178572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
179572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testFishEyeRelaxed() {
180572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.FISHEYE_RELAXED);
181572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.FISHEYE_RELAXED.name());
182572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
183572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
184572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 10: Fisheye Approximate Full
185572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
186572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testFisheyeApproximateFull() {
187572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.FISHEYE_APPROXIMATE_FULL);
188572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.FISHEYE_APPROXIMATE_FULL.name());
189572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
190572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
191572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 11: Fisheye Approximate Relaxed
192572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
193572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testFisheyeApproximateRelaxed() {
194572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.FISHEYE_APPROXIMATE_RELAXED);
195572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.FISHEYE_APPROXIMATE_RELAXED.name());
196572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
197572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
198572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 12: Vignette Full
199572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
200572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testVignetteFull() {
201572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.VIGNETTE_FULL);
202572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.VIGNETTE_FULL.name());
203572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
204572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
205572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 13: Vignette Relaxed
206572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
207572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testVignetteRelaxed() {
208572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.VIGNETTE_RELAXED);
209572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.VIGNETTE_RELAXED.name());
210572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
211572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
212572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 14: Vignette Approximate Full
213572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
214572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testVignetteApproximateFull() {
215572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.VIGNETTE_APPROXIMATE_FULL);
216572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.VIGNETTE_APPROXIMATE_FULL.name());
217572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
218572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
219572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 15: Vignette Approximate Relaxed
220572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
221572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testVignetteApproximateRelaxed() {
222572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.VIGNETTE_APPROXIMATE_RELAXED);
223572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.VIGNETTE_APPROXIMATE_RELAXED.name());
224572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
225572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
226572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 16: Group Test (emulated)
227572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
228572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testGroupTestEmulated() {
229572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.GROUP_TEST_EMULATED);
230572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.GROUP_TEST_EMULATED.name());
231572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
232572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
233572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 17: Group Test (native)
234572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
235572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testGroupTestNative() {
236572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.GROUP_TEST_NATIVE);
237572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.GROUP_TEST_NATIVE.name());
238572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
239572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
240572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 18: Convolve 3x3
241572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
242572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testConvolve3x3() {
243572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.CONVOLVE_3X3);
244572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.CONVOLVE_3X3.name());
245572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
246572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
247572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 19: Intrinsics Convolve 3x3
248572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
249572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testIntrinsicsConvolve3x3() {
250572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.INTRINSICS_CONVOLVE_3X3);
251572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.INTRINSICS_CONVOLVE_3X3.name());
252572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
253572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
254572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 20: ColorMatrix
255572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
256572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testColorMatrix() {
257572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.COLOR_MATRIX);
258572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.COLOR_MATRIX.name());
259572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
260572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
261572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 21: Intrinsics ColorMatrix
262572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
263572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testIntrinsicsColorMatrix() {
264572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.INTRINSICS_COLOR_MATRIX);
265572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.INTRINSICS_COLOR_MATRIX.name());
266572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
267572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
268572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 22: Intrinsics ColorMatrix Grey
269572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
270572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testIntrinsicsColorMatrixGrey() {
271572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.INTRINSICS_COLOR_MATRIX_GREY);
272572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.INTRINSICS_COLOR_MATRIX_GREY.name());
273572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
274572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
275572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 23: Copy
276572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
277572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testCopy() {
278572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.COPY);
279572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.COPY.name());
280572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
281572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
282572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 24: CrossProcess (using LUT)
283572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
284572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testCrossProcessUsingLUT() {
285572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.CROSS_PROCESS_USING_LUT);
286572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.CROSS_PROCESS_USING_LUT.name());
287572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
288572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
289572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 25: Convolve 5x5
290572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
291572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testConvolve5x5() {
292572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.CONVOLVE_5X5);
293572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.CONVOLVE_5X5.name());
294572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
295572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
296572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 26: Intrinsics Convolve 5x5
297572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
298572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testIntrinsicsConvolve5x5() {
299572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.INTRINSICS_CONVOLVE_5X5);
300572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.INTRINSICS_CONVOLVE_5X5.name());
301572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
302572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
303572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 27: Mandelbrot
304572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
305572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testMandelbrot() {
30623e1074f29f431f68c6b3230c1315ea0f7c7bc86Jason Sams        TestAction ta = new TestAction(TestName.MANDELBROT_FLOAT);
30723e1074f29f431f68c6b3230c1315ea0f7c7bc86Jason Sams        runTest(ta, TestName.MANDELBROT_FLOAT.name());
308572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
309572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
310572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 28: Intrinsics Blend
311572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
312572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testIntrinsicsBlend() {
313572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.INTRINSICS_BLEND);
314572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.INTRINSICS_BLEND.name());
315572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
316572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
317572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 29: Intrinsics Blur 25 uchar
318572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
319572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testIntrinsicsBlur25G() {
320572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.INTRINSICS_BLUR_25G);
321572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.INTRINSICS_BLUR_25G.name());
322572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
323572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
324572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 30: Vibrance
325572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
326572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testVibrance() {
327572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.VIBRANCE);
328572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.VIBRANCE.name());
329572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
330572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
331572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 31: BWFilter
332572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
333572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testBWFilter() {
334572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.BW_FILTER);
335572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.BW_FILTER.name());
336572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
337572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
338572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 32: Shadows
339572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
340572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testShadows() {
341572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.SHADOWS);
342572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.SHADOWS.name());
343572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
344572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
345572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 33: Contrast
346572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
347572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testContrast() {
348572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.CONTRAST);
349572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.CONTRAST.name());
350572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
351572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
352572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 34: Exposure
353572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
354572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testExposure(){
355572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.EXPOSURE);
356572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.EXPOSURE.name());
357572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
358572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
359572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 35: White Balance
360572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
361572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testWhiteBalance() {
362572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.WHITE_BALANCE);
363572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.WHITE_BALANCE.name());
364572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
365572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
366572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 36: Color Cube
367572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
368572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testColorCube() {
369572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.COLOR_CUBE);
370572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.COLOR_CUBE.name());
371572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
372572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams
373572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    // Test case 37: Color Cube (3D Intrinsic)
374572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    @LargeTest
375572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    public void testColorCube3DIntrinsic() {
376572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        TestAction ta = new TestAction(TestName.COLOR_CUBE_3D_INTRINSIC);
377572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams        runTest(ta, TestName.COLOR_CUBE_3D_INTRINSIC.name());
378572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams    }
37905b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams
38005b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams    // Test case 38: Usage io
38105b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams    @LargeTest
38205b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams    public void testUsageIO() {
38305b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams        TestAction ta = new TestAction(TestName.USAGE_IO);
38405b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams        runTest(ta, TestName.USAGE_IO.name());
38505b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams    }
38605b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams
38705b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams    // Test case 39: Artistic 1
38805b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams    @LargeTest
38905b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams    public void testArtistic1() {
39005b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams        TestAction ta = new TestAction(TestName.ARTISTIC_1);
39105b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams        runTest(ta, TestName.ARTISTIC_1.name());
39205b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams    }
39305b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams
39405b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams    // Test case 40 Histogram
39505b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams    @LargeTest
39605b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams    public void testHistogram() {
39705b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams        TestAction ta = new TestAction(TestName.HISTOGRAM);
39805b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams        runTest(ta, TestName.HISTOGRAM.name());
39905b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams    }
40005b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams
40105b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams    // Test case 41: Mandelbrot fp64
40205b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams    @LargeTest
40305b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams    public void testMandelbrotfp64() {
40405b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams        TestAction ta = new TestAction(TestName.MANDELBROT_DOUBLE);
40505b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams        runTest(ta, TestName.MANDELBROT_DOUBLE.name());
40605b269323e6f28f244d74b00cd63d81d9f8a1db4Jason Sams    }
407da68eff288c8b403bc41c1fa856ca09d73f35e2fMiao Wang    // Test case 42: Mirror
408da68eff288c8b403bc41c1fa856ca09d73f35e2fMiao Wang    @LargeTest
409da68eff288c8b403bc41c1fa856ca09d73f35e2fMiao Wang    public void testMirror() {
410da68eff288c8b403bc41c1fa856ca09d73f35e2fMiao Wang        TestAction ta = new TestAction(TestName.MIRROR);
411da68eff288c8b403bc41c1fa856ca09d73f35e2fMiao Wang        runTest(ta, TestName.MIRROR.name());
412da68eff288c8b403bc41c1fa856ca09d73f35e2fMiao Wang    }
413572a5031a5d8602db0bec0b253428a034bd4dd59Jason Sams}
414