diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2021-09-03 21:13:00 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2021-09-03 21:13:00 +0000 |
commit | c1855f52bc1950dd27788e2cfb6577c4980d1e5d (patch) | |
tree | 765fc6a4ddb9f17fbbe4c9452328b07f5df12002 | |
parent | e92a5ccd1e66fd8af65f0cbfc07348dd02f79650 (diff) | |
parent | 5a72138ebfc2403f6dd31ac044e28b89b0b61f58 (diff) | |
download | cts-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.java | 45 |
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); } } |