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/F7CodeExecutorGeneralExponentTest.java
-rw-r--r--
2434
 1package io.protobase.f7.spreadsheet;
 2
 3import io.protobase.f7.errors.NumException;
 4import io.protobase.f7.testutils.TestF7CodeExecutor;
 5import org.junit.Test;
 6
 7import static com.google.common.truth.Truth.assertThat;
 8
 9public class F7CodeExecutorGeneralExponentTest extends TestF7CodeExecutor {
10  @Test
11  public void test_Numbers_PositiveNumeratorPositiveExponent() {
12    assertThat(run("= 3^5")).isEqualTo(243.0);
13    assertThat(run("= 4^5")).isEqualTo(1024.0);
14    assertThat(run("= 1^1")).isEqualTo(1.0);
15    assertThat(run("= 1^5")).isEqualTo(1.0);
16    assertThat(run("= 2^0")).isEqualTo(1.0);
17    assertThat(run("= 0^10")).isEqualTo(0.0);
18  }
19
20  @Test
21  public void test_Numbers_PositiveNumeratorNegativeExponent() {
22    assertThat(run("= 3^-5")).isEqualTo(0.00411522633744856);
23    assertThat(run("= 4^-5")).isEqualTo(9.765625E-4);
24    assertThat(run("= 1^-1")).isEqualTo(1.0);
25    assertThat(run("= 1^-5")).isEqualTo(1.0);
26    assertThat(run("= 2^-0")).isEqualTo(1.0);
27    // TODO/HACK: This is different in Excel and Google Sheets.
28    assertThat(run("= 0^-10")).isEqualTo(new NumException());
29  }
30
31  @Test
32  public void test_Numbers_NegativeNumeratorNegativeExponent() {
33    assertThat(run("= -3^-1")).isEqualTo(-0.3333333333333333);
34    assertThat(run("= -3^-2")).isEqualTo(0.1111111111111111);
35    assertThat(run("= -3^-3")).isEqualTo(-0.037037037037037035);
36    assertThat(run("= -2^-3")).isEqualTo(-0.125);
37    assertThat(run("= -1^-3")).isEqualTo(-1.0);
38    assertThat(run("= -1^-2")).isEqualTo(1.0);
39  }
40
41  @Test
42  public void test_Numbers_NegativeNumeratorPositiveExponent() {
43    assertThat(run("= -3^1")).isEqualTo(-3.0);
44    assertThat(run("= -3^2")).isEqualTo(9.0);
45    assertThat(run("= -3^3")).isEqualTo(-27.0);
46    assertThat(run("= -2^3")).isEqualTo(-8.0);
47    assertThat(run("= -1^3")).isEqualTo(-1.0);
48    assertThat(run("= -1^2")).isEqualTo(1.0);
49  }
50
51  @Test
52  public void test_Order() {
53    assertThat(run("= 2 ^ 3 ^ 4")).isEqualTo(4096.0);
54    assertThat(run("= 3 ^ 2 ^ 4")).isEqualTo(6561.0);
55    assertThat(run("= 4 ^ 2 ^ 3")).isEqualTo(4096.0);
56  }
57
58  @Test
59  public void test_Boolean() {
60    assertThat(run("= 9 ^ TRUE")).isEqualTo(9.0);
61    assertThat(run("= 9 ^ FALSE")).isEqualTo(1.0);
62  }
63
64  @Test
65  public void test_String() {
66    assertThat(run("= 2 ^ \"3\"")).isEqualTo(8.0);
67    assertThat(run("= 2 ^ \"3e1\"")).isEqualTo(1.073741824E9);
68    assertThat(run("= 2 ^ \"2\"")).isEqualTo(4.0);
69  }
70}