name:
src/test/java/io/protobase/f7/spreadsheet/F7CodeExecutorGeneralEqualityComparisonTest.java
-rw-r--r--
5671
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 F7CodeExecutorGeneralEqualityComparisonTest 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("= 1.1928731 = 1.1928731")).isEqualTo(true);
18 }
19
20 @Test
21 public void test_String() {
22 assertThat(run("= \"Yes\" = \"Yes\"")).isEqualTo(true);
23 assertThat(run("= \"Yes\" = \"No\"")).isEqualTo(false);
24 assertThat(run("= \"\" = \"\"")).isEqualTo(true);
25 }
26
27 @Test
28 public void test_Boolean() {
29 assertThat(run("= TRUE = TRUE")).isEqualTo(true);
30 assertThat(run("= FALSE = FALSE")).isEqualTo(true);
31 assertThat(run("= TRUE = FALSE")).isEqualTo(false);
32 }
33
34 @Test
35 public void test_ArrayLiteral() {
36 assertThat(run("= {1, 2, 3} = {1, 2, 3}")).isEqualTo(true);
37 assertThat(run("= {1, 2, 3} = {44}")).isEqualTo(false);
38 assertThat(run("= {44, #REF!} = {44, #REF!}")).isEqualTo(true);
39 }
40
41 @Test
42 public void test_NumberToBoolean() {
43 assertThat(run("= 0 = TRUE")).isEqualTo(false);
44 assertThat(run("= 1 = TRUE")).isEqualTo(false);
45 assertThat(run("= 1 = FALSE")).isEqualTo(false);
46 assertThat(run("= 0 = FALSE")).isEqualTo(false);
47 }
48
49 @Test
50 public void test_NumberToString() {
51 assertThat(run("= 0 = \"\"")).isEqualTo(false);
52 assertThat(run("= 0 = \"0\"")).isEqualTo(false);
53 assertThat(run("= 1 = \"0\"")).isEqualTo(false);
54 assertThat(run("= 1 = \"1\"")).isEqualTo(false);
55 }
56
57 @Test
58 public void test_NumberToArrayLiteral() {
59 assertThat(run("= 0 = {0, 1, 2}")).isEqualTo(true);
60 assertThat(run("= 1 = {0, 1, 2}")).isEqualTo(false);
61 }
62
63 @Test
64 public void test_NumberToBlank() {
65 when(collateralLookup.apply(A1, M44_RANGE)).thenReturn(null);
66 when(collateralLookup.apply(A1, 0.0)).thenReturn(0.0);
67 when(collateralLookup.apply(A1, 1.0)).thenReturn(1.0);
68 when(collateralLookup.apply(A1, -1.0)).thenReturn(-1.0);
69 assertThat(runWithLookup("= 0 = M44")).isEqualTo(true);
70 assertThat(runWithLookup("= 1 = M44")).isEqualTo(false);
71 assertThat(runWithLookup("= M44 = 0")).isEqualTo(true);
72 assertThat(runWithLookup("= M44 = 1")).isEqualTo(false);
73 assertThat(runWithLookup("= -1 = M44")).isEqualTo(false);
74 assertThat(runWithLookup("= M44 = -1")).isEqualTo(false);
75 verify(collateralLookup, VerificationModeFactory.times(6)).apply(A1, M44_RANGE);
76 verify(collateralLookup, VerificationModeFactory.times(2)).apply(A1, 0.0);
77 verify(collateralLookup, VerificationModeFactory.times(4)).apply(A1, 1.0);
78 verify(collateralLookup, VerificationModeFactory.times(2)).apply(A1, -1.0);
79 }
80
81 @Test
82 public void test_StringToBoolean() {
83 assertThat(run("= \"TRUE\" = TRUE")).isEqualTo(false);
84 assertThat(run("= \"FALSE\" = FALSE")).isEqualTo(false);
85 }
86
87 @Test
88 public void test_StringToBlank() {
89 when(collateralLookup.apply(A1, M44_RANGE)).thenReturn(null);
90 when(collateralLookup.apply(A1, "")).thenReturn("");
91 when(collateralLookup.apply(A1, "One")).thenReturn("One");
92 when(collateralLookup.apply(A1, " ")).thenReturn(" ");
93 assertThat(runWithLookup("= \"\" = M44")).isEqualTo(true);
94 assertThat(runWithLookup("= M44 = \"\"")).isEqualTo(true);
95 assertThat(runWithLookup("= \" \" = M44")).isEqualTo(false);
96 assertThat(runWithLookup("= M44 = \" \"")).isEqualTo(false);
97 assertThat(runWithLookup("= \"One\" = M44")).isEqualTo(false);
98 assertThat(runWithLookup("= M44 = \"One\"")).isEqualTo(false);
99 verify(collateralLookup, VerificationModeFactory.times(6)).apply(A1, M44_RANGE);
100 verify(collateralLookup, VerificationModeFactory.times(2)).apply(A1, "");
101 verify(collateralLookup, VerificationModeFactory.times(2)).apply(A1, " ");
102 verify(collateralLookup, VerificationModeFactory.times(2)).apply(A1, "One");
103 }
104
105 @Test
106 public void test_BooleanToBlank() {
107 when(collateralLookup.apply(A1, M44_RANGE)).thenReturn(null);
108 when(collateralLookup.apply(A1, true)).thenReturn(true);
109 when(collateralLookup.apply(A1, false)).thenReturn(false);
110 assertThat(runWithLookup("= TRUE = M44")).isEqualTo(false);
111 assertThat(runWithLookup("= FALSE = M44")).isEqualTo(true);
112 assertThat(runWithLookup("= M44 = TRUE")).isEqualTo(false);
113 assertThat(runWithLookup("= M44 = FALSE")).isEqualTo(true);
114 verify(collateralLookup, VerificationModeFactory.times(4)).apply(A1, M44_RANGE);
115 verify(collateralLookup, VerificationModeFactory.times(2)).apply(A1, true);
116 verify(collateralLookup, VerificationModeFactory.times(2)).apply(A1, false);
117 }
118
119 @Test
120 public void test_ArrayLiteralToString() {
121 assertThat(run("= {\"A\", \"B\"} = \"A\"")).isEqualTo(true);
122 assertThat(run("= \"A\" = {\"A\", \"B\"}")).isEqualTo(true);
123 assertThat(run("= \"B\" = {\"A\", \"B\"}")).isEqualTo(false);
124 }
125
126 @Test
127 public void test_ArrayLiteralToBoolean() {
128 assertThat(run("= {TRUE, FALSE} = TRUE")).isEqualTo(true);
129 assertThat(run("= TRUE = {TRUE, FALSE}")).isEqualTo(true);
130 assertThat(run("= {FALSE, FALSE} = TRUE")).isEqualTo(false);
131 assertThat(run("= TRUE = {FALSE, FALSE}")).isEqualTo(false);
132 }
133
134 @Test
135 public void test_Error() {
136 assertThat(run("= TRUE = #REF!")).isEqualTo(new RefException());
137 assertThat(run("= #REF! = TRUE")).isEqualTo(new RefException());
138 }
139}