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/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}