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