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/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}