33import static org .junit .Assert .assertTrue ;
44
55import java .util .ArrayList ;
6+ import java .util .Arrays ;
7+ import java .util .Collection ;
68
79import org .junit .Test ;
810
1113import com .jwetherell .algorithms .data_structures .SegmentTree .FlatSegmentTree ;
1214
1315public class SegmentTreeTests {
16+
17+ private static boolean collectionsEqual (Collection <?> c1 , Collection <?> c2 ) {
18+ if (c1 .size ()!=c2 .size ()) return false ;
19+ return c1 .containsAll (c2 ) && c2 .containsAll (c1 );
20+ }
1421
1522 @ Test
1623 public void testSegmentTree () {
@@ -41,7 +48,7 @@ public void testSegmentTree() {
4148 segments .add (new SegmentTree .Data .RangeMaximumData <Integer >(4 , (Integer ) 1 ));
4249 segments .add (new SegmentTree .Data .RangeMaximumData <Integer >(5 , (Integer ) 5 ));
4350 segments .add (new SegmentTree .Data .RangeMaximumData <Integer >(6 , (Integer ) 0 ));
44- segments .add (new SegmentTree .Data .RangeMaximumData <Integer >(7 , 17 , 7 ));
51+ segments .add (new SegmentTree .Data .RangeMaximumData <Integer >(7 , 17 , ( Integer ) 7 ));
4552 segments .add (new SegmentTree .Data .RangeMaximumData <Integer >(21 , (Integer ) 10 ));
4653 FlatSegmentTree <SegmentTree .Data .RangeMaximumData <Integer >> tree = new FlatSegmentTree <SegmentTree .Data .RangeMaximumData <Integer >>(segments , 3 );
4754
@@ -133,36 +140,22 @@ public void testSegmentTree() {
133140 DynamicSegmentTree <SegmentTree .Data .IntervalData <String >> tree = new DynamicSegmentTree <SegmentTree .Data .IntervalData <String >>(segments );
134141
135142 SegmentTree .Data .IntervalData <String > query = tree .query (2 ); // Stabbing
136- assertTrue ("Segment tree query error. query=2 result=" +query , query .getData (). contains (RED ));
143+ assertTrue ("Segment tree query error. query=2 result=" +query , collectionsEqual ( query .getData (), Arrays . asList (RED ) ));
137144
138145 query = tree .query (4 ); // Stabbing query
139- assertTrue ("Segment tree query error. query=4 result=" +query , query .getData (). contains ( GREEN ));
146+ assertTrue ("Segment tree query error. query=4 result=" +query , collectionsEqual ( query .getData (), Arrays . asList ( RED , ORANGE , GREEN ) ));
140147
141148 query = tree .query (9 ); // Stabbing query
142- assertTrue ("Segment tree query error. query=9 result=" +query , query .getData (). contains ( PURPLE ));
149+ assertTrue ("Segment tree query error. query=9 result=" +query , collectionsEqual ( query .getData (), Arrays . asList ( GREEN , DARK_GREEN , BLUE , PURPLE ) ));
143150
144151 query = tree .query (1 , 16 ); // Range query
145- assertTrue ("Segment tree query error. query=1->16 result=" +query , (query .getData ().contains (RED ) &&
146- query .getData ().contains (ORANGE ) &&
147- query .getData ().contains (GREEN ) &&
148- query .getData ().contains (DARK_GREEN ) &&
149- query .getData ().contains (BLUE ) &&
150- query .getData ().contains (PURPLE ) &&
151- query .getData ().contains (BLACK ))
152- );
152+ assertTrue ("Segment tree query error. query=1->16 result=" +query , collectionsEqual (query .getData (), Arrays .asList (RED , ORANGE , GREEN , DARK_GREEN , BLUE , PURPLE , BLACK )));
153153
154154 query = tree .query (7 , 14 ); // Range query
155- assertTrue ("Segment tree query error. query=7->14 result=" +query , (query .getData ().contains (GREEN ) &&
156- query .getData ().contains (DARK_GREEN ) &&
157- query .getData ().contains (BLUE ) &&
158- query .getData ().contains (PURPLE ) &&
159- query .getData ().contains (BLACK ))
160- );
155+ assertTrue ("Segment tree query error. query=7->14 result=" +query , collectionsEqual (query .getData (), Arrays .asList (GREEN , DARK_GREEN , BLUE , PURPLE , BLACK )));
161156
162157 query = tree .query (14 , 15 ); // Range query
163- assertTrue ("Segment tree query error. query=14->15 result=" +query , (query .getData ().contains (PURPLE ) &&
164- query .getData ().contains (BLACK ))
165- );
158+ assertTrue ("Segment tree query error. query=14->15 result=" +query , collectionsEqual (query .getData (), Arrays .asList (PURPLE , BLACK )));
166159 }
167160
168161 { // Lifespan Interval Segment tree
@@ -182,30 +175,19 @@ public void testSegmentTree() {
182175 DynamicSegmentTree <SegmentTree .Data .IntervalData <String >> tree = new DynamicSegmentTree <SegmentTree .Data .IntervalData <String >>(segments , 25 );
183176
184177 SegmentTree .Data .IntervalData <String > query = tree .query (1890 ); // Stabbing
185- assertTrue ("Segment tree query error. query=1890 result=" +query , (query .getData ().contains (stravinsky ) &&
186- query .getData ().contains (schoenberg ) &&
187- query .getData ().contains (grieg ))
188- );
178+ assertTrue ("Segment tree query error. query=1890 result=" +query , collectionsEqual (query .getData (), Arrays .asList (stravinsky , schoenberg , grieg )));
189179
190180 query = tree .query (1909 ); // Stabbing query
191- assertTrue ("Segment tree query error. query=1909 result=" +query , (query .getData ().contains (stravinsky ) &&
192- query .getData ().contains (schoenberg ))
193- );
181+ assertTrue ("Segment tree query error. query=1909 result=" +query , collectionsEqual (query .getData (), Arrays .asList (stravinsky , schoenberg )));
194182
195183 query = tree .query (1585 ); // Stabbing query
196- assertTrue ("Segment tree query error. query=1585 result=" +query , query .getData (). contains (schuetz ));
184+ assertTrue ("Segment tree query error. query=1585 result=" +query , collectionsEqual ( query .getData (), Arrays . asList (schuetz ) ));
197185
198186 query = tree .query (1792 , 1903 ); // Range query
199- assertTrue ("Segment tree query error. query=1792->1903 result=" +query , (query .getData ().contains (stravinsky ) &&
200- query .getData ().contains (schoenberg ) &&
201- query .getData ().contains (grieg ) &&
202- query .getData ().contains (schubert ))
203- );
187+ assertTrue ("Segment tree query error. query=1792->1903 result=" +query , collectionsEqual (query .getData (), Arrays .asList (stravinsky , schoenberg , grieg , schubert )));
204188
205189 query = tree .query (1776 , 1799 ); // Range query
206- assertTrue ("Segment tree query error. query=1776->1799 result=" +query , (query .getData ().contains (schubert ) &&
207- query .getData ().contains (mozart ))
208- );
190+ assertTrue ("Segment tree query error. query=1776->1799 result=" +query , collectionsEqual (query .getData (), Arrays .asList (mozart , schubert )));
209191 }
210192 }
211193}
0 commit comments