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/ExecutorTypeCastingTest.ts
-rw-r--r--
6560
  1import { RefException } from "../../../main/js/errors/RefException";
  2import { runner, it, describe } from "../testutils/TestUtils";
  3
  4describe("Executor.execute - Type Casting", function () {
  5  it("should cast string to int number", function () {
  6    runner().addCell("Alpha", "A1", '= "0" * 1').addExpectedValue("Alpha", "A1", 0.0).run();
  7    runner().addCell("Alpha", "A1", '= "1" * 1').addExpectedValue("Alpha", "A1", 1.0).run();
  8    runner()
  9      .addCell("Alpha", "A1", '= "2738281" * 1')
 10      .addExpectedValue("Alpha", "A1", 2738281.0)
 11      .run();
 12    runner()
 13      .addCell("Alpha", "A1", '= "0001776" * 1')
 14      .addExpectedValue("Alpha", "A1", 1776.0)
 15      .run();
 16  });
 17
 18  it("should cast string to decimal number", function () {
 19    runner().addCell("Alpha", "A1", '= "0.0" * 1').addExpectedValue("Alpha", "A1", 0.0).run();
 20    runner()
 21      .addCell("Alpha", "A1", '= "0.187328" * 1')
 22      .addExpectedValue("Alpha", "A1", 0.187328)
 23      .run();
 24    runner()
 25      .addCell("Alpha", "A1", '= "38133.09128901" * 1')
 26      .addExpectedValue("Alpha", "A1", 38133.09128901)
 27      .run();
 28    runner()
 29      .addCell("Alpha", "A1", '= "4.00000000000001" * 1')
 30      .addExpectedValue("Alpha", "A1", 4.00000000000001)
 31      .run();
 32    runner()
 33      .addCell("Alpha", "A1", '= "33.0000000000000" * 1')
 34      .addExpectedValue("Alpha", "A1", 33.0)
 35      .run();
 36  });
 37
 38  it("should cast string to number (inferred positive sci-notation)", function () {
 39    runner()
 40      .addCell("Alpha", "A1", '= "12387e0" * 1')
 41      .addExpectedValue("Alpha", "A1", 12387.0)
 42      .run();
 43    runner()
 44      .addCell("Alpha", "A1", '= "12387e1" * 1')
 45      .addExpectedValue("Alpha", "A1", 123870.0)
 46      .run();
 47    runner().addCell("Alpha", "A1", '= "1.0e4" * 1').addExpectedValue("Alpha", "A1", 10000.0).run();
 48    runner().addCell("Alpha", "A1", '= "0.0009e4" * 1').addExpectedValue("Alpha", "A1", 9.0).run();
 49  });
 50
 51  it("should cast string to number (positive sci-notation)", function () {
 52    runner()
 53      .addCell("Alpha", "A1", '= "12387e+0" * 1')
 54      .addExpectedValue("Alpha", "A1", 12387.0)
 55      .run();
 56    runner()
 57      .addCell("Alpha", "A1", '= "12387e+1" * 1')
 58      .addExpectedValue("Alpha", "A1", 123870.0)
 59      .run();
 60    runner()
 61      .addCell("Alpha", "A1", '= "1.0e+4" * 1')
 62      .addExpectedValue("Alpha", "A1", 10000.0)
 63      .run();
 64    runner().addCell("Alpha", "A1", '= "0.0009e+4" * 1').addExpectedValue("Alpha", "A1", 9.0).run();
 65  });
 66
 67  it("should cast string to number (negative sci-notation)", function () {
 68    runner()
 69      .addCell("Alpha", "A1", '= "12387e-0" * 1')
 70      .addExpectedValue("Alpha", "A1", 12387)
 71      .run();
 72    runner()
 73      .addCell("Alpha", "A1", '= "12387e-1" * 1')
 74      .addExpectedValue("Alpha", "A1", 12387e-1)
 75      .run();
 76    runner().addCell("Alpha", "A1", '= "1.0e-4" * 1').addExpectedValue("Alpha", "A1", 1.0e-4).run();
 77    runner()
 78      .addCell("Alpha", "A1", '= "0.0009e-4" * 1')
 79      .addExpectedValue("Alpha", "A1", 0.0009e-4)
 80      .run();
 81  });
 82
 83  it("should cast boolean to number", function () {
 84    runner().addCell("Alpha", "A1", "= FALSE * 1").addExpectedValue("Alpha", "A1", 0.0).run();
 85    runner().addCell("Alpha", "A1", "= TRUE * 1").addExpectedValue("Alpha", "A1", 1.0).run();
 86  });
 87
 88  it("should cast number to int string", function () {
 89    runner().addCell("Alpha", "A1", '= 0 & ""').addExpectedValue("Alpha", "A1", "0").run();
 90    runner().addCell("Alpha", "A1", '= 1 & ""').addExpectedValue("Alpha", "A1", "1").run();
 91    runner()
 92      .addCell("Alpha", "A1", '= 2738281 & ""')
 93      .addExpectedValue("Alpha", "A1", "2738281")
 94      .run();
 95    runner().addCell("Alpha", "A1", '= 0001776 & ""').addExpectedValue("Alpha", "A1", "1776").run();
 96  });
 97
 98  it("should cast number to decimal string", function () {
 99    runner().addCell("Alpha", "A1", '= 0.0 & ""').addExpectedValue("Alpha", "A1", "0").run();
100    runner()
101      .addCell("Alpha", "A1", '= 0.187328 & ""')
102      .addExpectedValue("Alpha", "A1", "0.187328")
103      .run();
104    runner()
105      .addCell("Alpha", "A1", '= 38133.09128901 & ""')
106      .addExpectedValue("Alpha", "A1", "38133.09128901")
107      .run();
108    runner()
109      .addCell("Alpha", "A1", '= 4.00000000000001 & ""')
110      .addExpectedValue("Alpha", "A1", "4.00000000000001")
111      .run();
112    runner()
113      .addCell("Alpha", "A1", '= 33.0000000000000 & ""')
114      .addExpectedValue("Alpha", "A1", "33")
115      .run();
116  });
117
118  it("should cast number to string with positive scientific notation", function () {
119    runner()
120      .addCell("Alpha", "A1", '= 12387183718789125223e0 & ""')
121      .addExpectedValue("Alpha", "A1", "12387183718789126000")
122      .run();
123    runner()
124      .addCell("Alpha", "A1", '= 31287e42 & ""')
125      .addExpectedValue("Alpha", "A1", "3.1287e+46")
126      .run();
127    runner().addCell("Alpha", "A1", '= 1.0e4 & ""').addExpectedValue("Alpha", "A1", "10000").run();
128    runner().addCell("Alpha", "A1", '= 0.0009e4 & ""').addExpectedValue("Alpha", "A1", "9").run();
129  });
130
131  it("should cast number to boolean false", function () {
132    runner()
133      .addCell("Alpha", "A1", "= IF(0, TRUE, FALSE)")
134      .addExpectedValue("Alpha", "A1", false)
135      .run();
136  });
137
138  it("should cast number to boolean true", function () {
139    runner()
140      .addCell("Alpha", "A1", "= IF(0.00001, TRUE, FALSE)")
141      .addExpectedValue("Alpha", "A1", true)
142      .run();
143    runner()
144      .addCell("Alpha", "A1", "= IF(1, TRUE, FALSE)")
145      .addExpectedValue("Alpha", "A1", true)
146      .run();
147    runner()
148      .addCell("Alpha", "A1", "= IF(2, TRUE, FALSE)")
149      .addExpectedValue("Alpha", "A1", true)
150      .run();
151    runner()
152      .addCell("Alpha", "A1", "= IF(-823178, TRUE, FALSE)")
153      .addExpectedValue("Alpha", "A1", true)
154      .run();
155    runner()
156      .addCell("Alpha", "A1", "= IF(31287e42, TRUE, FALSE)")
157      .addExpectedValue("Alpha", "A1", true)
158      .run();
159  });
160
161  it("should cast array literal to number", function () {
162    runner().addCell("Alpha", "A1", "= {2, 4, 8} * 1").addExpectedValue("Alpha", "A1", 2.0).run();
163    runner()
164      .addCell("Alpha", "A1", '= {2, "Nope."} * 1')
165      .addExpectedValue("Alpha", "A1", 2.0)
166      .run();
167    runner()
168      .addCell("Alpha", "A1", "= {} * 1")
169      .addExpectedValue("Alpha", "A1", new RefException())
170      .run();
171  });
172
173  it("should cast array literal to boolean", function () {
174    runner()
175      .addCell("Alpha", "A1", "= IF({1000, TRUE}, TRUE, FALSE)")
176      .addExpectedValue("Alpha", "A1", true)
177      .run();
178  });
179});