diff options
author | Przemyslaw Szczepaniak <pszczepaniak@google.com> | 2016-03-11 15:59:10 +0000 |
---|---|---|
committer | Przemyslaw Szczepaniak <pszczepaniak@google.com> | 2016-03-15 10:42:51 +0000 |
commit | b8b75116273ecfdb8ffdd1869b1c0dd04570a95e (patch) | |
tree | 1622f7420704b7ca6520ba3db150bbc6ab918503 /jsr166-tests/src/test/java/jsr166/AtomicReferenceFieldUpdaterTest.java | |
parent | a8a9d448e97004dcd25c9ccb128e09bcb7690f6a (diff) |
JSR-166 update without java 1.9 method/classes
Second attempt, in frist one I've submitted some code from openJdk 1.9
that shouldn't be here, orignial change can be found at
5328e07d282bef36ac8b757bbee16a761415b2c4
Adapted from sources taken from CVS using:
cvs -d ':pserver:anonymous@gee.cs.oswego.edu/home/jsr166/jsr166' checkout -D "03/03/2016 10:00:00 GMT" jsr166
This time with hidden/removed "@since 9" methods and classes
Bug: 27426599
Change-Id: Ibd8d26e13cba091bfd983c73d005e4f8d8f5946d
Diffstat (limited to 'jsr166-tests/src/test/java/jsr166/AtomicReferenceFieldUpdaterTest.java')
-rw-r--r-- | jsr166-tests/src/test/java/jsr166/AtomicReferenceFieldUpdaterTest.java | 78 |
1 files changed, 76 insertions, 2 deletions
diff --git a/jsr166-tests/src/test/java/jsr166/AtomicReferenceFieldUpdaterTest.java b/jsr166-tests/src/test/java/jsr166/AtomicReferenceFieldUpdaterTest.java index 4b0d946d1d..9b2e9a9adf 100644 --- a/jsr166-tests/src/test/java/jsr166/AtomicReferenceFieldUpdaterTest.java +++ b/jsr166-tests/src/test/java/jsr166/AtomicReferenceFieldUpdaterTest.java @@ -15,6 +15,8 @@ import junit.framework.TestSuite; public class AtomicReferenceFieldUpdaterTest extends JSR166TestCase { volatile Integer x = null; + protected volatile Integer protectedField; + private volatile Integer privateField; Object z; Integer w; volatile int i; @@ -26,10 +28,62 @@ public class AtomicReferenceFieldUpdaterTest extends JSR166TestCase { // main(suite(), args); // } // public static Test suite() { - // return new TestSuite(...); + // return new TestSuite(AtomicReferenceFieldUpdaterTest.class); // } - AtomicReferenceFieldUpdater<AtomicReferenceFieldUpdaterTest, Integer> updaterFor(String fieldName) { + // for testing subclass access + // android-note: Removed because android doesn't restrict reflection access + // static class AtomicReferenceFieldUpdaterTestSubclass extends AtomicReferenceFieldUpdaterTest { + // public void checkPrivateAccess() { + // try { + // AtomicReferenceFieldUpdater<AtomicReferenceFieldUpdaterTest,Integer> a = + // AtomicReferenceFieldUpdater.newUpdater + // (AtomicReferenceFieldUpdaterTest.class, Integer.class, "privateField"); + // shouldThrow(); + // } catch (RuntimeException success) { + // assertNotNull(success.getCause()); + // } + // } + + // public void checkCompareAndSetProtectedSub() { + // AtomicReferenceFieldUpdater<AtomicReferenceFieldUpdaterTest,Integer> a = + // AtomicReferenceFieldUpdater.newUpdater + // (AtomicReferenceFieldUpdaterTest.class, Integer.class, "protectedField"); + // this.protectedField = one; + // assertTrue(a.compareAndSet(this, one, two)); + // assertTrue(a.compareAndSet(this, two, m4)); + // assertSame(m4, a.get(this)); + // assertFalse(a.compareAndSet(this, m5, seven)); + // assertFalse(seven == a.get(this)); + // assertTrue(a.compareAndSet(this, m4, seven)); + // assertSame(seven, a.get(this)); + // } + // } + + // static class UnrelatedClass { + // public void checkPackageAccess(AtomicReferenceFieldUpdaterTest obj) { + // obj.x = one; + // AtomicReferenceFieldUpdater<AtomicReferenceFieldUpdaterTest,Integer> a = + // AtomicReferenceFieldUpdater.newUpdater + // (AtomicReferenceFieldUpdaterTest.class, Integer.class, "x"); + // assertSame(one, a.get(obj)); + // assertTrue(a.compareAndSet(obj, one, two)); + // assertSame(two, a.get(obj)); + // } + + // public void checkPrivateAccess(AtomicReferenceFieldUpdaterTest obj) { + // try { + // AtomicReferenceFieldUpdater<AtomicReferenceFieldUpdaterTest,Integer> a = + // AtomicReferenceFieldUpdater.newUpdater + // (AtomicReferenceFieldUpdaterTest.class, Integer.class, "privateField"); + // throw new AssertionError("should throw"); + // } catch (RuntimeException success) { + // assertNotNull(success.getCause()); + // } + // } + // } + + static AtomicReferenceFieldUpdater<AtomicReferenceFieldUpdaterTest, Integer> updaterFor(String fieldName) { return AtomicReferenceFieldUpdater.newUpdater (AtomicReferenceFieldUpdaterTest.class, Integer.class, fieldName); } @@ -77,6 +131,26 @@ public class AtomicReferenceFieldUpdaterTest extends JSR166TestCase { } /** + * construction using private field from subclass throws RuntimeException + */ + // android-note: Removed because android doesn't restrict reflection access + // public void testPrivateFieldInSubclass() { + // AtomicReferenceFieldUpdaterTestSubclass s = + // new AtomicReferenceFieldUpdaterTestSubclass(); + // s.checkPrivateAccess(); + // } + + /** + * construction from unrelated class; package access is allowed, + * private access is not + */ + // android-note: Removed because android doesn't restrict reflection access + // public void testUnrelatedClassAccess() { + // new UnrelatedClass().checkPackageAccess(this); + // new UnrelatedClass().checkPrivateAccess(this); + // } + + /** * get returns the last value set or assigned */ public void testGetSet() { |