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}