name:
src/test/java/io/protobase/f7/spreadsheet/F7CodeExecutorGeneralFormulaTest.java
-rw-r--r--
2358
1package io.protobase.f7.spreadsheet;
2
3import io.protobase.f7.models.Grid;
4import io.protobase.f7.testutils.TestF7CodeExecutor;
5import org.junit.Test;
6import org.mockito.internal.verification.VerificationModeFactory;
7
8import static com.google.common.truth.Truth.assertThat;
9import static org.mockito.Mockito.verify;
10import static org.mockito.Mockito.when;
11
12public class F7CodeExecutorGeneralFormulaTest extends TestF7CodeExecutor {
13 @Test
14 public void test_WithoutArguments() {
15 assertThat(run("= TRUE()")).isEqualTo(true);
16 assertThat(run("= FALSE()")).isEqualTo(false);
17 assertThat(run("= PI()")).isEqualTo(Math.PI);
18 }
19
20 @Test
21 public void test_NumberArguments() {
22 assertThat(run("= ABS(-1)")).isEqualTo(1.0);
23 assertThat(run("= ADD(3, 4)")).isEqualTo(7.0);
24 assertThat(run("= SUM(3, 4, 5, 6, -1)")).isEqualTo(17.0);
25 }
26
27 @Test
28 public void test_StringArguments() {
29 assertThat(run("= ABS(\"-1\")")).isEqualTo(1.0);
30 assertThat(run("= CONCAT(\"3\", \"4\")")).isEqualTo("34");
31 assertThat(run("= SUM(\"3\", \"4\", \"5\", \"6\")")).isEqualTo(18.0);
32 }
33
34 @Test
35 public void test_BooleanArguments() {
36 assertThat(run("= ABS(TRUE)")).isEqualTo(1.0);
37 assertThat(run("= CONCAT(TRUE, FALSE)")).isEqualTo("TRUEFALSE");
38 assertThat(run("= SUM(TRUE, TRUE, TRUE)")).isEqualTo(3.0);
39 }
40
41 @Test
42 public void test_ArrayLiteralArguments() {
43 assertThat(run("= ABS({-1, 2, 3})")).isEqualTo(1.0);
44 assertThat(run("= CONCAT({TRUE}, {22.1, 22})")).isEqualTo("TRUE22.1");
45 assertThat(run("= SUM({TRUE, {TRUE, {TRUE}}})")).isEqualTo(3.0);
46 }
47
48 @Test
49 public void test_RangeArguments_ReturnsBlankValues() {
50 when(lookup.apply(B1_B4_RANGE)).thenReturn(Grid.builder()
51 .add(0, 0, null)
52 .add(0, 1, null)
53 .add(0, 2, null)
54 .add(0, 3, null)
55 .build());
56 assertThat(runWithLookup("= SUM(B1:B4)")).isEqualTo(0.0);
57 verify(lookup, VerificationModeFactory.times(1)).apply(B1_B4_RANGE);
58 }
59
60 @Test
61 public void test_RangeArguments_ReturnsNonBlankValues() {
62 when(lookup.apply(B1_B4_RANGE)).thenReturn(Grid.builder()
63 .add(0, 0, 3.0)
64 .add(0, 1, 4.0)
65 .add(0, 2, 5.0)
66 .add(0, 3, 6.0)
67 .build());
68 assertThat(runWithLookup("= SUM(B1:B4)")).isEqualTo(18.0);
69 verify(lookup, VerificationModeFactory.times(1)).apply(B1_B4_RANGE);
70 }
71}