5151import java .util .Random ;
5252import java .util .TreeMap ;
5353
54+ import static org .javimmutable .collections .common .StandardSerializableTests .verifySerializable ;
55+
5456/**
5557 * Test program for all implementations of JImmutableArray. Divided into four sections: growing
5658 * (adds new values at random indices), updating (changes the value at existing indices), shrinking
5961 */
6062@ SuppressWarnings ("Duplicates" )
6163public class JImmutableArrayStressTester
62- extends AbstractStressTestable
64+ extends AbstractStressTestable
6365{
6466 private final JImmutableArray <String > array ;
6567 private final ArrayIndexRange indexRange ;
@@ -95,19 +97,19 @@ public void execute(Random random,
9597 indexList = indexList .insert (index );
9698 String value = RandomKeyManager .makeValue (tokens , random );
9799 switch (random .nextInt (2 )) {
98- case 0 : {//assign(int, T)
99- array = array .assign (index , value );
100- expected .put (index , value );
101- break ;
102- }
103- case 1 : { //insert(Entry<Integer, T>)
104- JImmutableMap .Entry <Integer , String > entry = new MapEntry <>(index , value );
105- array = (JImmutableArray <String >)array .insert (entry );
106- expected .put (index , value );
107- break ;
108- }
109- default :
110- throw new RuntimeException ();
100+ case 0 : {//assign(int, T)
101+ array = array .assign (index , value );
102+ expected .put (index , value );
103+ break ;
104+ }
105+ case 1 : { //insert(Entry<Integer, T>)
106+ JImmutableMap .Entry <Integer , String > entry = new MapEntry <>(index , value );
107+ array = (JImmutableArray <String >)array .insert (entry );
108+ expected .put (index , value );
109+ break ;
110+ }
111+ default :
112+ throw new RuntimeException ();
111113 }
112114 }
113115 verifyContents (array , expected );
@@ -118,19 +120,19 @@ public void execute(Random random,
118120 int index = indexList .get (random .nextInt (indexList .size ()));
119121 String value = RandomKeyManager .makeValue (tokens , random );
120122 switch (random .nextInt (2 )) {
121- case 0 : { //assign(int, T)
122- array = array .assign (index , value );
123- expected .put (index , value );
124- break ;
125- }
126- case 1 : { //insert(Entry<Integer, T>)
127- JImmutableMap .Entry <Integer , String > entry = new MapEntry <>(index , value );
128- array = (JImmutableArray <String >)array .insert (entry );
129- expected .put (index , value );
130- break ;
131- }
132- default :
133- throw new RuntimeException ();
123+ case 0 : { //assign(int, T)
124+ array = array .assign (index , value );
125+ expected .put (index , value );
126+ break ;
127+ }
128+ case 1 : { //insert(Entry<Integer, T>)
129+ JImmutableMap .Entry <Integer , String > entry = new MapEntry <>(index , value );
130+ array = (JImmutableArray <String >)array .insert (entry );
131+ expected .put (index , value );
132+ break ;
133+ }
134+ default :
135+ throw new RuntimeException ();
134136 }
135137 }
136138 verifyContents (array , expected );
@@ -159,43 +161,43 @@ public void execute(Random random,
159161 for (int i = 0 ; i < size / 12 ; ++i ) {
160162 int index = (random .nextBoolean ()) ? indexRange .randomIndex (random ) : indexList .get (random .nextInt (indexList .size ()));
161163 switch (random .nextInt (4 )) {
162- case 0 : { //get(int)
163- String value = array .get (index );
164- String expectedValue = expected .getOrDefault (index , null );
165- if (!((value == null && expectedValue == null ) || (expectedValue != null && expectedValue .equals (value )))) {
166- throw new RuntimeException (String .format ("get(index) method call failed for %d - expected %s found %s%n" , index , expectedValue , value ));
167- }
168- break ;
164+ case 0 : { //get(int)
165+ String value = array .get (index );
166+ String expectedValue = expected .getOrDefault (index , null );
167+ if (!((value == null && expectedValue == null ) || (expectedValue != null && expectedValue .equals (value )))) {
168+ throw new RuntimeException (String .format ("get(index) method call failed for %d - expected %s found %s%n" , index , expectedValue , value ));
169+ }
170+ break ;
169171
170- }
171- case 1 : { //getValueOr(int, T)
172- String value = array .getValueOr (index , "" );
173- String expectedValue = expected .getOrDefault (index , "" );
174- assert value != null ;
175- if (!value .equals (expectedValue )) {
176- throw new RuntimeException (String .format ("getValueOr(index, default) method call failed for %d - expected %s found %s%n" , index , expectedValue , value ));
177172 }
178- break ;
173+ case 1 : { //getValueOr(int, T)
174+ String value = array .getValueOr (index , "" );
175+ String expectedValue = expected .getOrDefault (index , "" );
176+ assert value != null ;
177+ if (!value .equals (expectedValue )) {
178+ throw new RuntimeException (String .format ("getValueOr(index, default) method call failed for %d - expected %s found %s%n" , index , expectedValue , value ));
179+ }
180+ break ;
179181
180- }
181- case 2 : { //find(int)
182- Holder <String > holder = array .find (index );
183- Holder <String > expectedHolder = (expected .containsKey (index )) ? Holders .of (expected .get (index )) : Holders .of ();
184- if (!equivalentHolder (holder , expectedHolder )) {
185- throw new RuntimeException (String .format ("find(index) method call failed for %d - expected %s found %s%n" , index , expectedHolder , holder ));
186182 }
187- break ;
188- }
189- case 3 : { //findEntry(int)
190- Holder < JImmutableMap . Entry < Integer , String >> holder = array . findEntry ( index );
191- Holder < JImmutableMap . Entry < Integer , String >> expectedHolder = ( expected . containsKey ( index )) ? Holders . of ( new MapEntry <>( index , expected . get ( index ))) : Holders . of ( );
192- if (! equivalentHolder ( holder , expectedHolder )) {
193- throw new RuntimeException ( String . format ( "findEntry(index) method call failed for %d - expected %s found %s%n" , index , expectedHolder , holder )) ;
183+ case 2 : { //find(int)
184+ Holder < String > holder = array . find ( index );
185+ Holder < String > expectedHolder = ( expected . containsKey ( index )) ? Holders . of ( expected . get ( index )) : Holders . of ();
186+ if (! equivalentHolder ( holder , expectedHolder )) {
187+ throw new RuntimeException ( String . format ( "find( index) method call failed for %d - expected %s found %s%n" , index , expectedHolder , holder ) );
188+ }
189+ break ;
194190 }
195- break ;
196- }
197- default :
198- throw new RuntimeException ();
191+ case 3 : { //findEntry(int)
192+ Holder <JImmutableMap .Entry <Integer , String >> holder = array .findEntry (index );
193+ Holder <JImmutableMap .Entry <Integer , String >> expectedHolder = (expected .containsKey (index )) ? Holders .of (new MapEntry <>(index , expected .get (index ))) : Holders .of ();
194+ if (!equivalentHolder (holder , expectedHolder )) {
195+ throw new RuntimeException (String .format ("findEntry(index) method call failed for %d - expected %s found %s%n" , index , expectedHolder , holder ));
196+ }
197+ break ;
198+ }
199+ default :
200+ throw new RuntimeException ();
199201 }
200202 }
201203 verifyCursor (array , expected );
@@ -244,6 +246,7 @@ public void verifyContents(JImmutableArray<String> array,
244246 throw new RuntimeException ("method call failed - getMap()\n " );
245247 }
246248 array .checkInvariants ();
249+ verifySerializable (null , array );
247250 }
248251
249252 private void verifyCursor (JImmutableArray <String > array ,
0 commit comments