name:
src/test/java/io/protobase/f7/models/CellQueryTest.java
-rw-r--r--
3886
1package io.protobase.f7.models;
2
3import io.protobase.f7.errors.ValueException;
4import org.junit.Test;
5
6import static com.google.common.truth.Truth.assertThat;
7
8public class CellQueryTest {
9 private static final CellQuery A1 = CellQuery.builder()
10 .grid("Alpha")
11 .columnsBetween(0, 0)
12 .rowsBetween(0, 0)
13 .build();
14 private static final CellQuery B1 = CellQuery.builder()
15 .grid("Alpha")
16 .columnsBetween(1, 1)
17 .rowsBetween(0, 0)
18 .build();
19 private static final CellQuery B2 = CellQuery.builder()
20 .grid("Alpha")
21 .columnsBetween(1, 1)
22 .rowsBetween(1, 1)
23 .build();
24 private static final CellQuery B99 = CellQuery.builder()
25 .grid("Alpha")
26 .columnsBetween(1, 1)
27 .rowsBetween(98, 98)
28 .build();
29 private static final CellQuery C14 = CellQuery.builder()
30 .grid("Alpha")
31 .columnsBetween(2, 2)
32 .rowsBetween(13, 13)
33 .build();
34 private static final CellQuery A1toB1 = CellQuery.builder()
35 .grid("Alpha")
36 .columnsBetween(0, 1)
37 .rowsBetween(0, 0)
38 .build();
39 private static final CellQuery AtoB = CellQuery.builder()
40 .grid("Alpha")
41 .columnsBetween(0, 1)
42 .openRowsStartingAtZero()
43 .build();
44
45 @Test
46 public void testIntersects() {
47 assertThat(A1.intersects(B1)).isFalse();
48 assertThat(B1.intersects(A1)).isFalse();
49 assertThat(B2.intersects(B2)).isTrue();
50 assertThat(B99.intersects(B2)).isFalse();
51 assertThat(A1toB1.intersects(A1)).isTrue();
52 assertThat(A1toB1.intersects(B1)).isTrue();
53 assertThat(AtoB.intersects(B1)).isTrue();
54 assertThat(AtoB.intersects(A1)).isTrue();
55 assertThat(AtoB.intersects(B2)).isTrue();
56 assertThat(AtoB.intersects(B99)).isTrue();
57 assertThat(AtoB.intersects(C14)).isFalse();
58 }
59
60 @Test
61 public void testToBounded() {
62 CellQuery unboundedRows = CellQuery.builder()
63 .columnsBetween(0, 1)
64 .openRowsStartingAtZero()
65 .build();
66 CellQuery expectedBoundedRows = CellQuery.builder()
67 .columnsBetween(0, 1)
68 .rowsBetween(0, 22)
69 .build();
70 assertThat(unboundedRows.toBounded(10, 22)).isEqualTo(expectedBoundedRows);
71 CellQuery unboundedColumns = CellQuery.builder()
72 .openColumnsStartingAtZero()
73 .rowsBetween(0, 20)
74 .build();
75 CellQuery expectedBoundedColumns = CellQuery.builder()
76 .columnsBetween(0, 44)
77 .rowsBetween(0, 20)
78 .build();
79 assertThat(unboundedColumns.toBounded(44, 30)).isEqualTo(expectedBoundedColumns);
80 }
81
82 @Test
83 public void testToBounded_unchangedBoundsTooHigh() {
84 CellQuery alreadyBounded = CellQuery.builder()
85 .columnsBetween(0, 1)
86 .rowsBetween(0, 22)
87 .build();
88 assertThat(alreadyBounded.toBounded(100, 100)).isEqualTo(alreadyBounded);
89 }
90
91 @Test
92 public void testToBounded_subset() {
93 CellQuery alreadyBounded = CellQuery.builder()
94 .columnsBetween(0, 44)
95 .rowsBetween(0, 22)
96 .build();
97 CellQuery subset = CellQuery.builder()
98 .columnsBetween(0, 10)
99 .rowsBetween(0, 12)
100 .build();
101 assertThat(alreadyBounded.toBounded(10, 12)).isEqualTo(subset);
102 }
103
104 @Test
105 public void testBuilderExpand() {
106 CellQuery expanded = CellQuery.builder(B2)
107 .expand(A1)
108 .expand(A1toB1)
109 .expand(B99)
110 .expand(C14)
111 .build();
112 CellQuery expected = CellQuery.builder()
113 .grid("Alpha")
114 .columnsBetween(0, 2)
115 .rowsBetween(0, 98)
116 .build();
117 assertThat(expanded).isEqualTo(expected);
118 }
119
120 @Test
121 public void testBuilderExpand_differentGrids() {
122 ValueException exception = null;
123 try {
124 CellQuery.builder(A1).expand(CellQuery.builder(A1).grid("DifferentGrid").build()).build();
125 } catch (ValueException e) {
126 exception = e;
127 }
128 assertThat(exception).isNotNull();
129 }
130}