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/js/execution/ExecutorExponentTest.ts
-rw-r--r--
3962
 1import { NumException } from "../../../main/js/errors/NumException";
 2import { runner, it, describe } from "../testutils/TestUtils";
 3
 4describe("Executor.execute - Exponents", function () {
 5  it("should work with positive number, positive exponent", function () {
 6    runner().addCell("Alpha", "A1", "= 3^5").addExpectedValue("Alpha", "A1", 243.0).run();
 7    runner().addCell("Alpha", "A1", "= 4^5").addExpectedValue("Alpha", "A1", 1024.0).run();
 8    runner().addCell("Alpha", "A1", "= 1^1").addExpectedValue("Alpha", "A1", 1.0).run();
 9    runner().addCell("Alpha", "A1", "= 1^5").addExpectedValue("Alpha", "A1", 1.0).run();
10    runner().addCell("Alpha", "A1", "= 2^0").addExpectedValue("Alpha", "A1", 1.0).run();
11    runner().addCell("Alpha", "A1", "= 0^10").addExpectedValue("Alpha", "A1", 0.0).run();
12  });
13
14  it("should work with positive number, negative exponent", function () {
15    runner()
16      .addCell("Alpha", "A1", "= 3^-5")
17      .addExpectedValue("Alpha", "A1", 0.00411522633744856)
18      .run();
19    runner().addCell("Alpha", "A1", "= 4^-5").addExpectedValue("Alpha", "A1", 9.765625e-4).run();
20    runner().addCell("Alpha", "A1", "= 1^-1").addExpectedValue("Alpha", "A1", 1.0).run();
21    runner().addCell("Alpha", "A1", "= 1^-5").addExpectedValue("Alpha", "A1", 1.0).run();
22    runner().addCell("Alpha", "A1", "= 2^-0").addExpectedValue("Alpha", "A1", 1.0).run();
23    // TODO/HACK: This is different in Excel and Google Sheets.
24    runner()
25      .addCell("Alpha", "A1", "= 0^-10")
26      .addExpectedValue("Alpha", "A1", new NumException())
27      .run();
28  });
29
30  it("should work with negative number, negative exponent", function () {
31    runner()
32      .addCell("Alpha", "A1", "= -3^-1")
33      .addExpectedValue("Alpha", "A1", -0.3333333333333333)
34      .run();
35    runner()
36      .addCell("Alpha", "A1", "= -3^-2")
37      .addExpectedValue("Alpha", "A1", 0.1111111111111111)
38      .run();
39    runner()
40      .addCell("Alpha", "A1", "= -3^-3")
41      .addExpectedValue("Alpha", "A1", -0.037037037037037035)
42      .run();
43    runner().addCell("Alpha", "A1", "= -2^-3").addExpectedValue("Alpha", "A1", -0.125).run();
44    runner().addCell("Alpha", "A1", "= -1^-3").addExpectedValue("Alpha", "A1", -1.0).run();
45    runner().addCell("Alpha", "A1", "= -1^-2").addExpectedValue("Alpha", "A1", 1.0).run();
46  });
47
48  it("should work with negative number, positive exponent", function () {
49    runner().addCell("Alpha", "A1", "= -3^1").addExpectedValue("Alpha", "A1", -3.0).run();
50    runner().addCell("Alpha", "A1", "= -3^2").addExpectedValue("Alpha", "A1", 9.0).run();
51    runner().addCell("Alpha", "A1", "= -3^3").addExpectedValue("Alpha", "A1", -27.0).run();
52    runner().addCell("Alpha", "A1", "= -2^3").addExpectedValue("Alpha", "A1", -8.0).run();
53    runner().addCell("Alpha", "A1", "= -1^3").addExpectedValue("Alpha", "A1", -1.0).run();
54    runner().addCell("Alpha", "A1", "= -1^2").addExpectedValue("Alpha", "A1", 1.0).run();
55  });
56
57  it("should follow the order of operations correctly with respect to left-association", function () {
58    runner().addCell("Alpha", "A1", "= 2 ^ 3 ^ 4").addExpectedValue("Alpha", "A1", 4096.0).run();
59    runner().addCell("Alpha", "A1", "= 3 ^ 2 ^ 4").addExpectedValue("Alpha", "A1", 6561.0).run();
60    runner().addCell("Alpha", "A1", "= 4 ^ 2 ^ 3").addExpectedValue("Alpha", "A1", 4096.0).run();
61  });
62
63  it("should work with booleans", function () {
64    runner().addCell("Alpha", "A1", "= 9 ^ TRUE").addExpectedValue("Alpha", "A1", 9.0).run();
65    runner().addCell("Alpha", "A1", "= 9 ^ FALSE").addExpectedValue("Alpha", "A1", 1.0).run();
66  });
67
68  it("should work with strings", function () {
69    runner().addCell("Alpha", "A1", '= 2 ^ "3"').addExpectedValue("Alpha", "A1", 8.0).run();
70    runner()
71      .addCell("Alpha", "A1", '= 2 ^ "3e1"')
72      .addExpectedValue("Alpha", "A1", 1.073741824e9)
73      .run();
74    runner().addCell("Alpha", "A1", '= 2 ^ "2"').addExpectedValue("Alpha", "A1", 4.0).run();
75  });
76});