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}