name:
src/test/java/io/protobase/f7/spreadsheet/F7CodeExecutorGeneralGreaterThanComparisonTest.java
-rw-r--r--
6774
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 F7CodeExecutorGeneralGreaterThanComparisonTest extends TestF7CodeExecutor {
13 @Test
14 public void test_Number() {
15 assertThat(run("= 1 > 1")).isEqualTo(false);
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(false);
21 }
22
23 @Test
24 public void test_String() {
25 assertThat(run("= \"Yes\" > \"Yes\"")).isEqualTo(false);
26 assertThat(run("= \"Yes\" > \"No\"")).isEqualTo(true);
27 assertThat(run("= \"No\"> \"Yes\"")).isEqualTo(false);
28 assertThat(run("= \"\" > \"\"")).isEqualTo(false);
29 assertThat(run("= \" \" > \"\"")).isEqualTo(true);
30 }
31
32 @Test
33 public void test_Boolean() {
34 assertThat(run("= TRUE > TRUE")).isEqualTo(false);
35 assertThat(run("= FALSE > FALSE")).isEqualTo(false);
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(false);
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(false);
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(false);
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(false);
85 assertThat(runWithLookup("= 1 > M44")).isEqualTo(true);
86 assertThat(runWithLookup("= M44 > 0")).isEqualTo(false);
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 @Test
97 public void test_StringToBoolean() {
98 assertThat(run("= \"TRUE\" > TRUE")).isEqualTo(false);
99 assertThat(run("= \"FALSE\" > FALSE")).isEqualTo(false);
100 assertThat(run("= \"TRUE\" > TRUE")).isEqualTo(false);
101 assertThat(run("= \"\" > TRUE")).isEqualTo(false);
102 assertThat(run("= \"\" > FALSE")).isEqualTo(false);
103 }
104
105 @Test
106 public void test_StringToBlank() {
107 when(collateralLookup.apply(A1, M44_RANGE)).thenReturn(null);
108 when(collateralLookup.apply(A1, "")).thenReturn("");
109 when(collateralLookup.apply(A1, "One")).thenReturn("One");
110 when(collateralLookup.apply(A1, " ")).thenReturn(" ");
111 assertThat(runWithLookup("= \"\" > M44")).isEqualTo(false);
112 assertThat(runWithLookup("= M44 > \"\"")).isEqualTo(false);
113 assertThat(runWithLookup("= \" \" > M44")).isEqualTo(true);
114 assertThat(runWithLookup("= M44 > \" \"")).isEqualTo(false);
115 assertThat(runWithLookup("= \"One\" > M44")).isEqualTo(true);
116 assertThat(runWithLookup("= M44 > \"One\"")).isEqualTo(false);
117 verify(collateralLookup, VerificationModeFactory.times(6)).apply(A1, M44_RANGE);
118 verify(collateralLookup, VerificationModeFactory.times(2)).apply(A1, "");
119 verify(collateralLookup, VerificationModeFactory.times(2)).apply(A1, " ");
120 verify(collateralLookup, VerificationModeFactory.times(2)).apply(A1, "One");
121 }
122
123 @Test
124 public void test_BooleanToBlank() {
125 when(collateralLookup.apply(A1, M44_RANGE)).thenReturn(null);
126 when(collateralLookup.apply(A1, true)).thenReturn(true);
127 when(collateralLookup.apply(A1, false)).thenReturn(false);
128 assertThat(runWithLookup("= TRUE > M44")).isEqualTo(true);
129 assertThat(runWithLookup("= FALSE > M44")).isEqualTo(false);
130 assertThat(runWithLookup("= M44 > TRUE")).isEqualTo(false);
131 assertThat(runWithLookup("= M44 > FALSE")).isEqualTo(false);
132 verify(collateralLookup, VerificationModeFactory.times(4)).apply(A1, M44_RANGE);
133 verify(collateralLookup, VerificationModeFactory.times(2)).apply(A1, true);
134 verify(collateralLookup, VerificationModeFactory.times(2)).apply(A1, false);
135 }
136
137 @Test
138 public void test_ArrayLiteralToString() {
139 assertThat(run("= {\"A\", \"B\"} > \"A\"")).isEqualTo(false);
140 assertThat(run("= {\"A\", \"B\"} > \"B\"")).isEqualTo(false);
141 assertThat(run("= \"A\" > {\"A\", \"B\"}")).isEqualTo(false);
142 assertThat(run("= \"B\" > {\"A\", \"B\"}")).isEqualTo(true);
143 }
144
145 @Test
146 public void test_ArrayLiteralToBoolean() {
147 assertThat(run("= {TRUE, FALSE} > TRUE")).isEqualTo(false);
148 assertThat(run("= TRUE > {TRUE, FALSE}")).isEqualTo(false);
149 assertThat(run("= {FALSE, FALSE} > TRUE")).isEqualTo(false);
150 assertThat(run("= TRUE > {FALSE, FALSE}")).isEqualTo(true);
151 }
152
153 @Test
154 public void test_Error() {
155 assertThat(run("= 10 > #REF!")).isEqualTo(new RefException());
156 assertThat(run("= #REF! > TRUE")).isEqualTo(new RefException());
157 }
158}