-
Notifications
You must be signed in to change notification settings - Fork 21k
Expand file tree
/
Copy pathSegmentTree2DTest.java
More file actions
71 lines (53 loc) · 2 KB
/
SegmentTree2DTest.java
File metadata and controls
71 lines (53 loc) · 2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package com.thealgorithms.datastructures.trees;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
public class SegmentTree2DTest {
@Test
void testInitialEmptyQueries() {
SegmentTree2D segmentTree = new SegmentTree2D(4, 4);
// Initial tree should return 0 for any query
assertEquals(0, segmentTree.query(0, 4, 0, 4));
assertEquals(0, segmentTree.query(1, 3, 1, 3));
}
@Test
void testUpdateAndPointQuery() {
SegmentTree2D segmentTree = new SegmentTree2D(5, 5);
segmentTree.update(2, 3, 10);
segmentTree.update(0, 0, 5);
// Querying single points [row, row+1) x [col, col+1)
assertEquals(10, segmentTree.query(2, 3, 3, 4));
assertEquals(5, segmentTree.query(0, 1, 0, 1));
// Empty point should be 0
assertEquals(0, segmentTree.query(1, 2, 1, 2));
}
@Test
void testSubmatrixQuery() {
SegmentTree2D segmentTree = new SegmentTree2D(4, 4);
// Matrix simulation:
// [1, 2, 0, 0]
// [3, 4, 0, 0]
// [0, 0, 0, 0]
// [0, 0, 0, 0]
segmentTree.update(0, 0, 1);
segmentTree.update(0, 1, 2);
segmentTree.update(1, 0, 3);
segmentTree.update(1, 1, 4);
// Top-left 2x2 sum: 1+2+3+4 = 10
assertEquals(10, segmentTree.query(0, 2, 0, 2));
// First row sum: 1+2 = 3
assertEquals(3, segmentTree.query(0, 1, 0, 4));
// Second column sum: 2+4 = 6
assertEquals(6, segmentTree.query(0, 4, 1, 2));
}
@Test
void testUpdateOverwriting() {
SegmentTree2D segmentTree = new SegmentTree2D(3, 3);
segmentTree.update(1, 1, 5);
assertEquals(5, segmentTree.query(1, 2, 1, 2));
// Overwrite the same point
segmentTree.update(1, 1, 20);
assertEquals(20, segmentTree.query(1, 2, 1, 2));
// Full matrix sum should just be this point
assertEquals(20, segmentTree.query(0, 3, 0, 3));
}
}