Improve structure setting tests for RS.
This change also adds a custom RSErrorHandler for tracking exceptional cases
from the driver.
Change-Id: I5cfc67aa880a4091583fbc2dd0330fc5df80d16b
diff --git a/tests/src/android/renderscript/cts/struct_pad.rs b/tests/src/android/renderscript/cts/struct_pad.rs
index 0c013a3..6556eb1 100644
--- a/tests/src/android/renderscript/cts/struct_pad.rs
+++ b/tests/src/android/renderscript/cts/struct_pad.rs
@@ -6,3 +6,18 @@
int j;
} s;
+void verify() {
+ bool failed = false;
+ _RS_ASSERT(s.i == 7);
+ _RS_ASSERT(s.f4.x == 1.0f);
+ _RS_ASSERT(s.f4.y == 2.0f);
+ _RS_ASSERT(s.f4.z == 3.0f);
+ _RS_ASSERT(s.f4.w == 4.0f);
+ _RS_ASSERT(s.j == 9);
+
+ if (failed) {
+ rsSendToClientBlocking(RS_MSG_TEST_FAILED);
+ } else {
+ rsSendToClientBlocking(RS_MSG_TEST_PASSED);
+ }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/RSBase.java b/tests/tests/renderscript/src/android/renderscript/cts/RSBase.java
index 56838e1..c51cfb8 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/RSBase.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/RSBase.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2011-2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,8 +18,11 @@
import android.content.Context;
import android.content.res.Resources;
+import android.renderscript.RenderScript.RSErrorHandler;
import android.renderscript.RenderScript.RSMessageHandler;
+import android.renderscript.RSRuntimeException;
import android.test.AndroidTestCase;
+import android.util.Log;
/**
* Base RenderScript test class. This class provides a message handler and a
@@ -59,6 +62,16 @@
}
}
+ protected boolean FoundError = false;
+ protected RSErrorHandler mRsError = new RSErrorHandler() {
+ public void run() {
+ FoundError = true;
+ Log.e("RenderscriptCTS", mErrorMessage);
+ throw new RSRuntimeException("Received error " + mErrorNum +
+ " message " + mErrorMessage);
+ }
+ };
+
@Override
protected void setUp() throws Exception {
super.setUp();
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/StructPadTest.java b/tests/tests/renderscript/src/android/renderscript/cts/StructPadTest.java
index 884a0dc..58d6936 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/StructPadTest.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/StructPadTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2011-2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,12 +17,17 @@
package android.renderscript.cts;
import android.renderscript.Float4;
+import com.android.cts.stub.R;
public class StructPadTest extends RSBaseCompute {
/**
* Test for appropriate alignment/padding of structures.
*/
public void testStructPadding() {
+ mRS.setErrorHandler(mRsError);
+ ScriptC_struct_pad pad = new ScriptC_struct_pad(mRS,
+ mRes,
+ R.raw.struct_pad);
ScriptField_PadMe S = new ScriptField_PadMe(mRS, 1);
Float4 F4 = new Float4(1.0f, 2.0f, 3.0f, 4.0f);
@@ -30,6 +35,16 @@
S.set_f4(0, F4, true);
S.set_j(0, 9, true);
+ ScriptField_PadMe.Item I = new ScriptField_PadMe.Item();
+ I.i = S.get_i(0);
+ I.f4 = S.get_f4(0);
+ I.j = S.get_j(0);
+
S.set(new ScriptField_PadMe.Item(), 0, true);
+
+ pad.set_s(I);
+ pad.invoke_verify();
+ waitForMessage();
+ assertFalse(FoundError);
}
}