Adjust testMutate to not rely on undefined behavior

It's not required that getDrawable return a shared state drawable,
so don't CTS test that state is shared across all instances

Also split the test into 2 smaller pieces.

Test: this
Bug: 158839504
Bug: 185178568
Change-Id: Ifa2887a0c6735a538913e88319bd8c492cc21926
diff --git a/tests/tests/graphics/src/android/graphics/drawable/cts/VectorDrawableTest.java b/tests/tests/graphics/src/android/graphics/drawable/cts/VectorDrawableTest.java
index bd5b206..d7fd1bc 100644
--- a/tests/tests/graphics/src/android/graphics/drawable/cts/VectorDrawableTest.java
+++ b/tests/tests/graphics/src/android/graphics/drawable/cts/VectorDrawableTest.java
@@ -17,6 +17,7 @@
 package android.graphics.drawable.cts;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertNotNull;
 
 import android.content.Context;
@@ -350,31 +351,33 @@
         VectorDrawable d1 = (VectorDrawable) mResources.getDrawable(R.drawable.vector_icon_create);
         VectorDrawable d2 = (VectorDrawable) mResources.getDrawable(R.drawable.vector_icon_create);
         VectorDrawable d3 = (VectorDrawable) mResources.getDrawable(R.drawable.vector_icon_create);
-        int restoreAlpha = d1.getAlpha();
+        final int initialAlpha = d1.getAlpha();
 
+        d1.mutate();
+        d1.setAlpha(0x40);
+        assertEquals(0x40, d1.getAlpha());
+        assertEquals(initialAlpha, d2.getAlpha());
+        assertEquals(initialAlpha, d3.getAlpha());
+
+        d2.mutate();
+        d2.setAlpha(0x20);
+        assertEquals(0x40, d1.getAlpha());
+        assertEquals(0x20, d2.getAlpha());
+        assertEquals(initialAlpha, d3.getAlpha());
+    }
+
+    @Test
+    public void testMutatePreservesState() {
+        VectorDrawable d = (VectorDrawable) mResources.getDrawable(R.drawable.vector_icon_create);
+        final int restoreAlpha = d.getAlpha();
         try {
-            // verify bad behavior - modify before mutate pollutes other drawables
-            d1.setAlpha(0x80);
-            assertEquals(0x80, d1.getAlpha());
-            assertEquals(0x80, d2.getAlpha());
-            assertEquals(0x80, d3.getAlpha());
-
-            d1.mutate();
-            d1.setAlpha(0x40);
-            assertEquals(0x40, d1.getAlpha());
-            assertEquals(0x80, d2.getAlpha());
-            assertEquals(0x80, d3.getAlpha());
-
-            d2.setAlpha(0x00);
-            d2.mutate();
+            assertNotEquals(0x00, d.getAlpha());
+            d.setAlpha(0x00);
+            d.mutate();
             // Test that after mutating, the alpha value is copied over.
-            assertEquals(0x00, d2.getAlpha());
-
-            d2.setAlpha(0x20);
-            assertEquals(0x40, d1.getAlpha());
-            assertEquals(0x20, d2.getAlpha());
-            assertEquals(0x00, d3.getAlpha());
+            assertEquals(0x00, d.getAlpha());
         } finally {
+            // Restore the original drawable's alpha
             mResources.getDrawable(R.drawable.vector_icon_create).setAlpha(restoreAlpha);
         }
     }