summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2021-09-03 21:13:00 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2021-09-03 21:13:00 +0000
commitc1855f52bc1950dd27788e2cfb6577c4980d1e5d (patch)
tree765fc6a4ddb9f17fbbe4c9452328b07f5df12002
parente92a5ccd1e66fd8af65f0cbfc07348dd02f79650 (diff)
parent5a72138ebfc2403f6dd31ac044e28b89b0b61f58 (diff)
downloadcts-c1855f52bc1950dd27788e2cfb6577c4980d1e5d.tar.gz
Merge "Adjust testMutate to not rely on undefined behavior" into oreo-cts-dev
-rw-r--r--tests/tests/graphics/src/android/graphics/drawable/cts/VectorDrawableTest.java45
1 files changed, 24 insertions, 21 deletions
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 c09a139a907..7704464fe11 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;
@@ -351,31 +352,33 @@ public class VectorDrawableTest {
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);
}
}