summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2021-09-03 21:23:08 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-09-03 21:23:08 +0000
commit9e497369ae328964b4a6a32a418ec27e59ab064a (patch)
tree5a939b41dec2d5316cf8a330abdada913b1ba801
parent5ac4887c6d2a20ed8a7b42c48d76dcea55c49310 (diff)
parentc1855f52bc1950dd27788e2cfb6577c4980d1e5d (diff)
downloadcts-9e497369ae328964b4a6a32a418ec27e59ab064a.tar.gz
Merge "Adjust testMutate to not rely on undefined behavior" into oreo-cts-dev am: c1855f52bc
Original change: https://android-review.googlesource.com/c/platform/cts/+/1810498 Change-Id: I17171641feea661446de7d1b271c62f9a65f0945
-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);
}
}