1721a5a24e2278f4012109865d62b98190b3185afJason Sams/*
2721a5a24e2278f4012109865d62b98190b3185afJason Sams * Copyright (C) 2011 The Android Open Source Project
3721a5a24e2278f4012109865d62b98190b3185afJason Sams *
4721a5a24e2278f4012109865d62b98190b3185afJason Sams * Licensed under the Apache License, Version 2.0 (the "License");
5721a5a24e2278f4012109865d62b98190b3185afJason Sams * you may not use this file except in compliance with the License.
6721a5a24e2278f4012109865d62b98190b3185afJason Sams * You may obtain a copy of the License at
7721a5a24e2278f4012109865d62b98190b3185afJason Sams *
8721a5a24e2278f4012109865d62b98190b3185afJason Sams *      http://www.apache.org/licenses/LICENSE-2.0
9721a5a24e2278f4012109865d62b98190b3185afJason Sams *
10721a5a24e2278f4012109865d62b98190b3185afJason Sams * Unless required by applicable law or agreed to in writing, software
11721a5a24e2278f4012109865d62b98190b3185afJason Sams * distributed under the License is distributed on an "AS IS" BASIS,
12721a5a24e2278f4012109865d62b98190b3185afJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13721a5a24e2278f4012109865d62b98190b3185afJason Sams * See the License for the specific language governing permissions and
14721a5a24e2278f4012109865d62b98190b3185afJason Sams * limitations under the License.
15721a5a24e2278f4012109865d62b98190b3185afJason Sams */
16721a5a24e2278f4012109865d62b98190b3185afJason Sams
17721a5a24e2278f4012109865d62b98190b3185afJason Samspackage com.android.rs.imagejb;
18721a5a24e2278f4012109865d62b98190b3185afJason Sams
19721a5a24e2278f4012109865d62b98190b3185afJason Sams
20721a5a24e2278f4012109865d62b98190b3185afJason Samsimport android.os.Bundle;
21721a5a24e2278f4012109865d62b98190b3185afJason Samsimport android.util.Log;
22f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wangimport android.app.Activity;
23721a5a24e2278f4012109865d62b98190b3185afJason Sams
24721a5a24e2278f4012109865d62b98190b3185afJason Samsimport com.android.rs.imagejb.IPTestListJB.TestName;
25721a5a24e2278f4012109865d62b98190b3185afJason Sams
26721a5a24e2278f4012109865d62b98190b3185afJason Samsimport android.test.ActivityInstrumentationTestCase2;
27f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wangimport android.test.suitebuilder.annotation.MediumTest;
28721a5a24e2278f4012109865d62b98190b3185afJason Sams
294a40b82759be72849f83c103b77f20ea29e160e5Michael Butlerimport android.os.Environment;
304a40b82759be72849f83c103b77f20ea29e160e5Michael Butlerimport java.io.BufferedWriter;
314a40b82759be72849f83c103b77f20ea29e160e5Michael Butlerimport java.io.File;
324a40b82759be72849f83c103b77f20ea29e160e5Michael Butlerimport java.io.FileWriter;
334a40b82759be72849f83c103b77f20ea29e160e5Michael Butlerimport java.io.IOException;
344a40b82759be72849f83c103b77f20ea29e160e5Michael Butler
35721a5a24e2278f4012109865d62b98190b3185afJason Sams/**
36721a5a24e2278f4012109865d62b98190b3185afJason Sams * ImageProcessing benchmark test.
37721a5a24e2278f4012109865d62b98190b3185afJason Sams * To run the test, please use command
38721a5a24e2278f4012109865d62b98190b3185afJason Sams *
39f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang * adb shell am instrument -w com.android.rs.imagejb/android.support.test.runner.AndroidJUnitRunner
40721a5a24e2278f4012109865d62b98190b3185afJason Sams *
41721a5a24e2278f4012109865d62b98190b3185afJason Sams */
42721a5a24e2278f4012109865d62b98190b3185afJason Samspublic class ImageProcessingTest extends ActivityInstrumentationTestCase2<ImageProcessingActivityJB> {
43721a5a24e2278f4012109865d62b98190b3185afJason Sams    private final String TAG = "ImageProcessingTest";
44f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    // Only run 1 iteration now to fit the MediumTest time requirement.
45f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    // One iteration means running the tests continuous for 1s.
46721a5a24e2278f4012109865d62b98190b3185afJason Sams    private ImageProcessingActivityJB mActivity;
47721a5a24e2278f4012109865d62b98190b3185afJason Sams
48721a5a24e2278f4012109865d62b98190b3185afJason Sams    public ImageProcessingTest() {
49721a5a24e2278f4012109865d62b98190b3185afJason Sams        super(ImageProcessingActivityJB.class);
50721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
51721a5a24e2278f4012109865d62b98190b3185afJason Sams
52721a5a24e2278f4012109865d62b98190b3185afJason Sams
53f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    // Initialize the parameter for ImageProcessingActivityJB.
54f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    protected void prepareTest() {
55f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang        mActivity = getActivity();
56f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang        mActivity.prepareInstrumentationTest();
57721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
58721a5a24e2278f4012109865d62b98190b3185afJason Sams
59721a5a24e2278f4012109865d62b98190b3185afJason Sams    @Override
60721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void setUp() throws Exception {
61721a5a24e2278f4012109865d62b98190b3185afJason Sams        super.setUp();
62f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang        prepareTest();
63721a5a24e2278f4012109865d62b98190b3185afJason Sams        setActivityInitialTouchMode(false);
64721a5a24e2278f4012109865d62b98190b3185afJason Sams   }
65721a5a24e2278f4012109865d62b98190b3185afJason Sams
66721a5a24e2278f4012109865d62b98190b3185afJason Sams    @Override
67721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void tearDown() throws Exception {
684a40b82759be72849f83c103b77f20ea29e160e5Michael Butler        if (mActivity.mProcessor != null) {
694a40b82759be72849f83c103b77f20ea29e160e5Michael Butler            mActivity.mProcessor.exit();
704a40b82759be72849f83c103b77f20ea29e160e5Michael Butler            mActivity.mProcessor = null;
714a40b82759be72849f83c103b77f20ea29e160e5Michael Butler        }
72721a5a24e2278f4012109865d62b98190b3185afJason Sams        super.tearDown();
73721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
74721a5a24e2278f4012109865d62b98190b3185afJason Sams
75721a5a24e2278f4012109865d62b98190b3185afJason Sams    class TestAction implements Runnable {
764a40b82759be72849f83c103b77f20ea29e160e5Michael Butler        private TestName mTestName;
774a40b82759be72849f83c103b77f20ea29e160e5Michael Butler        private Result mResult;
78721a5a24e2278f4012109865d62b98190b3185afJason Sams        public TestAction(TestName testName) {
79721a5a24e2278f4012109865d62b98190b3185afJason Sams            mTestName = testName;
80721a5a24e2278f4012109865d62b98190b3185afJason Sams        }
81721a5a24e2278f4012109865d62b98190b3185afJason Sams        public void run() {
82f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang            mResult = mActivity.mProcessor.getInstrumentationResult(mTestName);
834a40b82759be72849f83c103b77f20ea29e160e5Michael Butler            Log.v(TAG, "Benchmark for test \"" + mTestName.toString() + "\" is: " +
844a40b82759be72849f83c103b77f20ea29e160e5Michael Butler                    mResult.getAvg() * 1000.f);
85721a5a24e2278f4012109865d62b98190b3185afJason Sams            synchronized(this) {
86721a5a24e2278f4012109865d62b98190b3185afJason Sams                this.notify();
87721a5a24e2278f4012109865d62b98190b3185afJason Sams            }
88721a5a24e2278f4012109865d62b98190b3185afJason Sams        }
894a40b82759be72849f83c103b77f20ea29e160e5Michael Butler        public Result getBenchmark() {
90721a5a24e2278f4012109865d62b98190b3185afJason Sams            return mResult;
91721a5a24e2278f4012109865d62b98190b3185afJason Sams        }
92721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
93721a5a24e2278f4012109865d62b98190b3185afJason Sams
94721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Set the benchmark thread to run on ui thread
95721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Synchronized the thread such that the test will wait for the benchmark thread to finish
96721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void runOnUiThread(Runnable action) {
97721a5a24e2278f4012109865d62b98190b3185afJason Sams        synchronized(action) {
98721a5a24e2278f4012109865d62b98190b3185afJason Sams            mActivity.runOnUiThread(action);
99721a5a24e2278f4012109865d62b98190b3185afJason Sams            try {
100721a5a24e2278f4012109865d62b98190b3185afJason Sams                action.wait();
101721a5a24e2278f4012109865d62b98190b3185afJason Sams            } catch (InterruptedException e) {
102721a5a24e2278f4012109865d62b98190b3185afJason Sams                Log.v(TAG, "waiting for action running on UI thread is interrupted: " +
103721a5a24e2278f4012109865d62b98190b3185afJason Sams                        e.toString());
104721a5a24e2278f4012109865d62b98190b3185afJason Sams            }
105721a5a24e2278f4012109865d62b98190b3185afJason Sams        }
106721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
107721a5a24e2278f4012109865d62b98190b3185afJason Sams
108f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    // TODO: Report more info: mean, median, std, etc.
109721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void runTest(TestAction ta, String testName) {
1104a40b82759be72849f83c103b77f20ea29e160e5Michael Butler        runOnUiThread(ta);
1114a40b82759be72849f83c103b77f20ea29e160e5Michael Butler        Result times = ta.getBenchmark();
112721a5a24e2278f4012109865d62b98190b3185afJason Sams
113721a5a24e2278f4012109865d62b98190b3185afJason Sams        // post result to INSTRUMENTATION_STATUS
114721a5a24e2278f4012109865d62b98190b3185afJason Sams        Bundle results = new Bundle();
1154a40b82759be72849f83c103b77f20ea29e160e5Michael Butler        results.putFloat(testName + "_avg", times.getAvg() * 1000.0f); // ms
1164a40b82759be72849f83c103b77f20ea29e160e5Michael Butler        results.putFloat(testName + "_stdevp", times.getStdevp() * 1000.0f); // ms
1174a40b82759be72849f83c103b77f20ea29e160e5Michael Butler        results.putFloat(testName + "_stdcoef", times.getStdCoef() * 100.0f); // %
118f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang        getInstrumentation().sendStatus(Activity.RESULT_OK, results);
1194a40b82759be72849f83c103b77f20ea29e160e5Michael Butler
1204a40b82759be72849f83c103b77f20ea29e160e5Michael Butler        // save the runtime distribution to a file on the sdcard so a script can plot it
1214a40b82759be72849f83c103b77f20ea29e160e5Michael Butler        writeResults("rsTimes/", testName + "_DATA.txt", times);
1224a40b82759be72849f83c103b77f20ea29e160e5Michael Butler    }
1234a40b82759be72849f83c103b77f20ea29e160e5Michael Butler
1244a40b82759be72849f83c103b77f20ea29e160e5Michael Butler    private void writeResults(String directory, String filename, Result times) {
1254a40b82759be72849f83c103b77f20ea29e160e5Michael Butler        // write result into a file
1264a40b82759be72849f83c103b77f20ea29e160e5Michael Butler        File externalStorage = Environment.getExternalStorageDirectory();
1274a40b82759be72849f83c103b77f20ea29e160e5Michael Butler        if (!externalStorage.canWrite()) {
1284a40b82759be72849f83c103b77f20ea29e160e5Michael Butler            Log.v(TAG, "sdcard is not writable");
1294a40b82759be72849f83c103b77f20ea29e160e5Michael Butler            return;
1304a40b82759be72849f83c103b77f20ea29e160e5Michael Butler        }
1314a40b82759be72849f83c103b77f20ea29e160e5Michael Butler        File resultDirectory = new File(externalStorage, directory);
1324a40b82759be72849f83c103b77f20ea29e160e5Michael Butler        resultDirectory.mkdirs();
1334a40b82759be72849f83c103b77f20ea29e160e5Michael Butler        File resultFile = new File(externalStorage, directory + filename);
1344a40b82759be72849f83c103b77f20ea29e160e5Michael Butler        resultFile.setWritable(true, false);
1354a40b82759be72849f83c103b77f20ea29e160e5Michael Butler        try {
1364a40b82759be72849f83c103b77f20ea29e160e5Michael Butler            BufferedWriter rsWriter = new BufferedWriter(new FileWriter(resultFile));
1374a40b82759be72849f83c103b77f20ea29e160e5Michael Butler            Log.v(TAG, "Saved results in: " + resultFile.getAbsolutePath());
1384a40b82759be72849f83c103b77f20ea29e160e5Michael Butler
1394a40b82759be72849f83c103b77f20ea29e160e5Michael Butler            float[] datapoints = times.getTimes();
1404a40b82759be72849f83c103b77f20ea29e160e5Michael Butler            for (int i = 0; i < times.getIterations(); i++) {
1414a40b82759be72849f83c103b77f20ea29e160e5Michael Butler                rsWriter.write(String.format("%d %f\n", i, datapoints[i] * 1000.0));
1424a40b82759be72849f83c103b77f20ea29e160e5Michael Butler            }
1434a40b82759be72849f83c103b77f20ea29e160e5Michael Butler            rsWriter.close();
1444a40b82759be72849f83c103b77f20ea29e160e5Michael Butler        } catch (IOException e) {
1454a40b82759be72849f83c103b77f20ea29e160e5Michael Butler            Log.v(TAG, "Unable to write result file " + e.getMessage());
1464a40b82759be72849f83c103b77f20ea29e160e5Michael Butler        }
147721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
148721a5a24e2278f4012109865d62b98190b3185afJason Sams
149721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 0: Levels Vec3 Relaxed
150f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
151721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testLevelsVec3Relaxed() {
152721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.LEVELS_VEC3_RELAXED);
153721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.LEVELS_VEC3_RELAXED.name());
154721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
155721a5a24e2278f4012109865d62b98190b3185afJason Sams
156721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 1: Levels Vec4 Relaxed
157f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
158721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testLevelsVec4Relaxed() {
159721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.LEVELS_VEC4_RELAXED);
160721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.LEVELS_VEC4_RELAXED.name());
161721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
162721a5a24e2278f4012109865d62b98190b3185afJason Sams
163721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 2: Levels Vec3 Full
164f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
165721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testLevelsVec3Full() {
166721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.LEVELS_VEC3_FULL);
167721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.LEVELS_VEC3_FULL.name());
168721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
169721a5a24e2278f4012109865d62b98190b3185afJason Sams
170721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 3: Levels Vec4 Full
171f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
172721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testLevelsVec4Full() {
173721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.LEVELS_VEC4_FULL);
174721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.LEVELS_VEC4_FULL.name());
175721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
176721a5a24e2278f4012109865d62b98190b3185afJason Sams
177721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 4: Blur Radius 25
178f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
179721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testBlurRadius25() {
180721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.BLUR_RADIUS_25);
181721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.BLUR_RADIUS_25.name());
182721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
183721a5a24e2278f4012109865d62b98190b3185afJason Sams
184721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 5: Intrinsic Blur Radius 25
185f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
186721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testIntrinsicBlurRadius25() {
187721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.INTRINSIC_BLUR_RADIUS_25);
188721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.INTRINSIC_BLUR_RADIUS_25.name());
189721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
190721a5a24e2278f4012109865d62b98190b3185afJason Sams
191721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 6: Greyscale
192f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
193721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testGreyscale() {
194721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.GREYSCALE);
195721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.GREYSCALE.name());
196721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
197721a5a24e2278f4012109865d62b98190b3185afJason Sams
198721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 7: Grain
199f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
200721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testGrain() {
201721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.GRAIN);
202721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.GRAIN.name());
203721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
204721a5a24e2278f4012109865d62b98190b3185afJason Sams
205721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 8: Fisheye Full
206f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
207721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testFisheyeFull() {
208721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.FISHEYE_FULL);
209721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.FISHEYE_FULL.name());
210721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
211721a5a24e2278f4012109865d62b98190b3185afJason Sams
212721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 9: Fisheye Relaxed
213f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
214721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testFishEyeRelaxed() {
215721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.FISHEYE_RELAXED);
216721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.FISHEYE_RELAXED.name());
217721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
218721a5a24e2278f4012109865d62b98190b3185afJason Sams
219721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 10: Fisheye Approximate Full
220f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
221721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testFisheyeApproximateFull() {
222721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.FISHEYE_APPROXIMATE_FULL);
223721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.FISHEYE_APPROXIMATE_FULL.name());
224721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
225721a5a24e2278f4012109865d62b98190b3185afJason Sams
226721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 11: Fisheye Approximate Relaxed
227f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
228721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testFisheyeApproximateRelaxed() {
229721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.FISHEYE_APPROXIMATE_RELAXED);
230721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.FISHEYE_APPROXIMATE_RELAXED.name());
231721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
232721a5a24e2278f4012109865d62b98190b3185afJason Sams
233721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 12: Vignette Full
234f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
235721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testVignetteFull() {
236721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.VIGNETTE_FULL);
237721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.VIGNETTE_FULL.name());
238721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
239721a5a24e2278f4012109865d62b98190b3185afJason Sams
240721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 13: Vignette Relaxed
241f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
242721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testVignetteRelaxed() {
243721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.VIGNETTE_RELAXED);
244721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.VIGNETTE_RELAXED.name());
245721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
246721a5a24e2278f4012109865d62b98190b3185afJason Sams
247721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 14: Vignette Approximate Full
248f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
249721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testVignetteApproximateFull() {
250721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.VIGNETTE_APPROXIMATE_FULL);
251721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.VIGNETTE_APPROXIMATE_FULL.name());
252721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
253721a5a24e2278f4012109865d62b98190b3185afJason Sams
254721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 15: Vignette Approximate Relaxed
255f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
256721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testVignetteApproximateRelaxed() {
257721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.VIGNETTE_APPROXIMATE_RELAXED);
258721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.VIGNETTE_APPROXIMATE_RELAXED.name());
259721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
260721a5a24e2278f4012109865d62b98190b3185afJason Sams
261721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 16: Group Test (emulated)
262f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
263721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testGroupTestEmulated() {
264721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.GROUP_TEST_EMULATED);
265721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.GROUP_TEST_EMULATED.name());
266721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
267721a5a24e2278f4012109865d62b98190b3185afJason Sams
268721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 17: Group Test (native)
269f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
270721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testGroupTestNative() {
271721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.GROUP_TEST_NATIVE);
272721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.GROUP_TEST_NATIVE.name());
273721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
274721a5a24e2278f4012109865d62b98190b3185afJason Sams
275721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 18: Convolve 3x3
276f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
277721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testConvolve3x3() {
278721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.CONVOLVE_3X3);
279721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.CONVOLVE_3X3.name());
280721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
281721a5a24e2278f4012109865d62b98190b3185afJason Sams
282721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 19: Intrinsics Convolve 3x3
283f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
284721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testIntrinsicsConvolve3x3() {
285721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.INTRINSICS_CONVOLVE_3X3);
286721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.INTRINSICS_CONVOLVE_3X3.name());
287721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
288721a5a24e2278f4012109865d62b98190b3185afJason Sams
289721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 20: ColorMatrix
290f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
291721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testColorMatrix() {
292721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.COLOR_MATRIX);
293721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.COLOR_MATRIX.name());
294721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
295721a5a24e2278f4012109865d62b98190b3185afJason Sams
296721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 21: Intrinsics ColorMatrix
297f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
298721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testIntrinsicsColorMatrix() {
299721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.INTRINSICS_COLOR_MATRIX);
300721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.INTRINSICS_COLOR_MATRIX.name());
301721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
302721a5a24e2278f4012109865d62b98190b3185afJason Sams
303721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 22: Intrinsics ColorMatrix Grey
304f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
305721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testIntrinsicsColorMatrixGrey() {
306721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.INTRINSICS_COLOR_MATRIX_GREY);
307721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.INTRINSICS_COLOR_MATRIX_GREY.name());
308721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
309721a5a24e2278f4012109865d62b98190b3185afJason Sams
310721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 23: Copy
311f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
312721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testCopy() {
313721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.COPY);
314721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.COPY.name());
315721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
316721a5a24e2278f4012109865d62b98190b3185afJason Sams
317721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 24: CrossProcess (using LUT)
318f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
319721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testCrossProcessUsingLUT() {
320721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.CROSS_PROCESS_USING_LUT);
321721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.CROSS_PROCESS_USING_LUT.name());
322721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
323721a5a24e2278f4012109865d62b98190b3185afJason Sams
324721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 25: Convolve 5x5
325f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
326721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testConvolve5x5() {
327721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.CONVOLVE_5X5);
328721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.CONVOLVE_5X5.name());
329721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
330721a5a24e2278f4012109865d62b98190b3185afJason Sams
331721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 26: Intrinsics Convolve 5x5
332f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
333721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testIntrinsicsConvolve5x5() {
334721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.INTRINSICS_CONVOLVE_5X5);
335721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.INTRINSICS_CONVOLVE_5X5.name());
336721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
337721a5a24e2278f4012109865d62b98190b3185afJason Sams
338721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 27: Mandelbrot
339f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
340721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testMandelbrot() {
341721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.MANDELBROT_FLOAT);
342721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.MANDELBROT_FLOAT.name());
343721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
344721a5a24e2278f4012109865d62b98190b3185afJason Sams
345721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 28: Intrinsics Blend
346f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
347721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testIntrinsicsBlend() {
348721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.INTRINSICS_BLEND);
349721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.INTRINSICS_BLEND.name());
350721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
351721a5a24e2278f4012109865d62b98190b3185afJason Sams
352721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 29: Intrinsics Blur 25 uchar
353f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
354721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testIntrinsicsBlur25G() {
355721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.INTRINSICS_BLUR_25G);
356721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.INTRINSICS_BLUR_25G.name());
357721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
358721a5a24e2278f4012109865d62b98190b3185afJason Sams
359721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 30: Vibrance
360f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
361721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testVibrance() {
362721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.VIBRANCE);
363721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.VIBRANCE.name());
364721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
365721a5a24e2278f4012109865d62b98190b3185afJason Sams
366721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 31: BWFilter
367f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
368721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testBWFilter() {
369721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.BW_FILTER);
370721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.BW_FILTER.name());
371721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
372721a5a24e2278f4012109865d62b98190b3185afJason Sams
373721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 32: Shadows
374f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
375721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testShadows() {
376721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.SHADOWS);
377721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.SHADOWS.name());
378721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
379721a5a24e2278f4012109865d62b98190b3185afJason Sams
380721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 33: Contrast
381f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
382721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testContrast() {
383721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.CONTRAST);
384721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.CONTRAST.name());
385721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
386721a5a24e2278f4012109865d62b98190b3185afJason Sams
387721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 34: Exposure
388f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
389721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testExposure(){
390721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.EXPOSURE);
391721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.EXPOSURE.name());
392721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
393721a5a24e2278f4012109865d62b98190b3185afJason Sams
394721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 35: White Balance
395f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
396721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testWhiteBalance() {
397721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.WHITE_BALANCE);
398721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.WHITE_BALANCE.name());
399721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
400721a5a24e2278f4012109865d62b98190b3185afJason Sams
401721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 36: Color Cube
402f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
403721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testColorCube() {
404721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.COLOR_CUBE);
405721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.COLOR_CUBE.name());
406721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
407721a5a24e2278f4012109865d62b98190b3185afJason Sams
408721a5a24e2278f4012109865d62b98190b3185afJason Sams    // Test case 37: Color Cube (3D Intrinsic)
409f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
410721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testColorCube3DIntrinsic() {
411721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.COLOR_CUBE_3D_INTRINSIC);
412721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.COLOR_CUBE_3D_INTRINSIC.name());
413721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
414f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang
415f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    // Test case 38: Artistic 1
416f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
417721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testArtistic1() {
418f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang        TestAction ta = new TestAction(TestName.ARTISTIC1);
419f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang        runTest(ta, TestName.ARTISTIC1.name());
420721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
421721a5a24e2278f4012109865d62b98190b3185afJason Sams
422f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    // Test case 39: Resize BiCubic Script
423f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
424f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    public void testResizeBiCubicScript() {
425f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang        TestAction ta = new TestAction(TestName.RESIZE_BI_SCRIPT);
426f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang        runTest(ta, TestName.RESIZE_BI_SCRIPT.name());
427721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
428721a5a24e2278f4012109865d62b98190b3185afJason Sams
429f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    // Test case 40: Resize BiCubic Intrinsic
430f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
431f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    public void testResizeBiCubicIntrinsic() {
432f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang        TestAction ta = new TestAction(TestName.RESIZE_BI_INTRINSIC);
433f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang        runTest(ta, TestName.RESIZE_BI_INTRINSIC.name());
434f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    }
435f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang
436f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    // Test case 41: Posterize with invoke
437f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
438f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    public void testPosterizeInvoke() {
439f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang        TestAction ta = new TestAction(TestName.POSTERIZE_INVOKE);
440f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang        runTest(ta, TestName.POSTERIZE_INVOKE.name());
441f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    }
442f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang
443f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    // Test case 42: Posterize with set
444f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
445f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    public void testPosterizeSet() {
446f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang        TestAction ta = new TestAction(TestName.POSTERIZE_SET);
447f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang        runTest(ta, TestName.POSTERIZE_SET.name());
448f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    }
449f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang
450f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    // Test case 43 Histogram intrinsic
451f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
452f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    public void testHistogramIntrinsic() {
453f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang        TestAction ta = new TestAction(TestName.HISTOGRAM_INTRINSIC);
454f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang        runTest(ta, TestName.HISTOGRAM_INTRINSIC.name());
455f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    }
456f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang
457f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    // Test case 44 Histogram script
458f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
459f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    public void testHistogramScript() {
460f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang        TestAction ta = new TestAction(TestName.HISTOGRAM_SCRIPT);
461f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang        runTest(ta, TestName.HISTOGRAM_SCRIPT.name());
462f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    }
463f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang
464f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    // Test case 45: Mandelbrot fp64
465f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
466721a5a24e2278f4012109865d62b98190b3185afJason Sams    public void testMandelbrotfp64() {
467721a5a24e2278f4012109865d62b98190b3185afJason Sams        TestAction ta = new TestAction(TestName.MANDELBROT_DOUBLE);
468721a5a24e2278f4012109865d62b98190b3185afJason Sams        runTest(ta, TestName.MANDELBROT_DOUBLE.name());
469721a5a24e2278f4012109865d62b98190b3185afJason Sams    }
470f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang
471f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    // Test case 46: Blur Radius 25 Half Precision
472f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    @MediumTest
473f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    public void testBlurRadius25Half() {
474f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang        TestAction ta = new TestAction(TestName.BLUR_RADIUS_25_HALF);
475f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang        runTest(ta, TestName.BLUR_RADIUS_25_HALF.name());
476f428c33c37dcbaf8a08aef1b579cb8f319f85f8bMiao Wang    }
477721a5a24e2278f4012109865d62b98190b3185afJason Sams}
478