name:
src/test/java/io/protobase/f7/spreadsheet/F7CodeExecutorGeneralDivisionTest.java
-rw-r--r--
2792
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 F7CodeExecutorGeneralDivisionTest extends TestF7CodeExecutor {
20 @Test
21 public void test_Numbers() {
22 assertThat(run("= 10 / 5")).isEqualTo(2.00);
23 assertThat(run("= 1 / 1")).isEqualTo(1.0);
24 assertThat(run("= 10 / -10")).isEqualTo(-1.0);
25 assertThat(run("= -10 / -2")).isEqualTo(5.0);
26 assertThat(run("= 1e10 / 1.1")).isEqualTo(9.09090909090909E9);
27 }
28
29 @Test
30 public void test_Boolean() {
31 assertThat(run("= 9 / TRUE")).isEqualTo(9.0);
32 assertThat(run("= 9 / FALSE")).isEqualTo(new DivException());
33 }
34
35 @Test
36 public void test_String() {
37 assertThat(run("= 12 / \"3\"")).isEqualTo(4.0);
38 assertThat(run("= 12 / \"3e1\"")).isEqualTo(0.4);
39 assertThat(run("= 12 / \"2\"")).isEqualTo(6.0);
40 }
41
42 @Test
43 public void test_String_NotNumber() {
44 assertThat(run("= 9 / \"No good.\"")).isEqualTo(new ValueException());
45 assertThat(run("= 9 / \"10 10\"")).isEqualTo(new ValueException());
46 }
47
48 @Test
49 public void test_Array() {
50 assertThat(run("= 12 / {2}")).isEqualTo(6.0);
51 assertThat(run("= 12 / {2, 44}")).isEqualTo(6.0);
52 assertThat(run("= 12 / -{2, \"Ignore me.\"}")).isEqualTo(-6.0);
53 }
54
55 @Test
56 public void test_Blank() {
57 when(collateralLookup.apply(A1, 2.0)).thenReturn(2.0);
58 when(collateralLookup.apply(A1, M44_RANGE)).thenReturn(null);
59 assertThat(runWithLookup("= 2 / M44")).isEqualTo(new DivException());
60 verify(collateralLookup).apply(A1, 2.0);
61 verify(collateralLookup).apply(A1, M44_RANGE);
62 verifyNoMoreInteractions(lookup);
63 }
64
65 @Test
66 public void test_Errors() {
67 assertThat(run("= 3 / #NULL!")).isEqualTo(new NullException());
68 assertThat(run("= 3 / #DIV/0!")).isEqualTo(new DivException());
69 assertThat(run("= 3 / #VALUE!")).isEqualTo(new ValueException());
70 assertThat(run("= 3 / #REF!")).isEqualTo(new RefException());
71 assertThat(run("= 3 / #NAME?")).isEqualTo(new NameException());
72 assertThat(run("= 3 / #NUM!")).isEqualTo(new NumException());
73 assertThat(run("= 3 / #N/A")).isEqualTo(new NAException());
74 assertThat(run("= 3 / #ERROR!")).isEqualTo(new ParseException());
75 }
76}