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/models/CellQueryTest.java
-rw-r--r--
3886
  1package io.protobase.f7.models;
  2
  3import io.protobase.f7.errors.ValueException;
  4import org.junit.Test;
  5
  6import static com.google.common.truth.Truth.assertThat;
  7
  8public class CellQueryTest {
  9  private static final CellQuery A1 = CellQuery.builder()
 10      .grid("Alpha")
 11      .columnsBetween(0, 0)
 12      .rowsBetween(0, 0)
 13      .build();
 14  private static final CellQuery B1 = CellQuery.builder()
 15      .grid("Alpha")
 16      .columnsBetween(1, 1)
 17      .rowsBetween(0, 0)
 18      .build();
 19  private static final CellQuery B2 = CellQuery.builder()
 20      .grid("Alpha")
 21      .columnsBetween(1, 1)
 22      .rowsBetween(1, 1)
 23      .build();
 24  private static final CellQuery B99 = CellQuery.builder()
 25      .grid("Alpha")
 26      .columnsBetween(1, 1)
 27      .rowsBetween(98, 98)
 28      .build();
 29  private static final CellQuery C14 = CellQuery.builder()
 30      .grid("Alpha")
 31      .columnsBetween(2, 2)
 32      .rowsBetween(13, 13)
 33      .build();
 34  private static final CellQuery A1toB1 = CellQuery.builder()
 35      .grid("Alpha")
 36      .columnsBetween(0, 1)
 37      .rowsBetween(0, 0)
 38      .build();
 39  private static final CellQuery AtoB = CellQuery.builder()
 40      .grid("Alpha")
 41      .columnsBetween(0, 1)
 42      .openRowsStartingAtZero()
 43      .build();
 44
 45  @Test
 46  public void testIntersects() {
 47    assertThat(A1.intersects(B1)).isFalse();
 48    assertThat(B1.intersects(A1)).isFalse();
 49    assertThat(B2.intersects(B2)).isTrue();
 50    assertThat(B99.intersects(B2)).isFalse();
 51    assertThat(A1toB1.intersects(A1)).isTrue();
 52    assertThat(A1toB1.intersects(B1)).isTrue();
 53    assertThat(AtoB.intersects(B1)).isTrue();
 54    assertThat(AtoB.intersects(A1)).isTrue();
 55    assertThat(AtoB.intersects(B2)).isTrue();
 56    assertThat(AtoB.intersects(B99)).isTrue();
 57    assertThat(AtoB.intersects(C14)).isFalse();
 58  }
 59
 60  @Test
 61  public void testToBounded() {
 62    CellQuery unboundedRows = CellQuery.builder()
 63        .columnsBetween(0, 1)
 64        .openRowsStartingAtZero()
 65        .build();
 66    CellQuery expectedBoundedRows = CellQuery.builder()
 67        .columnsBetween(0, 1)
 68        .rowsBetween(0, 22)
 69        .build();
 70    assertThat(unboundedRows.toBounded(10, 22)).isEqualTo(expectedBoundedRows);
 71    CellQuery unboundedColumns = CellQuery.builder()
 72        .openColumnsStartingAtZero()
 73        .rowsBetween(0, 20)
 74        .build();
 75    CellQuery expectedBoundedColumns = CellQuery.builder()
 76        .columnsBetween(0, 44)
 77        .rowsBetween(0, 20)
 78        .build();
 79    assertThat(unboundedColumns.toBounded(44, 30)).isEqualTo(expectedBoundedColumns);
 80  }
 81
 82  @Test
 83  public void testToBounded_unchangedBoundsTooHigh() {
 84    CellQuery alreadyBounded = CellQuery.builder()
 85        .columnsBetween(0, 1)
 86        .rowsBetween(0, 22)
 87        .build();
 88    assertThat(alreadyBounded.toBounded(100, 100)).isEqualTo(alreadyBounded);
 89  }
 90
 91  @Test
 92  public void testToBounded_subset() {
 93    CellQuery alreadyBounded = CellQuery.builder()
 94        .columnsBetween(0, 44)
 95        .rowsBetween(0, 22)
 96        .build();
 97    CellQuery subset = CellQuery.builder()
 98        .columnsBetween(0, 10)
 99        .rowsBetween(0, 12)
100        .build();
101    assertThat(alreadyBounded.toBounded(10, 12)).isEqualTo(subset);
102  }
103
104  @Test
105  public void testBuilderExpand() {
106    CellQuery expanded = CellQuery.builder(B2)
107        .expand(A1)
108        .expand(A1toB1)
109        .expand(B99)
110        .expand(C14)
111        .build();
112    CellQuery expected = CellQuery.builder()
113        .grid("Alpha")
114        .columnsBetween(0, 2)
115        .rowsBetween(0, 98)
116        .build();
117    assertThat(expanded).isEqualTo(expected);
118  }
119
120  @Test
121  public void testBuilderExpand_differentGrids() {
122    ValueException exception = null;
123    try {
124      CellQuery.builder(A1).expand(CellQuery.builder(A1).grid("DifferentGrid").build()).build();
125    } catch (ValueException e) {
126      exception = e;
127    }
128    assertThat(exception).isNotNull();
129  }
130}