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/utils/ConvertersTest.java
-rw-r--r--
6764
  1package io.protobase.f7.utils;
  2
  3import com.google.common.collect.ImmutableList;
  4import io.protobase.f7.errors.DivException;
  5import io.protobase.f7.errors.F7Exception;
  6import io.protobase.f7.errors.NumException;
  7import io.protobase.f7.errors.ValueException;
  8import org.junit.Test;
  9
 10import static com.google.common.truth.Truth.assertThat;
 11
 12public class ConvertersTest {
 13
 14  @Test
 15  public void test_compareDouble() {
 16    assertThat(Converters.compare(0.0, 0.0)).isEqualTo(ComparisonResult.EQUAL);
 17    assertThat(Converters.compare(1.0, 1.0)).isEqualTo(ComparisonResult.EQUAL);
 18    assertThat(Converters.compare(1.0, 0.0)).isEqualTo(ComparisonResult.GREATER_THAN);
 19    assertThat(Converters.compare(2.0, 1.0)).isEqualTo(ComparisonResult.GREATER_THAN);
 20    assertThat(Converters.compare(0.0, 1.0)).isEqualTo(ComparisonResult.LESS_THAN);
 21    assertThat(Converters.compare(1.0, 2.0)).isEqualTo(ComparisonResult.LESS_THAN);
 22  }
 23
 24  @Test
 25  public void test_compareString() {
 26    assertThat(Converters.compare("a", "a")).isEqualTo(ComparisonResult.EQUAL);
 27    assertThat(Converters.compare("b", "b")).isEqualTo(ComparisonResult.EQUAL);
 28    assertThat(Converters.compare("b", "a")).isEqualTo(ComparisonResult.GREATER_THAN);
 29    assertThat(Converters.compare("c", "b")).isEqualTo(ComparisonResult.GREATER_THAN);
 30    assertThat(Converters.compare("a", "b")).isEqualTo(ComparisonResult.LESS_THAN);
 31    assertThat(Converters.compare("b", "c")).isEqualTo(ComparisonResult.LESS_THAN);
 32  }
 33
 34  @Test
 35  public void test_compareBoolean() {
 36    assertThat(Converters.compare(true, true)).isEqualTo(ComparisonResult.EQUAL);
 37    assertThat(Converters.compare(false, false)).isEqualTo(ComparisonResult.EQUAL);
 38    assertThat(Converters.compare(true, false)).isEqualTo(ComparisonResult.GREATER_THAN);
 39    assertThat(Converters.compare(false, true)).isEqualTo(ComparisonResult.LESS_THAN);
 40  }
 41
 42  @Test
 43  public void test_compareDoubleAndString() {
 44    assertThat(Converters.compare(1.0, "a")).isEqualTo(ComparisonResult.LESS_THAN);
 45    assertThat(Converters.compare(-10.0, "a")).isEqualTo(ComparisonResult.LESS_THAN);
 46    assertThat(Converters.compare("a", 1.0)).isEqualTo(ComparisonResult.GREATER_THAN);
 47    assertThat(Converters.compare("a", -10.0)).isEqualTo(ComparisonResult.GREATER_THAN);
 48  }
 49
 50  @Test
 51  public void test_compareDoubleAndBoolean() {
 52    assertThat(Converters.compare(1.0, true)).isEqualTo(ComparisonResult.LESS_THAN);
 53    assertThat(Converters.compare(-10.0, true)).isEqualTo(ComparisonResult.LESS_THAN);
 54    assertThat(Converters.compare(1.0, false)).isEqualTo(ComparisonResult.LESS_THAN);
 55    assertThat(Converters.compare(-10.0, false)).isEqualTo(ComparisonResult.LESS_THAN);
 56    assertThat(Converters.compare(true, 1.0)).isEqualTo(ComparisonResult.GREATER_THAN);
 57    assertThat(Converters.compare(true, -10.0)).isEqualTo(ComparisonResult.GREATER_THAN);
 58    assertThat(Converters.compare(false, 1.0)).isEqualTo(ComparisonResult.GREATER_THAN);
 59    assertThat(Converters.compare(false, -10.0)).isEqualTo(ComparisonResult.GREATER_THAN);
 60  }
 61
 62  @Test
 63  public void test_compareBooleanString() {
 64    assertThat(Converters.compare("a", true)).isEqualTo(ComparisonResult.LESS_THAN);
 65    assertThat(Converters.compare("a", false)).isEqualTo(ComparisonResult.LESS_THAN);
 66    assertThat(Converters.compare("", true)).isEqualTo(ComparisonResult.LESS_THAN);
 67    assertThat(Converters.compare("", false)).isEqualTo(ComparisonResult.LESS_THAN);
 68    assertThat(Converters.compare(true, "a")).isEqualTo(ComparisonResult.GREATER_THAN);
 69    assertThat(Converters.compare(false, "a")).isEqualTo(ComparisonResult.GREATER_THAN);
 70    assertThat(Converters.compare(true, "")).isEqualTo(ComparisonResult.GREATER_THAN);
 71    assertThat(Converters.compare(false, "")).isEqualTo(ComparisonResult.GREATER_THAN);
 72  }
 73
 74  @Test
 75  public void test_compareNull() {
 76    assertThat(Converters.compare(null, null)).isEqualTo(ComparisonResult.EQUAL);
 77  }
 78
 79  @Test
 80  public void test_compareNullAndBoolean() {
 81    assertThat(Converters.compare(null, true)).isEqualTo(ComparisonResult.LESS_THAN);
 82    assertThat(Converters.compare(null, false)).isEqualTo(ComparisonResult.EQUAL);
 83    assertThat(Converters.compare(true, null)).isEqualTo(ComparisonResult.GREATER_THAN);
 84    assertThat(Converters.compare(false, null)).isEqualTo(ComparisonResult.EQUAL);
 85  }
 86
 87  @Test
 88  public void test_compareNullAndNumber() {
 89    assertThat(Converters.compare(null, 1.0)).isEqualTo(ComparisonResult.LESS_THAN);
 90    assertThat(Converters.compare(null, 1000.0)).isEqualTo(ComparisonResult.LESS_THAN);
 91    assertThat(Converters.compare(null, 0.0)).isEqualTo(ComparisonResult.EQUAL);
 92    assertThat(Converters.compare(1.0, null)).isEqualTo(ComparisonResult.GREATER_THAN);
 93    assertThat(Converters.compare(1000.0, null)).isEqualTo(ComparisonResult.GREATER_THAN);
 94    assertThat(Converters.compare(0.0, null)).isEqualTo(ComparisonResult.EQUAL);
 95  }
 96
 97  @Test
 98  public void test_compareNullAndString() {
 99    assertThat(Converters.compare(null, "a")).isEqualTo(ComparisonResult.LESS_THAN);
100    assertThat(Converters.compare(null, "b")).isEqualTo(ComparisonResult.LESS_THAN);
101    assertThat(Converters.compare(null, "")).isEqualTo(ComparisonResult.EQUAL);
102    assertThat(Converters.compare("a", null)).isEqualTo(ComparisonResult.GREATER_THAN);
103    assertThat(Converters.compare("b", null)).isEqualTo(ComparisonResult.GREATER_THAN);
104    assertThat(Converters.compare("", null)).isEqualTo(ComparisonResult.EQUAL);
105  }
106
107  @Test
108  public void testConvertToDouble_fromDouble() {
109    assertThat(Converters.toDouble(10.1)).isEqualTo(10.1);
110    assertThat(Converters.toDouble(10.0)).isEqualTo(10.0);
111  }
112
113  @Test
114  public void testConvertToDouble_fromString() {
115    assertThat(Converters.toDouble("10.1")).isEqualTo(10.1);
116    assertThat(Converters.toDouble("10.1e4")).isEqualTo(10.1e4);
117  }
118
119  @Test
120  public void testConvertToDouble_fromBoolean() {
121    assertThat(Converters.toDouble(true)).isEqualTo(1.0);
122    assertThat(Converters.toDouble(false)).isEqualTo(0.0);
123  }
124
125  @Test
126  public void testConvertToDouble_fromError() {
127    assertThat(tryToConvertToDoubleAndCatch(new DivException())).isEqualTo(new DivException());
128    assertThat(tryToConvertToDoubleAndCatch(new NumException())).isEqualTo(new NumException());
129  }
130
131  @Test
132  public void testConvertToDouble_fromAnythingElse() {
133    assertThat(tryToConvertToDoubleAndCatch(10)).isEqualTo(new ValueException());
134    assertThat(tryToConvertToDoubleAndCatch(ImmutableList.of())).isEqualTo(new ValueException());
135    assertThat(tryToConvertToDoubleAndCatch(new Object())).isEqualTo(new ValueException());
136  }
137
138  private Object tryToConvertToDoubleAndCatch(Object any) {
139    try {
140      return Converters.toDouble(any);
141    } catch (F7Exception error) {
142      return error;
143    }
144  }
145}