name:
src/test/java/io/protobase/f7/spreadsheet/F7CodeExecutorGeneralArrayLiteralTest.java
-rw-r--r--
4063
1package io.protobase.f7.spreadsheet;
2
3import io.protobase.f7.errors.RefException;
4import io.protobase.f7.errors.ValueException;
5import io.protobase.f7.models.Grid;
6import io.protobase.f7.testutils.TestF7CodeExecutor;
7import org.junit.Test;
8
9import static com.google.common.truth.Truth.assertThat;
10
11public class F7CodeExecutorGeneralArrayLiteralTest extends TestF7CodeExecutor {
12 @Test
13 public void test_EmptyArrayLiteralCausesRefError() {
14 assertThat(run("= {}")).isEqualTo(new RefException());
15 }
16
17 @Test
18 public void test_SingleValue() {
19 assertThat(run("= {1}")).isEqualTo(Grid.builder().add(0, 0, 1.0).build());
20 }
21
22 @Test
23 public void test_SingleValue_Nested() {
24 assertThat(run("= {{{{{{1}}}}}}")).isEqualTo(Grid.builder().add(0, 0, 1.0).build());
25 }
26
27 @Test
28 public void test_ColumnWise_ProjectsIntoNextColumns() {
29 assertThat(run("= {1, 2, 3, 4}")).isEqualTo(Grid.builder()
30 .add(0, 0, 1.0)
31 .add(1, 0, 2.0)
32 .add(2, 0, 3.0)
33 .add(3, 0, 4.0)
34 .build());
35 }
36
37 @Test
38 public void test_ColumnWise_Nested() {
39 assertThat(run("= {1, {2, {3, {4}}}}")).isEqualTo(Grid.builder()
40 .add(0, 0, 1.0)
41 .add(1, 0, 2.0)
42 .add(2, 0, 3.0)
43 .add(3, 0, 4.0)
44 .build());
45 }
46
47 @Test
48 public void test_RowWise_ProjectsIntoNextRows() {
49 assertThat(run("= {1; 2; 3; 4}")).isEqualTo(Grid.builder()
50 .add(0, 0, 1.0)
51 .add(0, 1, 2.0)
52 .add(0, 2, 3.0)
53 .add(0, 3, 4.0)
54 .build());
55 assertThat(run("= {11;9;5;3;1}")).isEqualTo(Grid.builder()
56 .add(0, 0, 11.0)
57 .add(0, 1, 9.0)
58 .add(0, 2, 5.0)
59 .add(0, 3, 3.0)
60 .add(0, 4, 1.0)
61 .build());
62 }
63
64 @Test
65 public void test_RowWise_Nested() {
66 assertThat(run("= {1; {2; {3; {4}}}}")).isEqualTo(Grid.builder()
67 .add(0, 0, 1.0)
68 .add(0, 1, 2.0)
69 .add(0, 2, 3.0)
70 .add(0, 3, 4.0)
71 .build());
72 assertThat(run("= {1;{2;{3;4}};{5}}")).isEqualTo(Grid.builder()
73 .add(0, 0, 1.0)
74 .add(0, 1, 2.0)
75 .add(0, 2, 3.0)
76 .add(0, 3, 4.0)
77 .add(0, 4, 5.0)
78 .build());
79 }
80
81 @Test
82 public void test_ColumnAndRow_Row() {
83 assertThat(run("= {1, 2; 3, 4}")).isEqualTo(Grid.builder()
84 .add(0, 0, 1.0)
85 .add(1, 0, 2.0)
86 .add(0, 1, 3.0)
87 .add(1, 1, 4.0)
88 .build());
89 assertThat(run("= {1, 2, 3;4, 5, 6}")).isEqualTo(Grid.builder()
90 .add(0, 0, 1.0)
91 .add(1, 0, 2.0)
92 .add(2, 0, 3.0)
93 .add(0, 1, 4.0)
94 .add(1, 1, 5.0)
95 .add(2, 1, 6.0)
96 .build());
97 }
98
99 @Test
100 public void test_ColumnAndRow_Column() {
101 assertThat(run("= {{1; 2},{3; 4}}")).isEqualTo(Grid.builder()
102 .add(0, 0, 1.0)
103 .add(1, 0, 3.0)
104 .add(0, 1, 2.0)
105 .add(1, 1, 4.0)
106 .build());
107 assertThat(run("= {{{}; {}},{{}; {}}}")).isEqualTo(Grid.builder()
108 .add(0, 0, new RefException())
109 .add(1, 0, new RefException())
110 .add(0, 1, new RefException())
111 .add(1, 1, new RefException())
112 .build());
113 assertThat(run("= {{{0.0, 1.0, 2.0};{0.1, 1.1, 2.1}};{{0.2, 1.2, 2.2};{0.3, 1.3, 2.3}};{{0.4, 1.4, 2.4};{0.5, 1.5, 2.5}}}")).isEqualTo(Grid.builder()
114 .add(0, 0, 0.0)
115 .add(0, 1, 0.1)
116 .add(0, 2, 0.2)
117 .add(0, 3, 0.3)
118 .add(0, 4, 0.4)
119 .add(0, 5, 0.5)
120 .add(1, 0, 1.0)
121 .add(1, 1, 1.1)
122 .add(1, 2, 1.2)
123 .add(1, 3, 1.3)
124 .add(1, 4, 1.4)
125 .add(1, 5, 1.5)
126 .add(2, 0, 2.0)
127 .add(2, 1, 2.1)
128 .add(2, 2, 2.2)
129 .add(2, 3, 2.3)
130 .add(2, 4, 2.4)
131 .add(2, 5, 2.5)
132 .build());
133 }
134
135 @Test
136 public void test_ColumnAndRow_ErrorFromArrayDimensionMismatch() {
137 assertThat(run("= {1,2;3}")).isEqualTo(new ValueException());
138 assertThat(run("= {1,2;3,4,5}")).isEqualTo(new ValueException());
139 assertThat(run("= {11;9;5;3;1,2}")).isEqualTo(new ValueException());
140 assertThat(run("= {{};{};{},{}}")).isEqualTo(new ValueException());
141 }
142}