Merge "Adding support for dynamically updated test status"
diff --git a/libs/rs/java/tests/src/com/android/rs/test/RSTestCore.java b/libs/rs/java/tests/src/com/android/rs/test/RSTestCore.java
index da64e02..cd8f814 100644
--- a/libs/rs/java/tests/src/com/android/rs/test/RSTestCore.java
+++ b/libs/rs/java/tests/src/com/android/rs/test/RSTestCore.java
@@ -51,8 +51,8 @@
 
         unitTests = new ArrayList<UnitTest>();
 
-        unitTests.add(new UT_primitives(mRes));
-        unitTests.add(new UT_fp_mad(mRes));
+        unitTests.add(new UT_primitives(this, mRes));
+        unitTests.add(new UT_fp_mad(this, mRes));
         /*
         unitTests.add(new UnitTest("<Pass>", 1));
         unitTests.add(new UnitTest());
@@ -62,23 +62,26 @@
         UnitTest [] uta = new UnitTest[unitTests.size()];
         uta = unitTests.toArray(uta);
 
-        /* Run the actual unit tests */
-        ListIterator<UnitTest> test_iter = unitTests.listIterator();
-        while (test_iter.hasNext()) {
-            UnitTest t = test_iter.next();
-            t.start();
-            try {
-                t.join();
-            } catch (InterruptedException e) {
-            }
-        }
-
         mListAllocs = new ScriptField_ListAllocs_s(mRS, uta.length);
         for (int i = 0; i < uta.length; i++) {
             ScriptField_ListAllocs_s.Item listElem = new ScriptField_ListAllocs_s.Item();
             listElem.text = Allocation.createFromString(mRS, uta[i].name);
             listElem.result = uta[i].result;
             mListAllocs.set(listElem, i, false);
+            uta[i].setItem(listElem);
+        }
+
+        /* Run the actual unit tests */
+        ListIterator<UnitTest> test_iter = unitTests.listIterator();
+        while (test_iter.hasNext()) {
+            UnitTest t = test_iter.next();
+            t.start();
+            /*
+            try {
+                t.join();
+            } catch (InterruptedException e) {
+            }
+            */
         }
 
         mListAllocs.copyAll();
@@ -92,6 +95,15 @@
         mRS.finish();
     }
 
+    public void refreshTestResults() {
+        if (mListAllocs != null && mScript != null && mRS != null) {
+            mListAllocs.copyAll();
+
+            mScript.bind_gList(mListAllocs);
+            mRS.contextBindRootScript(mScript);
+        }
+    }
+
     public void newTouchPosition(float x, float y, float pressure, int id) {
     }
 
diff --git a/libs/rs/java/tests/src/com/android/rs/test/UT_fp_mad.java b/libs/rs/java/tests/src/com/android/rs/test/UT_fp_mad.java
index c4e57e8..8391fb3 100644
--- a/libs/rs/java/tests/src/com/android/rs/test/UT_fp_mad.java
+++ b/libs/rs/java/tests/src/com/android/rs/test/UT_fp_mad.java
@@ -22,8 +22,8 @@
 public class UT_fp_mad extends UnitTest {
     private Resources mRes;
 
-    protected UT_fp_mad(Resources res) {
-        super("Fp_Mad");
+    protected UT_fp_mad(RSTestCore rstc, Resources res) {
+        super(rstc, "Fp_Mad");
         mRes = res;
     }
 
diff --git a/libs/rs/java/tests/src/com/android/rs/test/UT_primitives.java b/libs/rs/java/tests/src/com/android/rs/test/UT_primitives.java
index 629f0b2..bef6ec5 100644
--- a/libs/rs/java/tests/src/com/android/rs/test/UT_primitives.java
+++ b/libs/rs/java/tests/src/com/android/rs/test/UT_primitives.java
@@ -22,8 +22,8 @@
 public class UT_primitives extends UnitTest {
     private Resources mRes;
 
-    protected UT_primitives(Resources res) {
-        super("Primitives");
+    protected UT_primitives(RSTestCore rstc, Resources res) {
+        super(rstc, "Primitives");
         mRes = res;
     }
 
@@ -33,8 +33,6 @@
         pRS.mMessageCallback = mRsMessage;
         s.invoke_primitives_test(0, 0);
         pRS.finish();
-        //android.util.Log.v("UT", "After pRS.finish");
-
         pRS.destroy();
     }
 }
diff --git a/libs/rs/java/tests/src/com/android/rs/test/UnitTest.java b/libs/rs/java/tests/src/com/android/rs/test/UnitTest.java
index 5b55779..d98b763 100644
--- a/libs/rs/java/tests/src/com/android/rs/test/UnitTest.java
+++ b/libs/rs/java/tests/src/com/android/rs/test/UnitTest.java
@@ -20,23 +20,30 @@
 public class UnitTest extends Thread {
     public String name;
     public int result;
+    private ScriptField_ListAllocs_s.Item mItem;
+    private RSTestCore mRSTC;
 
     /* These constants must match those in shared.rsh */
     public static final int RS_MSG_TEST_PASSED = 100;
     public static final int RS_MSG_TEST_FAILED = 101;
 
-    protected UnitTest(String n, int initResult) {
+    protected UnitTest(RSTestCore rstc, String n, int initResult) {
         super();
+        mRSTC = rstc;
         name = n;
         result = initResult;
     }
 
-    protected UnitTest(String n) {
-        this(n, 0);
+    protected UnitTest(RSTestCore rstc, String n) {
+        this(rstc, n, 0);
+    }
+
+    protected UnitTest(RSTestCore rstc) {
+        this (rstc, "<Unknown>");
     }
 
     protected UnitTest() {
-        this ("<Unknown>");
+        this (null);
     }
 
     protected RSMessage mRsMessage = new RSMessage() {
@@ -51,9 +58,18 @@
                 default:
                     break;
             }
+
+            if (mItem != null) {
+                mItem.result = result;
+                mRSTC.refreshTestResults();
+            }
         }
     };
 
+    public void setItem(ScriptField_ListAllocs_s.Item item) {
+        mItem = item;
+    }
+
     public void run() {
         /* This method needs to be implemented for each subclass */
     }
diff --git a/libs/rs/java/tests/src/com/android/rs/test/rslist.rs b/libs/rs/java/tests/src/com/android/rs/test/rslist.rs
index fcea3ab..72d1850 100644
--- a/libs/rs/java/tests/src/com/android/rs/test/rslist.rs
+++ b/libs/rs/java/tests/src/com/android/rs/test/rslist.rs
@@ -71,8 +71,10 @@
                 case -1: /* Failed */
                     rsgFontColor(0.9f, 0.5f, 0.5f, 1.0f);
                     break;
-                case 0: /* Unknown */
-                default:
+                case 0: /* Still Testing */
+                    rsgFontColor(0.9f, 0.9f, 0.5f, 1.0f);
+                    break;
+                default: /* Unknown */
                     rsgFontColor(0.9f, 0.9f, 0.9f, 1.0f);
                     break;
             }