Skip to content

Commit 36b9943

Browse files
author
Giovanni Cavallanti
committed
Merge pull request #1 from phishman3579/master
merge
2 parents 604cb0f + 2009b81 commit 36b9943

File tree

3 files changed

+37
-73
lines changed

3 files changed

+37
-73
lines changed

src/com/jwetherell/algorithms/data_structures/IntervalTree.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -198,8 +198,8 @@ else if (temp != null)
198198
} else if (index >= center) {
199199
// overlapEnd is sorted by end point
200200
List<IntervalData<O>> overlapEnd = new ArrayList<IntervalData<O>>();
201-
Collections.sort(overlapEnd,endComparator);
202201
overlapEnd.addAll(overlap);
202+
Collections.sort(overlapEnd,endComparator);
203203
for (IntervalData<O> data : overlapEnd) {
204204
if (data.end < index)
205205
break;

src/com/jwetherell/algorithms/data_structures/test/IntervalTreeTests.java

+17-35
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,19 @@
33
import static org.junit.Assert.assertTrue;
44

55
import java.util.ArrayList;
6+
import java.util.Arrays;
7+
import java.util.Collection;
68

79
import org.junit.Test;
810

911
import com.jwetherell.algorithms.data_structures.IntervalTree;
1012

1113
public class IntervalTreeTests {
14+
15+
private static boolean collectionsEqual(Collection<?> c1, Collection<?> c2) {
16+
if (c1.size()!=c2.size()) return false;
17+
return c1.containsAll(c2) && c2.containsAll(c1);
18+
}
1219

1320
@Test
1421
public void testIntervalTree() {
@@ -31,36 +38,22 @@ public void testIntervalTree() {
3138
IntervalTree<String> tree = new IntervalTree<String>(intervals);
3239

3340
IntervalTree.IntervalData<String> query = tree.query(2);
34-
assertTrue("Interval Tree query error. query=2 returned="+query, query.getData().contains(RED));
41+
assertTrue("Interval Tree query error. query=2 returned=" + query, collectionsEqual(query.getData(), Arrays.asList(RED)));
3542

3643
query = tree.query(4); // Stabbing query
37-
assertTrue("Interval Tree query error. query=4 returned="+query, query.getData().contains(GREEN));
44+
assertTrue("Interval Tree query error. query=4 returned=" + query, collectionsEqual(query.getData(), Arrays.asList(RED, ORANGE, GREEN)));
3845

3946
query = tree.query(9); // Stabbing query
40-
assertTrue("Interval Tree query error. query=9 returned="+query, query.getData().contains(PURPLE));
47+
assertTrue("Interval Tree query error. query=9 returned=" + query, collectionsEqual(query.getData(), Arrays.asList(GREEN, DARK_GREEN, BLUE, PURPLE)));
4148

4249
query = tree.query(1, 16); // Range query
43-
assertTrue("Interval Tree query error. query=1->16 returned="+query, (query.getData().contains(RED) &&
44-
query.getData().contains(ORANGE) &&
45-
query.getData().contains(GREEN) &&
46-
query.getData().contains(DARK_GREEN) &&
47-
query.getData().contains(BLUE) &&
48-
query.getData().contains(PURPLE) &&
49-
query.getData().contains(BLACK))
50-
);
50+
assertTrue("Interval Tree query error. query=1->16 returned=" + query, collectionsEqual(query.getData(), Arrays.asList(RED, ORANGE, GREEN, DARK_GREEN, BLUE, PURPLE, BLACK)));
5151

5252
query = tree.query(7, 14); // Range query
53-
assertTrue("Interval Tree query error. query=7->14 returned="+query, (query.getData().contains(GREEN) &&
54-
query.getData().contains(DARK_GREEN) &&
55-
query.getData().contains(BLUE) &&
56-
query.getData().contains(PURPLE) &&
57-
query.getData().contains(BLACK))
58-
);
53+
assertTrue("Interval Tree query error. query=7->14 returned=" + query, collectionsEqual(query.getData(), Arrays.asList(GREEN, DARK_GREEN, BLUE, PURPLE, BLACK)));
5954

6055
query = tree.query(14, 15); // Range query
61-
assertTrue((query.getData().contains(PURPLE) &&
62-
query.getData().contains(BLACK))
63-
);
56+
assertTrue("Interval Tree query error. query=14->15 returned=" + query, collectionsEqual(query.getData(), Arrays.asList(PURPLE, BLACK)));
6457
}
6558

6659
{ // Lifespan Interval tree
@@ -80,27 +73,16 @@ public void testIntervalTree() {
8073
IntervalTree<String> tree = new IntervalTree<String>(intervals);
8174

8275
IntervalTree.IntervalData<String> query = tree.query(1890); // Stabbing query
83-
assertTrue("Interval Tree query error. query=1890 returned="+query, (query.getData().contains(stravinsky) &&
84-
query.getData().contains(schoenberg) &&
85-
query.getData().contains(grieg))
86-
);
76+
assertTrue("Interval Tree query error. query=1890 returned=" + query, collectionsEqual(query.getData(), Arrays.asList(stravinsky, schoenberg, grieg)));
8777

8878
query = tree.query(1909); // Stabbing query
89-
assertTrue("Interval Tree query error. query=1909 returned="+query , (query.getData().contains(stravinsky) &&
90-
query.getData().contains(schoenberg))
91-
);
79+
assertTrue("Interval Tree query error. query=1909 returned=" + query , collectionsEqual(query.getData(), Arrays.asList(stravinsky, schoenberg)));
9280

9381
query = tree.query(1792, 1903); // Range query
94-
assertTrue("Interval Tree query error. query=1792->1903 returned="+query, query.getData().contains(stravinsky) &&
95-
query.getData().contains(schoenberg) &&
96-
query.getData().contains(grieg) &&
97-
query.getData().contains(schubert)
98-
);
82+
assertTrue("Interval Tree query error. query=1792->1903 returned=" + query, collectionsEqual(query.getData(), Arrays.asList(stravinsky, schoenberg, grieg, schubert)));
9983

10084
query = tree.query(1776, 1799); // Range query
101-
assertTrue("Interval Tree query error. query=1776->1799 returned="+query, (query.getData().contains(schubert) &&
102-
query.getData().contains(mozart))
103-
);
85+
assertTrue("Interval Tree query error. query=1776->1799 returned=" + query, collectionsEqual(query.getData(), Arrays.asList(schubert, mozart)));
10486
}
10587
}
10688
}

src/com/jwetherell/algorithms/data_structures/test/SegmentTreeTests.java

+19-37
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import static org.junit.Assert.assertTrue;
44

55
import java.util.ArrayList;
6+
import java.util.Arrays;
7+
import java.util.Collection;
68

79
import org.junit.Test;
810

@@ -11,6 +13,11 @@
1113
import com.jwetherell.algorithms.data_structures.SegmentTree.FlatSegmentTree;
1214

1315
public 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

Comments
 (0)