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