2 * Copyright (C) 2014, United States Government, as represented by the
3 * Administrator of the National Aeronautics and Space Administration.
6 * The Java Pathfinder core (jpf-core) platform is licensed under the
7 * Apache License, Version 2.0 (the "License"); you may not use this file except
8 * in compliance with the License. You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0.
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
18 package gov.nasa.jpf.test.java.concurrent;
20 import gov.nasa.jpf.util.test.TestJPF;
22 import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
24 import org.junit.Test;
27 * raw test for java.util.concurrent.atomic.AtomicReferenceFieldUpdater
29 public class AtomicReferenceFieldUpdaterTest extends TestJPF {
31 static final String[] JPF_ARGS = {"+cg.enumreate_cas=true"};
33 //--- the test methods
38 public void testStringField() {
39 if (verifyNoPropertyViolation(JPF_ARGS)) {
40 AtomicReferenceFieldUpdater<AtomicReferenceFieldUpdaterTest, String> upd =
41 AtomicReferenceFieldUpdater.newUpdater(AtomicReferenceFieldUpdaterTest.class, String.class, "str");
47 System.out.println(str);
48 assert upd.compareAndSet(this, s1, s2);
49 System.out.println(str);
52 assert !upd.compareAndSet(this, s1, "nogo");
54 assert str == upd.get(this);
56 assert s2 == upd.getAndSet(this, s1);
62 upd.lazySet(this, s1);
65 assert upd.weakCompareAndSet(this, s1, s2);
68 assert !upd.weakCompareAndSet(this, s1, "nogo");
74 public void testByteArrayField() {
75 if (verifyNoPropertyViolation(JPF_ARGS)) {
76 AtomicReferenceFieldUpdater<AtomicReferenceFieldUpdaterTest, byte[]> upd =
77 AtomicReferenceFieldUpdater.newUpdater(AtomicReferenceFieldUpdaterTest.class, byte[].class, "buf");
79 byte[] b1 = new byte[10];
80 byte[] b2 = new byte[5];
83 System.out.println(buf);
84 assert upd.compareAndSet(this, b1, b2);
85 System.out.println(buf);
88 assert !upd.compareAndSet(this, b1, new byte[3]);