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}