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/XORTest.java
-rw-r--r--
3355
 1package io.protobase.f7.formulas.logic;
 2
 3import io.protobase.f7.errors.DivException;
 4import io.protobase.f7.errors.NAException;
 5import io.protobase.f7.errors.NullException;
 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 XORTest extends TestFormula {
16  @Test
17  public void test_boolean() {
18    assertThat(XOR.SELF.apply(null, true)).isEqualTo(true);
19    assertThat(XOR.SELF.apply(null, true, true)).isEqualTo(false);
20    assertThat(XOR.SELF.apply(null, true, true, true)).isEqualTo(true);
21    assertThat(XOR.SELF.apply(null, true, true, false)).isEqualTo(false);
22    assertThat(XOR.SELF.apply(null, true, true, false, true)).isEqualTo(true);
23    assertThat(XOR.SELF.apply(null, false)).isEqualTo(false);
24    assertThat(XOR.SELF.apply(null, false, false)).isEqualTo(false);
25    assertThat(XOR.SELF.apply(null, false, false, true)).isEqualTo(true);
26  }
27
28  @Test
29  public void test_string() {
30    assertThat(XOR.SELF.apply(null, "TRUE")).isEqualTo(true);
31  }
32
33  @Test
34  public void test_number() {
35    assertThat(XOR.SELF.apply(null, 1.0)).isEqualTo(true);
36    assertThat(XOR.SELF.apply(null, 1.0, 2.2)).isEqualTo(false);
37    assertThat(XOR.SELF.apply(null, 1.0, 2.2, 11.11)).isEqualTo(true);
38    assertThat(XOR.SELF.apply(null, 1.0, 2.2, 11.11, 0.0)).isEqualTo(true);
39    assertThat(XOR.SELF.apply(null, 0.0, 0.0, 0.0)).isEqualTo(false);
40    assertThat(XOR.SELF.apply(null, 0.0, 0.0, 0.0, 0.0, 0.0, 99.99)).isEqualTo(true);
41  }
42
43  @Test
44  public void test_error() {
45    assertThat(XOR.SELF.apply(null, 0.0, 0.0, new DivException())).isEqualTo(new DivException());
46    assertThat(XOR.SELF.apply(null, 0.0, 0.0, new NullException())).isEqualTo(new NullException());
47  }
48
49  @Test
50  public void test_lookup() {
51    XOR F = new XOR(lookup, collateralLookup);
52    Grid D1_D3_grid = Grid.builder()
53        .add(0, 0, true)
54        .add(0, 1, true)
55        .add(0, 2, false)
56        .build();
57    when(lookup.apply(D1_TO_D3_RANGE)).thenReturn(D1_D3_grid);
58    assertThat(F.apply(A1, D1_TO_D3_RANGE)).isEqualTo(false);
59    verify(lookup).apply(D1_TO_D3_RANGE);
60    verifyNoMoreInteractions(lookup);
61  }
62
63  @Test
64  public void test_grid() {
65    assertThat(XOR.SELF.apply(null, Grid.builder().add(0, 0, true).build())).isEqualTo(true);
66    assertThat(XOR.SELF.apply(null, Grid.builder()
67        .add(0, 0, true)
68        .add(0, 1, true)
69        .add(0, 2, true)
70        .build())
71    ).isEqualTo(true);
72    assertThat(XOR.SELF.apply(null, Grid.builder()
73        .add(0, 0, true)
74        .add(0, 1, true)
75        .add(0, 2, false)
76        .build())
77    ).isEqualTo(false);
78    assertThat(XOR.SELF.apply(null, Grid.builder()
79        .add(0, 0, true)
80        .add(0, 1, true)
81        .add(0, 2, null)
82        .add(0, 3, false)
83        .build())
84    ).isEqualTo(false);
85    assertThat(XOR.SELF.apply(null, Grid.builder()
86        .add(0, 0, false)
87        .add(0, 1, false)
88        .add(0, 2, null)
89        .add(0, 3, false)
90        .build())
91    ).isEqualTo(false);
92  }
93
94  @Test
95  public void test_errorFromArgumentsMismatch() {
96    assertThat(XOR.SELF.apply(null)).isEqualTo(new NAException());
97  }
98}