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