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/GeneralArrayLiteralTest.java
-rw-r--r--
5498
  1package io.protobase.f7.spreadsheet;
  2
  3import io.protobase.f7.errors.RefException;
  4import io.protobase.f7.errors.ValueException;
  5import io.protobase.f7.testutils.TestExecution;
  6import org.junit.Test;
  7
  8public class GeneralArrayLiteralTest extends TestExecution {
  9  @Test
 10  public void test_EmptyArrayLiteralCausesRefError() {
 11    runner().addCell("Alpha", "A1", "= {}").addExpectedValue("Alpha", "A1", new RefException()).run();
 12  }
 13
 14  @Test
 15  public void test_SingleValue() {
 16    runner().addCell("Alpha", "A1", "= {1}")
 17        .addExpectedValue("Alpha", "A1", 1.0)
 18        .run();
 19  }
 20
 21  @Test
 22  public void test_SingleValue_Nested() {
 23    runner().addCell("Alpha", "A1", "= {{{{{{1}}}}}}")
 24        .addExpectedValue("Alpha", "A1", 1.0)
 25        .run();
 26  }
 27
 28  @Test
 29  public void test_ColumnWise_ProjectsIntoNextColumns() {
 30    runner().addCell("Alpha", "A1", "= {1, 2, 3, 4}")
 31        .addExpectedValue("Alpha", "A1", 1.0)
 32        .addExpectedValue("Alpha", "B1", 2.0)
 33        .addExpectedValue("Alpha", "C1", 3.0)
 34        .addExpectedValue("Alpha", "D1", 4.0)
 35        .run();
 36  }
 37
 38  @Test
 39  public void test_ColumnWise_Nested() {
 40    runner().addCell("Alpha", "A1", "= {1, {2, {3, {4}}}}")
 41        .addExpectedValue("Alpha", "A1", 1.0)
 42        .addExpectedValue("Alpha", "B1", 2.0)
 43        .addExpectedValue("Alpha", "C1", 3.0)
 44        .addExpectedValue("Alpha", "D1", 4.0)
 45        .run();
 46  }
 47
 48  @Test
 49  public void test_RowWise_ProjectsIntoNextRows() {
 50    runner().addCell("Alpha", "A1", "= {1; 2; 3; 4}")
 51        .addExpectedValue("Alpha", "A1", 1.0)
 52        .addExpectedValue("Alpha", "A2", 2.0)
 53        .addExpectedValue("Alpha", "A3", 3.0)
 54        .addExpectedValue("Alpha", "A4", 4.0)
 55        .run();
 56    runner()
 57        .addCell("Alpha", "A1", "= {11;9;5;3;1}")
 58        .addExpectedValue("Alpha", "A1", 11.0)
 59        .addExpectedValue("Alpha", "A2", 9.0)
 60        .addExpectedValue("Alpha", "A3", 5.0)
 61        .addExpectedValue("Alpha", "A4", 3.0)
 62        .addExpectedValue("Alpha", "A5", 1.0)
 63        .run();
 64  }
 65
 66  @Test
 67  public void test_RowWise_Nested() {
 68    runner().addCell("Alpha", "A1", "= {1; {2; {3; {4}}}}")
 69        .addExpectedValue("Alpha", "A1", 1.0)
 70        .addExpectedValue("Alpha", "A2", 2.0)
 71        .addExpectedValue("Alpha", "A3", 3.0)
 72        .addExpectedValue("Alpha", "A4", 4.0)
 73        .run();
 74    runner()
 75        .addCell("Alpha", "A1", "= {1;{2;{3;4}};{5}}")
 76        .addExpectedValue("Alpha", "A1", 1.0)
 77        .addExpectedValue("Alpha", "A2", 2.0)
 78        .addExpectedValue("Alpha", "A3", 3.0)
 79        .addExpectedValue("Alpha", "A4", 4.0)
 80        .addExpectedValue("Alpha", "A5", 5.0)
 81        .run();
 82  }
 83
 84  @Test
 85  public void test_ColumnAndRow_Row() {
 86    runner().addCell("Alpha", "A1", "= {1, 2;3, 4}")
 87        .addExpectedValue("Alpha", "A1", 1.0)
 88        .addExpectedValue("Alpha", "B1", 2.0)
 89        .addExpectedValue("Alpha", "A2", 3.0)
 90        .addExpectedValue("Alpha", "B2", 4.0)
 91        .run();
 92    runner().addCell("Alpha", "A1", "= {1, 2, 3;4, 5, 6}")
 93        .addExpectedValue("Alpha", "A1", 1.0)
 94        .addExpectedValue("Alpha", "B1", 2.0)
 95        .addExpectedValue("Alpha", "C1", 3.0)
 96        .addExpectedValue("Alpha", "A2", 4.0)
 97        .addExpectedValue("Alpha", "B2", 5.0)
 98        .addExpectedValue("Alpha", "C2", 6.0)
 99        .run();
100  }
101
102  @Test
103  public void test_ColumnAndRow_Column() {
104    runner().addCell("Alpha", "A1", "= {{1; 2},{3; 4}}")
105        .addExpectedValue("Alpha", "A1", 1.0)
106        .addExpectedValue("Alpha", "B1", 3.0)
107        .addExpectedValue("Alpha", "A2", 2.0)
108        .addExpectedValue("Alpha", "B2", 4.0)
109        .run();
110    runner().addCell("Alpha", "A1", "= {{{}; {}},{{}; {}}}")
111        .addExpectedValue("Alpha", "A1", new RefException())
112        .addExpectedValue("Alpha", "B1", new RefException())
113        .addExpectedValue("Alpha", "A2", new RefException())
114        .addExpectedValue("Alpha", "B2", new RefException())
115        .run();
116    runner()
117        .addCell("Alpha", "A1", "= {{{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}}}")
118        .addExpectedValue("Alpha", "A1", 0.0)
119        .addExpectedValue("Alpha", "A2", 0.1)
120        .addExpectedValue("Alpha", "A3", 0.2)
121        .addExpectedValue("Alpha", "A4", 0.3)
122        .addExpectedValue("Alpha", "A5", 0.4)
123        .addExpectedValue("Alpha", "A6", 0.5)
124        .addExpectedValue("Alpha", "B1", 1.0)
125        .addExpectedValue("Alpha", "B2", 1.1)
126        .addExpectedValue("Alpha", "B3", 1.2)
127        .addExpectedValue("Alpha", "B4", 1.3)
128        .addExpectedValue("Alpha", "B5", 1.4)
129        .addExpectedValue("Alpha", "B6", 1.5)
130        .addExpectedValue("Alpha", "C1", 2.0)
131        .addExpectedValue("Alpha", "C2", 2.1)
132        .addExpectedValue("Alpha", "C3", 2.2)
133        .addExpectedValue("Alpha", "C4", 2.3)
134        .addExpectedValue("Alpha", "C5", 2.4)
135        .addExpectedValue("Alpha", "C6", 2.5)
136        .run();
137  }
138
139  @Test
140  public void test_ColumnAndRow_ErrorFromArrayDimensionMismatch() {
141    runner().addCell("Alpha", "A1", "= {1,2;3}").addExpectedValue("Alpha", "A1", new ValueException()).run();
142    runner().addCell("Alpha", "A1", "= {1,2;3,4,5}").addExpectedValue("Alpha", "A1", new ValueException()).run();
143    runner().addCell("Alpha", "A1", "= {11;9;5;3;1,2}")
144        .addExpectedValue("Alpha", "A1", new ValueException()).run();
145    runner().addCell("Alpha", "A1", "= {{};{};{},{}}")
146        .addExpectedValue("Alpha", "A1", new ValueException()).run();
147  }
148}