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/formulas/logic/NETest.java
-rw-r--r--
4378
  1package io.protobase.f7.formulas.logic;
  2
  3import io.protobase.f7.errors.DivException;
  4import io.protobase.f7.errors.NAException;
  5import io.protobase.f7.errors.ValueException;
  6import io.protobase.f7.models.Grid;
  7import io.protobase.f7.testutils.TestFormula;
  8import org.junit.Test;
  9
 10import static com.google.common.truth.Truth.assertThat;
 11import static org.mockito.Mockito.verify;
 12import static org.mockito.Mockito.verifyNoMoreInteractions;
 13import static org.mockito.Mockito.when;
 14
 15public class NETest extends TestFormula {
 16  @Test
 17  public void test_string() {
 18    assertThat(NE.SELF.apply(null, "Hello", "Diff")).isEqualTo(true);
 19    assertThat(NE.SELF.apply(null, "a", "a")).isEqualTo(false);
 20    assertThat(NE.SELF.apply(null, "a", "aa")).isEqualTo(true);
 21    assertThat(NE.SELF.apply(null, "aa", "a")).isEqualTo(true);
 22    assertThat(NE.SELF.apply(null, "a", "A")).isEqualTo(false);
 23    assertThat(NE.SELF.apply(null, "A", "a")).isEqualTo(false);
 24    assertThat(NE.SELF.apply(null, "A", "A")).isEqualTo(false);
 25    assertThat(NE.SELF.apply(null, "Aa", "A")).isEqualTo(true);
 26    assertThat(NE.SELF.apply(null, "AA", "a")).isEqualTo(true);
 27    assertThat(NE.SELF.apply(null, "aA", "a")).isEqualTo(true);
 28    assertThat(NE.SELF.apply(null, "aA", "A")).isEqualTo(true);
 29    assertThat(NE.SELF.apply(null, "押", "し")).isEqualTo(true);
 30    assertThat(NE.SELF.apply(null, "し", "押")).isEqualTo(true);
 31    assertThat(NE.SELF.apply(null, "String", 129321321.0)).isEqualTo(true);
 32    assertThat(NE.SELF.apply(null, 129321321.0, "String")).isEqualTo(true);
 33  }
 34
 35  @Test
 36  public void test_number() {
 37    assertThat(NE.SELF.apply(null, 1.0, 1.0)).isEqualTo(false);
 38    assertThat(NE.SELF.apply(null, 1.0, 0.0)).isEqualTo(true);
 39    assertThat(NE.SELF.apply(null, 0.0, 1.0)).isEqualTo(true);
 40    assertThat(NE.SELF.apply(null, 0.0, 0.0)).isEqualTo(false);
 41  }
 42
 43  @Test
 44  public void test_boolean() {
 45    assertThat(NE.SELF.apply(null, true, false)).isEqualTo(true);
 46    assertThat(NE.SELF.apply(null, false, true)).isEqualTo(true);
 47    assertThat(NE.SELF.apply(null, true, true)).isEqualTo(false);
 48    assertThat(NE.SELF.apply(null, false, false)).isEqualTo(false);
 49    assertThat(NE.SELF.apply(null, true, "String")).isEqualTo(true);
 50    assertThat(NE.SELF.apply(null, "String", true)).isEqualTo(true);
 51  }
 52
 53  @Test
 54  public void test_error() {
 55    assertThat(NE.SELF.apply(null, new ValueException(), new ValueException())).isEqualTo(new ValueException());
 56    assertThat(NE.SELF.apply(null, new DivException(), new ValueException())).isEqualTo(new DivException());
 57    assertThat(NE.SELF.apply(null, 4.4444, new ValueException())).isEqualTo(new ValueException());
 58  }
 59
 60  @Test
 61  public void test_typePrecedenceIgnored() {
 62    assertThat(NE.SELF.apply(null, "a", 0.0)).isEqualTo(true);
 63    assertThat(NE.SELF.apply(null, 0.0, "a")).isEqualTo(true);
 64    assertThat(NE.SELF.apply(null, true, 0.0)).isEqualTo(true);
 65    assertThat(NE.SELF.apply(null, false, 0.0)).isEqualTo(true);
 66    assertThat(NE.SELF.apply(null, 0.0, true)).isEqualTo(true);
 67    assertThat(NE.SELF.apply(null, 0.0, false)).isEqualTo(true);
 68    assertThat(NE.SELF.apply(null, true, "a")).isEqualTo(true);
 69    assertThat(NE.SELF.apply(null, false, "a")).isEqualTo(true);
 70    assertThat(NE.SELF.apply(null, "a", true)).isEqualTo(true);
 71    assertThat(NE.SELF.apply(null, "a", false)).isEqualTo(true);
 72  }
 73
 74  @Test
 75  public void test_lookup() {
 76    NE F = new NE(lookup, collateralLookup);
 77    when(collateralLookup.apply(A1, M22_RANGE)).thenReturn(1.0);
 78    when(collateralLookup.apply(A1, G19_RANGE)).thenReturn(2.0);
 79    assertThat(F.apply(A1, M22_RANGE, G19_RANGE)).isEqualTo(true);
 80    verify(collateralLookup).apply(A1, M22_RANGE);
 81    verify(collateralLookup).apply(A1, G19_RANGE);
 82    verifyNoMoreInteractions(collateralLookup);
 83  }
 84
 85  @Test
 86  public void test_grid() {
 87    assertThat(NE.SELF.apply(null,
 88        Grid.builder().add(0, 0, 1.0).build(),
 89        Grid.builder().add(0, 0, 0.0).build()
 90    )).isEqualTo(true);
 91    assertThat(NE.SELF.apply(null,
 92        Grid.builder().add(0, 0, 1.0).build(),
 93        Grid.builder().add(0, 0, 1.0).build()
 94    )).isEqualTo(false);
 95  }
 96
 97  @Test
 98  public void test_errorFromArgumentsMismatch() {
 99    assertThat(NE.SELF.apply(null, "Too few")).isEqualTo(new NAException());
100    assertThat(NE.SELF.apply(null, "A", "B", "Too many")).isEqualTo(new NAException());
101  }
102}