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.util;
20 import org.junit.Test;
22 import gov.nasa.jpf.util.test.TestJPF;
25 * regression test for ObjVector
27 public class ObjVectorTest extends TestJPF {
29 void assertEquals( ObjVector<Integer> v1, ObjVector<Integer> v2) {
30 assertTrue( v1.size() == v2.size());
33 for (int i=0; i<n; i++) {
37 assertTrue( b == null);
39 assertTrue( a.equals(b));
45 public void testSnapshot () {
46 ObjVector<Integer> v = new ObjVector<Integer>(100);
49 ObjVector.Snapshot<Integer> snap = v.getSnapshot();
50 Integer val = Integer.valueOf(42);
52 assertTrue(v.size() == 1 && v.get(0) == val);
54 assertTrue(v.size() == 0 && v.get(0) == null);
56 //--- all full snapshot
57 for (int i=0; i<100; i++) {
60 ObjVector<Integer> v0 = v.clone();
61 ObjVector.Snapshot<Integer> snap0 = v.getSnapshot();
66 //--- punch holes into it
67 v.setRange(11, 20, null);
71 v.setRange(70, 85, null);
72 ObjVector.Snapshot<Integer> snap1 = v.getSnapshot();
73 ObjVector<Integer> v1 = v.clone();
76 //v.printOn( System.out);
79 //--- chop off the ends
81 v.setRange(81, 99, null);
82 v.setRange(0, 19, null);
83 ObjVector.Snapshot<Integer> snap2 = v.getSnapshot();
84 ObjVector<Integer> v2 = v.clone();
90 //--- mutating snapshot
94 X (Integer o) { val = o.intValue(); }
97 static class IXTransformer implements Transformer<Integer,X> {
99 public X transform( Integer obj) {
104 static class XITransformer implements Transformer<X,Integer>{
106 public Integer transform( X obj) {
107 return Integer.valueOf(obj.val);
112 public void testMutatingSnapshot() {
113 ObjVector<Integer> v = new ObjVector<Integer>(100);
115 for (int i=0; i<100; i+=2) {
116 v.set(i, Integer.valueOf(i));
120 System.out.println("now storing snapshot for ObjVector of size " + v.size());
121 ObjVector.MutatingSnapshot<Integer,X> snap = v.getSnapshot(new IXTransformer());
123 System.out.println("now modifying ObjVector");
125 v.setRange(0, 30, Integer.valueOf(42));
128 System.out.println("now restoring ObjVector");
129 v.restore(snap, new XITransformer());
132 assert n == 50 : "got wrong number of non-null elements: " + n;
137 int print(ObjVector<Integer> v) {
139 for (int i=0; i<=v.size(); i++) {
140 Integer e = v.get(i);
143 System.out.print(',');
148 System.out.println();