f7
f7 is a spreadsheet formula execution library
git clone https://git.vogt.world/f7.git
Log | Files | README.md | LICENSE.md
← All files
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}