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