jaroslav@1338: /** jaroslav@1338: * Back 2 Browser Bytecode Translator jaroslav@1338: * Copyright (C) 2012 Jaroslav Tulach jaroslav@1338: * jaroslav@1338: * This program is free software: you can redistribute it and/or modify jaroslav@1338: * it under the terms of the GNU General Public License as published by jaroslav@1338: * the Free Software Foundation, version 2 of the License. jaroslav@1338: * jaroslav@1338: * This program is distributed in the hope that it will be useful, jaroslav@1338: * but WITHOUT ANY WARRANTY; without even the implied warranty of jaroslav@1338: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the jaroslav@1338: * GNU General Public License for more details. jaroslav@1338: * jaroslav@1338: * You should have received a copy of the GNU General Public License jaroslav@1338: * along with this program. Look for COPYING file in the top folder. jaroslav@1338: * If not, see http://opensource.org/licenses/GPL-2.0. jaroslav@1338: */ jaroslav@1338: package org.apidesign.bck2brwsr.tck; jaroslav@1338: jaroslav@1338: import java.util.concurrent.atomic.AtomicBoolean; jaroslav@1338: import java.util.concurrent.atomic.AtomicInteger; jaroslav@1338: import java.util.concurrent.atomic.AtomicReference; jaroslav@1338: import org.apidesign.bck2brwsr.vmtest.Compare; jaroslav@1338: import org.apidesign.bck2brwsr.vmtest.VMTest; jaroslav@1338: import org.testng.annotations.Factory; jaroslav@1338: jaroslav@1338: /** jaroslav@1338: * jaroslav@1338: * @author Jaroslav Tulach jaroslav@1338: */ jaroslav@1338: public class AtomicTest { jaroslav@1338: @Compare public boolean atomicBoolean() { jaroslav@1338: AtomicBoolean ab = new AtomicBoolean(); jaroslav@1338: ab.set(true); jaroslav@1338: return ab.compareAndSet(true, false); jaroslav@1338: } jaroslav@1338: jaroslav@1338: @Compare public int atomicInt() { jaroslav@1338: AtomicInteger ab = new AtomicInteger(); jaroslav@1338: ab.set(30); jaroslav@1338: assert ab.compareAndSet(30, 10); jaroslav@1338: return ab.get(); jaroslav@1338: } jaroslav@1338: jaroslav@1338: @Compare public String atomicRef() { jaroslav@1338: AtomicReference ar = new AtomicReference("Ahoj"); jaroslav@1338: assert ar.compareAndSet("Ahoj", "Hello"); jaroslav@1338: return ar.getAndSet("Other"); jaroslav@1338: } jaroslav@1338: jaroslav@1338: @Factory public static Object[] create() { jaroslav@1338: return VMTest.create(AtomicTest.class); jaroslav@1338: } jaroslav@1338: }