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/LTETest.java
-rw-r--r--
4360
  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 LTETest extends TestFormula {
 16  @Test
 17  public void test_string() {
 18    assertThat(LTE.SELF.apply(null, "Hello", "Diff")).isEqualTo(false);
 19    assertThat(LTE.SELF.apply(null, "a", "a")).isEqualTo(true);
 20    assertThat(LTE.SELF.apply(null, "a", "aa")).isEqualTo(true);
 21    assertThat(LTE.SELF.apply(null, "aa", "a")).isEqualTo(false);
 22    assertThat(LTE.SELF.apply(null, "a", "A")).isEqualTo(true);
 23    assertThat(LTE.SELF.apply(null, "A", "a")).isEqualTo(true);
 24    assertThat(LTE.SELF.apply(null, "A", "A")).isEqualTo(true);
 25    assertThat(LTE.SELF.apply(null, "Aa", "A")).isEqualTo(false);
 26    assertThat(LTE.SELF.apply(null, "AA", "a")).isEqualTo(false);
 27    assertThat(LTE.SELF.apply(null, "aA", "a")).isEqualTo(false);
 28    assertThat(LTE.SELF.apply(null, "aA", "A")).isEqualTo(false);
 29    assertThat(LTE.SELF.apply(null, "押", "し")).isEqualTo(false);
 30    assertThat(LTE.SELF.apply(null, "し", "押")).isEqualTo(true);
 31    assertThat(LTE.SELF.apply(null, "String", 129321321.0)).isEqualTo(false);
 32    assertThat(LTE.SELF.apply(null, 129321321.0, "String")).isEqualTo(true);
 33  }
 34
 35  @Test
 36  public void test_number() {
 37    assertThat(LTE.SELF.apply(null, 1.0, 1.0)).isEqualTo(true);
 38    assertThat(LTE.SELF.apply(null, 1.0, 0.0)).isEqualTo(false);
 39    assertThat(LTE.SELF.apply(null, 0.0, 1.0)).isEqualTo(true);
 40  }
 41
 42  @Test
 43  public void test_boolean() {
 44    assertThat(LTE.SELF.apply(null, true, false)).isEqualTo(false);
 45    assertThat(LTE.SELF.apply(null, false, true)).isEqualTo(true);
 46    assertThat(LTE.SELF.apply(null, true, true)).isEqualTo(true);
 47    assertThat(LTE.SELF.apply(null, false, false)).isEqualTo(true);
 48    assertThat(LTE.SELF.apply(null, true, "String")).isEqualTo(false);
 49    assertThat(LTE.SELF.apply(null, "String", true)).isEqualTo(true);
 50  }
 51
 52  @Test
 53  public void test_error() {
 54    assertThat(LTE.SELF.apply(null, new ValueException(), new ValueException())).isEqualTo(new ValueException());
 55    assertThat(LTE.SELF.apply(null, new DivException(), new ValueException())).isEqualTo(new DivException());
 56    assertThat(LTE.SELF.apply(null, 4.4444, new ValueException())).isEqualTo(new ValueException());
 57  }
 58
 59  @Test
 60  public void test_typePrecedence() {
 61    assertThat(LTE.SELF.apply(null, "a", 0.0)).isEqualTo(false);
 62    assertThat(LTE.SELF.apply(null, 0.0, "a")).isEqualTo(true);
 63    assertThat(LTE.SELF.apply(null, true, 0.0)).isEqualTo(false);
 64    assertThat(LTE.SELF.apply(null, false, 0.0)).isEqualTo(false);
 65    assertThat(LTE.SELF.apply(null, 0.0, true)).isEqualTo(true);
 66    assertThat(LTE.SELF.apply(null, 0.0, false)).isEqualTo(true);
 67    assertThat(LTE.SELF.apply(null, true, "a")).isEqualTo(false);
 68    assertThat(LTE.SELF.apply(null, false, "a")).isEqualTo(false);
 69    assertThat(LTE.SELF.apply(null, "a", true)).isEqualTo(true);
 70    assertThat(LTE.SELF.apply(null, "a", false)).isEqualTo(true);
 71  }
 72
 73  @Test
 74  public void test_lookup() {
 75    LTE F = new LTE(lookup, collateralLookup);
 76    when(collateralLookup.apply(A1, M22_RANGE)).thenReturn(1.0);
 77    when(collateralLookup.apply(A1, G19_RANGE)).thenReturn(2.0);
 78    assertThat(F.apply(A1, M22_RANGE, G19_RANGE)).isEqualTo(true);
 79    verify(collateralLookup).apply(A1, M22_RANGE);
 80    verify(collateralLookup).apply(A1, G19_RANGE);
 81    verifyNoMoreInteractions(collateralLookup);
 82  }
 83
 84  @Test
 85  public void test_grid() {
 86    assertThat(LTE.SELF.apply(null,
 87        Grid.builder().add(0, 0, 1.0).build(),
 88        Grid.builder().add(0, 0, 0.0).build()
 89    )).isEqualTo(false);
 90    assertThat(LTE.SELF.apply(null,
 91        Grid.builder().add(0, 0, 1.0).build(),
 92        Grid.builder().add(0, 0, 1.0).build()
 93    )).isEqualTo(true);
 94  }
 95
 96  @Test
 97  public void test_errorFromArgumentsMismatch() {
 98    assertThat(LTE.SELF.apply(null, "Too few")).isEqualTo(new NAException());
 99    assertThat(LTE.SELF.apply(null, "A", "B", "Too many")).isEqualTo(new NAException());
100  }
101}