18f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle/* 28f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Written by Doug Lea with assistance from members of JCP JSR-166 38f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Expert Group and released to the public domain, as explained at 48f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * http://creativecommons.org/publicdomain/zero/1.0/ 58f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Other contributors include Andrew Wright, Jeffrey Hayes, 68f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Pat Fisher, Mike Judd. 78f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 88f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 98f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravlepackage jsr166; 108f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 118f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravleimport java.util.concurrent.atomic.AtomicInteger; 128f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 138e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamathimport junit.framework.Test; 148e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamathimport junit.framework.TestSuite; 158e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath 168f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravlepublic class AtomicIntegerTest extends JSR166TestCase { 178e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // android-note: Removed because the CTS runner does a bad job of 188e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // retrying tests that have suite() declarations. 198e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // 208e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // public static void main(String[] args) { 218e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // main(suite(), args); 228e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // } 238e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // public static Test suite() { 24b8b75116273ecfdb8ffdd1869b1c0dd04570a95ePrzemyslaw Szczepaniak // return new TestSuite(AtomicIntegerTest.class); 258e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // } 268f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 278f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle final int[] VALUES = { 288f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Integer.MIN_VALUE, -1, 0, 1, 42, Integer.MAX_VALUE, 298f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle }; 308f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 318f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 328f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * constructor initializes to given value 338f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 348f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testConstructor() { 358f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle AtomicInteger ai = new AtomicInteger(1); 368f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(1, ai.get()); 378f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 388f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 398f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 408f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * default constructed initializes to zero 418f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 428f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testConstructor2() { 438f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle AtomicInteger ai = new AtomicInteger(); 448f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(0, ai.get()); 458f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 468f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 478f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 488f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * get returns the last value set 498f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 508f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testGetSet() { 518f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle AtomicInteger ai = new AtomicInteger(1); 528f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(1, ai.get()); 538f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle ai.set(2); 548f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(2, ai.get()); 558f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle ai.set(-3); 568f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(-3, ai.get()); 578f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 588f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 598f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 608f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * get returns the last value lazySet in same thread 618f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 628f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testGetLazySet() { 638f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle AtomicInteger ai = new AtomicInteger(1); 648f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(1, ai.get()); 658f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle ai.lazySet(2); 668f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(2, ai.get()); 678f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle ai.lazySet(-3); 688f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(-3, ai.get()); 698f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 708f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 718f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 728f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * compareAndSet succeeds in changing value if equal to expected else fails 738f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 748f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testCompareAndSet() { 758f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle AtomicInteger ai = new AtomicInteger(1); 768f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(ai.compareAndSet(1, 2)); 778f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(ai.compareAndSet(2, -4)); 788f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(-4, ai.get()); 798f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(ai.compareAndSet(-5, 7)); 808f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(-4, ai.get()); 818f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(ai.compareAndSet(-4, 7)); 828f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(7, ai.get()); 838f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 848f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 858f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 868f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * compareAndSet in one thread enables another waiting for value 878f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * to succeed 888f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 898f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testCompareAndSetInMultipleThreads() throws Exception { 908f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle final AtomicInteger ai = new AtomicInteger(1); 918f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Thread t = new Thread(new CheckedRunnable() { 928f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void realRun() { 938f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle while (!ai.compareAndSet(2, 3)) 948f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Thread.yield(); 958f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle }}); 968f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 978f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle t.start(); 988f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertTrue(ai.compareAndSet(1, 2)); 998f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle t.join(LONG_DELAY_MS); 1008f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(t.isAlive()); 1018f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(3, ai.get()); 1028f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 1038f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 1048f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 1058f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * repeated weakCompareAndSet succeeds in changing value when equal 1068f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * to expected 1078f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 1088f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testWeakCompareAndSet() { 1098f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle AtomicInteger ai = new AtomicInteger(1); 1108e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath do {} while (!ai.weakCompareAndSet(1, 2)); 1118e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath do {} while (!ai.weakCompareAndSet(2, -4)); 1128f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(-4, ai.get()); 1138e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath do {} while (!ai.weakCompareAndSet(-4, 7)); 1148f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(7, ai.get()); 1158f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 1168f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 1178f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 1188f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * getAndSet returns previous value and sets to given value 1198f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 1208f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testGetAndSet() { 1218f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle AtomicInteger ai = new AtomicInteger(1); 1228f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(1, ai.getAndSet(0)); 1238f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(0, ai.getAndSet(-10)); 1248f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(-10, ai.getAndSet(1)); 1258f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 1268f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 1278f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 1288f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * getAndAdd returns previous value and adds given value 1298f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 1308f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testGetAndAdd() { 1318f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle AtomicInteger ai = new AtomicInteger(1); 1328f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(1, ai.getAndAdd(2)); 1338f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(3, ai.get()); 1348f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(3, ai.getAndAdd(-4)); 1358f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(-1, ai.get()); 1368f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 1378f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 1388f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 1398f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * getAndDecrement returns previous value and decrements 1408f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 1418f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testGetAndDecrement() { 1428f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle AtomicInteger ai = new AtomicInteger(1); 1438f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(1, ai.getAndDecrement()); 1448f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(0, ai.getAndDecrement()); 1458f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(-1, ai.getAndDecrement()); 1468f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 1478f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 1488f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 1498f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * getAndIncrement returns previous value and increments 1508f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 1518f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testGetAndIncrement() { 1528f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle AtomicInteger ai = new AtomicInteger(1); 1538f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(1, ai.getAndIncrement()); 1548f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(2, ai.get()); 1558f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle ai.set(-2); 1568f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(-2, ai.getAndIncrement()); 1578f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(-1, ai.getAndIncrement()); 1588f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(0, ai.getAndIncrement()); 1598f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(1, ai.get()); 1608f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 1618f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 1628f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 1638f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * addAndGet adds given value to current, and returns current value 1648f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 1658f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testAddAndGet() { 1668f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle AtomicInteger ai = new AtomicInteger(1); 1678f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(3, ai.addAndGet(2)); 1688f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(3, ai.get()); 1698f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(-1, ai.addAndGet(-4)); 1708f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(-1, ai.get()); 1718f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 1728f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 1738f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 1748f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * decrementAndGet decrements and returns current value 1758f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 1768f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDecrementAndGet() { 1778f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle AtomicInteger ai = new AtomicInteger(1); 1788f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(0, ai.decrementAndGet()); 1798f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(-1, ai.decrementAndGet()); 1808f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(-2, ai.decrementAndGet()); 1818f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(-2, ai.get()); 1828f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 1838f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 1848f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 1858f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * incrementAndGet increments and returns current value 1868f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 1878f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testIncrementAndGet() { 1888f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle AtomicInteger ai = new AtomicInteger(1); 1898f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(2, ai.incrementAndGet()); 1908f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(2, ai.get()); 1918f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle ai.set(-2); 1928f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(-1, ai.incrementAndGet()); 1938f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(0, ai.incrementAndGet()); 1948f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(1, ai.incrementAndGet()); 1958f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(1, ai.get()); 1968f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 1978f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 1988f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 1998f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * a deserialized serialized atomic holds same value 2008f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 2018f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testSerialization() throws Exception { 2028f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle AtomicInteger x = new AtomicInteger(); 2038f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle AtomicInteger y = serialClone(x); 2048f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertNotSame(x, y); 2058f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle x.set(22); 2068f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle AtomicInteger z = serialClone(x); 2078f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(22, x.get()); 2088f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(0, y.get()); 2098f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(22, z.get()); 2108f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 2118f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 2128f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 2138f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * toString returns current value. 2148f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 2158f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testToString() { 2168f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle AtomicInteger ai = new AtomicInteger(); 2178f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals("0", ai.toString()); 2188f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int x : VALUES) { 2198f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle ai.set(x); 2208f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(Integer.toString(x), ai.toString()); 2218f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 2228f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 2238f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 2248f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 2258f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * intValue returns current value. 2268f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 2278f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testIntValue() { 2288f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle AtomicInteger ai = new AtomicInteger(); 2298f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(0, ai.intValue()); 2308f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int x : VALUES) { 2318f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle ai.set(x); 2328f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(x, ai.intValue()); 2338f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 2348f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 2358f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 2368f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 2378f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * longValue returns current value. 2388f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 2398f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testLongValue() { 2408f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle AtomicInteger ai = new AtomicInteger(); 2418f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(0L, ai.longValue()); 2428f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int x : VALUES) { 2438f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle ai.set(x); 2448f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals((long)x, ai.longValue()); 2458f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 2468f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 2478f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 2488f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 2498f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * floatValue returns current value. 2508f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 2518f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testFloatValue() { 2528f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle AtomicInteger ai = new AtomicInteger(); 2538f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(0.0f, ai.floatValue()); 2548f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int x : VALUES) { 2558f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle ai.set(x); 2568f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals((float)x, ai.floatValue()); 2578f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 2588f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 2598f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 2608f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 2618f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * doubleValue returns current value. 2628f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 2638f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testDoubleValue() { 2648f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle AtomicInteger ai = new AtomicInteger(); 2658f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(0.0d, ai.doubleValue()); 2668f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle for (int x : VALUES) { 2678f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle ai.set(x); 2688f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals((double)x, ai.doubleValue()); 2698f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 2708f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 2718f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 2728f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle} 273