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/spreadsheet/F7CodeExecutorGeneralAdditionTest.java
-rw-r--r--
2928
 1package io.protobase.f7.spreadsheet;
 2
 3import io.protobase.f7.errors.DivException;
 4import io.protobase.f7.errors.NAException;
 5import io.protobase.f7.errors.NameException;
 6import io.protobase.f7.errors.NullException;
 7import io.protobase.f7.errors.NumException;
 8import io.protobase.f7.errors.ParseException;
 9import io.protobase.f7.errors.RefException;
10import io.protobase.f7.errors.ValueException;
11import io.protobase.f7.testutils.TestF7CodeExecutor;
12import org.junit.Test;
13
14import static com.google.common.truth.Truth.assertThat;
15import static org.mockito.Mockito.verify;
16import static org.mockito.Mockito.verifyNoMoreInteractions;
17import static org.mockito.Mockito.when;
18
19public class F7CodeExecutorGeneralAdditionTest extends TestF7CodeExecutor {
20
21  @Test
22  public void test_Numbers() {
23    assertThat(run("= 1")).isEqualTo(1.0);
24    assertThat(run("= 10 + 10")).isEqualTo(20.0);
25    assertThat(run("= 0 + 0")).isEqualTo(0.0);
26    assertThat(run("= 10 + -10")).isEqualTo(0.0);
27    assertThat(run("= -10 + -10")).isEqualTo(-20.0);
28    assertThat(run("= 1e10 + 1.1")).isEqualTo(1.00000000011E10);
29  }
30
31  @Test
32  public void test_Boolean() {
33    assertThat(run("= 9 + TRUE")).isEqualTo(10.0);
34    assertThat(run("= 9 + FALSE")).isEqualTo(9.0);
35    assertThat(run("= 9 + -TRUE")).isEqualTo(8.0);
36    assertThat(run("= 9 + -FALSE")).isEqualTo(9.0);
37  }
38
39  @Test
40  public void test_String() {
41    assertThat(run("= 9 + \"10\"")).isEqualTo(19.0);
42    assertThat(run("= 9 + \"1e10\"")).isEqualTo(1.0000000009E10);
43    assertThat(run("= 9 + \"0\"")).isEqualTo(9.0);
44  }
45
46  @Test
47  public void test_StringNotNumber() {
48    assertThat(run("= 9 + \"No good.\"")).isEqualTo(new ValueException());
49    assertThat(run("= 9 + \"10    10\"")).isEqualTo(new ValueException());
50  }
51
52  @Test
53  public void test_Array() {
54    assertThat(run("= 2 + {1}")).isEqualTo(3.0);
55    assertThat(run("= 2 + {1, 44}")).isEqualTo(3.0);
56    assertThat(run("= 2 + -{1, \"Ignore me.\"}")).isEqualTo(1.0);
57  }
58
59  @Test
60  public void test_Blank() {
61    when(collateralLookup.apply(A1, 2.0)).thenReturn(2.0);
62    when(collateralLookup.apply(A1, M44_RANGE)).thenReturn(null);
63    assertThat(runWithLookup("= 2 + M44")).isEqualTo(2.0);
64    verify(collateralLookup).apply(A1, 2.0);
65    verify(collateralLookup).apply(A1, M44_RANGE);
66    verifyNoMoreInteractions(collateralLookup);
67  }
68
69  @Test
70  public void test_Errors() {
71    assertThat(run("= 3 + #NULL!")).isEqualTo(new NullException());
72    assertThat(run("= 3 + #DIV/0!")).isEqualTo(new DivException());
73    assertThat(run("= 3 + #VALUE!")).isEqualTo(new ValueException());
74    assertThat(run("= 3 + #REF!")).isEqualTo(new RefException());
75    assertThat(run("= 3 + #NAME?")).isEqualTo(new NameException());
76    assertThat(run("= 3 + #NUM!")).isEqualTo(new NumException());
77    assertThat(run("= 3 + #N/A")).isEqualTo(new NAException());
78    assertThat(run("= 3 + #ERROR!")).isEqualTo(new ParseException());
79  }
80}