name:
src/test/java/io/protobase/f7/spreadsheet/F7CodeExecutorGeneralGreaterThanOrEqualToComparisonTest.java
-rw-r--r--
6833
1package io.protobase.f7.spreadsheet;
2
3import io.protobase.f7.errors.RefException;
4import io.protobase.f7.testutils.TestF7CodeExecutor;
5import org.junit.Test;
6import org.mockito.internal.verification.VerificationModeFactory;
7
8import static com.google.common.truth.Truth.assertThat;
9import static org.mockito.Mockito.verify;
10import static org.mockito.Mockito.when;
11
12public class F7CodeExecutorGeneralGreaterThanOrEqualToComparisonTest extends TestF7CodeExecutor {
13 @Test
14 public void test_Number() {
15 assertThat(run("= 1 >= 1")).isEqualTo(true);
16 assertThat(run("= 1 >= 2")).isEqualTo(false);
17 assertThat(run("= 2 >= 1")).isEqualTo(true);
18 assertThat(run("= -10 >= 0")).isEqualTo(false);
19 assertThat(run("= 0 >= -10")).isEqualTo(true);
20 assertThat(run("= 1.1928731 >= 1.1928731")).isEqualTo(true);
21 }
22
23 @Test
24 public void test_String() {
25 assertThat(run("= \"Yes\" >= \"Yes\"")).isEqualTo(true);
26 assertThat(run("= \"Yes\" >= \"No\"")).isEqualTo(true);
27 assertThat(run("= \"No\">= \"Yes\"")).isEqualTo(false);
28 assertThat(run("= \"\" >= \"\"")).isEqualTo(true);
29 assertThat(run("= \" \" >= \"\"")).isEqualTo(true);
30 }
31
32 @Test
33 public void test_Boolean() {
34 assertThat(run("= TRUE >= TRUE")).isEqualTo(true);
35 assertThat(run("= FALSE >= FALSE")).isEqualTo(true);
36 assertThat(run("= TRUE >= FALSE")).isEqualTo(true);
37 assertThat(run("= FALSE >= TRUE")).isEqualTo(false);
38 }
39
40 @Test
41 public void test_ArrayLiteral() {
42 assertThat(run("= {1, 2, 3} >= {1, 2, 3}")).isEqualTo(true);
43 assertThat(run("= {1, 2, 3} >= {44}")).isEqualTo(false);
44 assertThat(run("= {44, 2, 3} >= {1}")).isEqualTo(true);
45 assertThat(run("= {44, #REF!} >= {44, #REF!}")).isEqualTo(true);
46 }
47
48 @Test
49 public void test_NumberToBoolean() {
50 assertThat(run("= 0 >= TRUE")).isEqualTo(false);
51 assertThat(run("= 1 >= TRUE")).isEqualTo(false);
52 assertThat(run("= 1 >= FALSE")).isEqualTo(false);
53 assertThat(run("= 0 >= FALSE")).isEqualTo(false);
54 assertThat(run("= -1 >= TRUE")).isEqualTo(false);
55 assertThat(run("= -1 >= FALSE")).isEqualTo(false);
56 }
57
58 @Test
59 public void test_NumberToString() {
60 assertThat(run("= 0 >= \"\"")).isEqualTo(false);
61 assertThat(run("= 0 >= \"0\"")).isEqualTo(false);
62 assertThat(run("= 1 >= \"0\"")).isEqualTo(false);
63 assertThat(run("= 1 >= \"1\"")).isEqualTo(false);
64 assertThat(run("= -1 >= \"1\"")).isEqualTo(false);
65 assertThat(run("= 1000 >= \"-100\"")).isEqualTo(false);
66 assertThat(run("= 1000 >= \"Anything in the world.\"")).isEqualTo(false);
67 }
68
69 @Test
70 public void test_NumberToArrayLiteral() {
71 assertThat(run("= -1 >= {0, 1, 2}")).isEqualTo(false);
72 assertThat(run("= 0 >= {0, 1, 2}")).isEqualTo(true);
73 assertThat(run("= 1 >= {0, 1, 2}")).isEqualTo(true);
74 assertThat(run("= 0 >= {1, 1, 2}")).isEqualTo(false);
75 assertThat(run("= 0 >= {1, \"Ignore me.\"}")).isEqualTo(false);
76 }
77
78 @Test
79 public void test_NumberToBlank() {
80 when(collateralLookup.apply(A1, M44_RANGE)).thenReturn(null);
81 when(collateralLookup.apply(A1, 0.0)).thenReturn(0.0);
82 when(collateralLookup.apply(A1, 1.0)).thenReturn(1.0);
83 when(collateralLookup.apply(A1, -1.0)).thenReturn(-1.0);
84 assertThat(runWithLookup("= 0 >= M44")).isEqualTo(true);
85 assertThat(runWithLookup("= 1 >= M44")).isEqualTo(true);
86 assertThat(runWithLookup("= M44 >= 0")).isEqualTo(true);
87 assertThat(runWithLookup("= M44 >= 1")).isEqualTo(false);
88 assertThat(runWithLookup("= -1 >= M44")).isEqualTo(false);
89 assertThat(runWithLookup("= M44 >= -1")).isEqualTo(true);
90 verify(collateralLookup, VerificationModeFactory.times(6)).apply(A1, M44_RANGE);
91 verify(collateralLookup, VerificationModeFactory.times(2)).apply(A1, 0.0);
92 verify(collateralLookup, VerificationModeFactory.times(4)).apply(A1, 1.0);
93 verify(collateralLookup, VerificationModeFactory.times(2)).apply(A1, -1.0);
94
95 }
96
97 @Test
98 public void test_StringToBoolean() {
99 assertThat(run("= \"TRUE\" >= TRUE")).isEqualTo(false);
100 assertThat(run("= \"FALSE\" >= FALSE")).isEqualTo(false);
101 assertThat(run("= \"TRUE\" >= TRUE")).isEqualTo(false);
102 assertThat(run("= \"\" >= TRUE")).isEqualTo(false);
103 assertThat(run("= \"\" >= FALSE")).isEqualTo(false);
104 }
105
106 @Test
107 public void test_StringToBlank() {
108 when(collateralLookup.apply(A1, M44_RANGE)).thenReturn(null);
109 when(collateralLookup.apply(A1, "")).thenReturn("");
110 when(collateralLookup.apply(A1, "One")).thenReturn("One");
111 when(collateralLookup.apply(A1, " ")).thenReturn(" ");
112 assertThat(runWithLookup("= \"\" >= M44")).isEqualTo(true);
113 assertThat(runWithLookup("= M44 >= \"\"")).isEqualTo(true);
114 assertThat(runWithLookup("= \" \" >= M44")).isEqualTo(true);
115 assertThat(runWithLookup("= M44 >= \" \"")).isEqualTo(false);
116 assertThat(runWithLookup("= \"One\" >= M44")).isEqualTo(true);
117 assertThat(runWithLookup("= M44 >= \"One\"")).isEqualTo(false);
118 verify(collateralLookup, VerificationModeFactory.times(6)).apply(A1, M44_RANGE);
119 verify(collateralLookup, VerificationModeFactory.times(2)).apply(A1, "");
120 verify(collateralLookup, VerificationModeFactory.times(2)).apply(A1, " ");
121 verify(collateralLookup, VerificationModeFactory.times(2)).apply(A1, "One");
122 }
123
124 @Test
125 public void test_BooleanToBlank() {
126 when(collateralLookup.apply(A1, M44_RANGE)).thenReturn(null);
127 when(collateralLookup.apply(A1, true)).thenReturn(true);
128 when(collateralLookup.apply(A1, false)).thenReturn(false);
129 assertThat(runWithLookup("= TRUE >= M44")).isEqualTo(true);
130 assertThat(runWithLookup("= FALSE >= M44")).isEqualTo(true);
131 assertThat(runWithLookup("= M44 >= TRUE")).isEqualTo(false);
132 assertThat(runWithLookup("= M44 >= FALSE")).isEqualTo(true);
133 verify(collateralLookup, VerificationModeFactory.times(4)).apply(A1, M44_RANGE);
134 verify(collateralLookup, VerificationModeFactory.times(2)).apply(A1, true);
135 verify(collateralLookup, VerificationModeFactory.times(2)).apply(A1, false);
136 }
137
138 @Test
139 public void test_ArrayLiteralToString() {
140 assertThat(run("= {\"A\", \"B\"} >= \"A\"")).isEqualTo(true);
141 assertThat(run("= {\"A\", \"B\"} >= \"B\"")).isEqualTo(false);
142 assertThat(run("= \"A\" >= {\"A\", \"B\"}")).isEqualTo(true);
143 assertThat(run("= \"B\" >= {\"A\", \"B\"}")).isEqualTo(true);
144 }
145
146 @Test
147 public void test_ArrayLiteralToBoolean() {
148 assertThat(run("= {TRUE, FALSE} >= TRUE")).isEqualTo(true);
149 assertThat(run("= TRUE >= {TRUE, FALSE}")).isEqualTo(true);
150 assertThat(run("= {FALSE, FALSE} >= TRUE")).isEqualTo(false);
151 assertThat(run("= TRUE >= {FALSE, FALSE}")).isEqualTo(true);
152 }
153
154 @Test
155 public void test_Error() {
156 assertThat(run("= 10 >= #REF!")).isEqualTo(new RefException());
157 assertThat(run("= #REF! >= TRUE")).isEqualTo(new RefException());
158 }
159}