spreadsheet
typeScript/javascript spreadsheet parser, with formulas.
git clone https://git.vogt.world/spreadsheet.git
Log | Files | README.md
← All files
name: tests/Formulas/EngineeringTest.ts
-rw-r--r--
7201
  1import {
  2  BIN2DEC,
  3  BIN2HEX,
  4  BIN2OCT,
  5  DEC2BIN,
  6  DEC2HEX,
  7  DEC2OCT,
  8  DELTA
  9} from "../../src/Formulas/Engineering";
 10import * as ERRORS from "../../src/Errors";
 11import {
 12  assertEquals,
 13  catchAndAssertEquals,
 14  test
 15} from "../Utils/Asserts";
 16import {
 17  Cell
 18} from "../../src/Cell";
 19
 20
 21test("BIN2DEC", function(){
 22  assertEquals(BIN2DEC(Cell.BuildFrom("A1", "1010101010")), -342);
 23  assertEquals(BIN2DEC("1010101010"), -342);
 24  assertEquals(BIN2DEC("10"), 2);
 25  assertEquals(BIN2DEC(["10", "str"]), 2);
 26  catchAndAssertEquals(function() {
 27    BIN2DEC(false);
 28  }, ERRORS.VALUE_ERROR);
 29  catchAndAssertEquals(function() {
 30    BIN2DEC("str");
 31  }, ERRORS.NUM_ERROR);
 32  catchAndAssertEquals(function() {
 33    BIN2DEC.apply(this, []);
 34  }, ERRORS.NA_ERROR);
 35  catchAndAssertEquals(function() {
 36    BIN2DEC.apply(this, ["10", "10"]);
 37  }, ERRORS.NA_ERROR);
 38});
 39
 40
 41test("BIN2HEX", function(){
 42  assertEquals(BIN2HEX(Cell.BuildFrom("A1", "1010101010")), "FFFFFFFEAA");
 43  assertEquals(BIN2HEX("1010101010"), "FFFFFFFEAA");
 44  assertEquals(BIN2HEX("10"), "2");
 45  assertEquals(BIN2HEX("10101010"), "AA");
 46  assertEquals(BIN2HEX("10101010", 4), "00AA");
 47  assertEquals(BIN2HEX(["10101010"], [4]), "00AA");
 48  catchAndAssertEquals(function() {
 49    BIN2HEX("10101010", 22);
 50  }, ERRORS.NUM_ERROR);
 51  catchAndAssertEquals(function() {
 52    BIN2HEX(false);
 53  }, ERRORS.VALUE_ERROR);
 54  catchAndAssertEquals(function() {
 55    BIN2HEX("10101010", 0);
 56  }, ERRORS.NUM_ERROR);
 57  catchAndAssertEquals(function() {
 58    BIN2DEC("str");
 59  }, ERRORS.NUM_ERROR);
 60  catchAndAssertEquals(function() {
 61    BIN2DEC.apply(this, []);
 62  }, ERRORS.NA_ERROR);
 63  catchAndAssertEquals(function() {
 64    BIN2DEC.apply(this, ["10", 4, 4]);
 65  }, ERRORS.NA_ERROR);
 66
 67});
 68
 69
 70test("BIN2OCT", function(){
 71  assertEquals(BIN2OCT(Cell.BuildFrom("A1", "1010101010")), "7777777252");
 72  assertEquals(BIN2OCT("1010101010"), "7777777252");
 73  assertEquals(BIN2OCT("10"), "2");
 74  assertEquals(BIN2OCT("100"), "4");
 75  assertEquals(BIN2OCT("10101010"), "252");
 76  assertEquals(BIN2OCT("10101010", 4), "252");
 77  assertEquals(BIN2OCT(["10101010"], [4]), "252");
 78  catchAndAssertEquals(function() {
 79    BIN2OCT("10101010", 22);
 80  }, ERRORS.NUM_ERROR);
 81  catchAndAssertEquals(function() {
 82    BIN2OCT(false);
 83  }, ERRORS.VALUE_ERROR);
 84  catchAndAssertEquals(function() {
 85    BIN2OCT("10101010", 0);
 86  }, ERRORS.NUM_ERROR);
 87  catchAndAssertEquals(function() {
 88    BIN2OCT("str");
 89  }, ERRORS.NUM_ERROR);
 90  catchAndAssertEquals(function() {
 91    BIN2OCT.apply(this, []);
 92  }, ERRORS.NA_ERROR);
 93  catchAndAssertEquals(function() {
 94    BIN2OCT.apply(this, ["10", 4, 4]);
 95  }, ERRORS.NA_ERROR);
 96});
 97
 98
 99test("DEC2BIN", function(){
100  assertEquals(DEC2BIN(Cell.BuildFrom("A1", 100)), "1100100");
101  assertEquals(DEC2BIN([100]), "1100100");
102  assertEquals(DEC2BIN(100), "1100100");
103  assertEquals(DEC2BIN(22), "10110");
104  assertEquals(DEC2BIN(22.11), "10110");
105  assertEquals(DEC2BIN(22.77), "10110");
106  assertEquals(DEC2BIN("22.77"), "10110");
107  assertEquals(DEC2BIN(100, 8), "01100100");
108  assertEquals(DEC2BIN([100], [8]), "01100100");
109  assertEquals(DEC2BIN(100, 7), "1100100");
110  assertEquals(DEC2BIN(100, 10), "0001100100");
111  assertEquals(DEC2BIN(-100), "1110011100");
112  assertEquals(DEC2BIN("-22.77"), "1111101010");
113  assertEquals(DEC2BIN(-22.11), "1111101010");
114  assertEquals(DEC2BIN(-22), "1111101010");
115  assertEquals(DEC2BIN(false), "0");
116  assertEquals(DEC2BIN(true), "1");
117  catchAndAssertEquals(function() {
118    DEC2BIN(100, 0);
119  }, ERRORS.NUM_ERROR);
120  catchAndAssertEquals(function() {
121    DEC2BIN(513, 10);
122  }, ERRORS.NUM_ERROR);
123  catchAndAssertEquals(function() {
124    DEC2BIN.apply(this, [100, 100, 10]);
125  }, ERRORS.NA_ERROR);
126  catchAndAssertEquals(function() {
127    DEC2BIN.apply(this, []);
128  }, ERRORS.NA_ERROR);
129  catchAndAssertEquals(function() {
130    DEC2BIN("str");
131  }, ERRORS.VALUE_ERROR);
132});
133
134
135test("DEC2HEX", function(){
136  assertEquals(DEC2HEX(Cell.BuildFrom("A1", 100)), "64");
137  assertEquals(DEC2HEX([100]), "64");
138  assertEquals(DEC2HEX(100), "64");
139  assertEquals(DEC2HEX(22), "16");
140  assertEquals(DEC2HEX(22.11), "16");
141  assertEquals(DEC2HEX(22.77), "16");
142  assertEquals(DEC2HEX("22.77"), "16");
143  assertEquals(DEC2HEX(100, 8), "00000064");
144  assertEquals(DEC2HEX([100], [8]), "00000064");
145  assertEquals(DEC2HEX(100, 7), "0000064");
146  assertEquals(DEC2HEX(100, 10), "0000000064");
147  assertEquals(DEC2HEX(-100), "FFFFFFFF9C");
148  assertEquals(DEC2HEX("-22.77"), "FFFFFFFFEA");
149  assertEquals(DEC2HEX(-22.11), "FFFFFFFFEA");
150  assertEquals(DEC2HEX(-22), "FFFFFFFFEA");
151  assertEquals(DEC2HEX(false), "0");
152  assertEquals(DEC2HEX(true), "1");
153  catchAndAssertEquals(function() {
154    DEC2HEX(100, 0);
155  }, ERRORS.NUM_ERROR);
156  catchAndAssertEquals(function() {
157    DEC2HEX(549755813889, 10);
158  }, ERRORS.NUM_ERROR);
159  catchAndAssertEquals(function() {
160    DEC2HEX(54975581, -10);
161  }, ERRORS.NUM_ERROR);
162  catchAndAssertEquals(function() {
163    DEC2HEX.apply(this, [100, 100, 10]);
164  }, ERRORS.NA_ERROR);
165  catchAndAssertEquals(function() {
166    DEC2HEX.apply(this, []);
167  }, ERRORS.NA_ERROR);
168  catchAndAssertEquals(function() {
169    DEC2HEX("str");
170  }, ERRORS.VALUE_ERROR);
171});
172
173
174test("DEC2OCT", function(){
175  assertEquals(DEC2OCT(Cell.BuildFrom("A1", 100)), "144");
176  assertEquals(DEC2OCT([100]), "144");
177  assertEquals(DEC2OCT(100), "144");
178  assertEquals(DEC2OCT(22), "26");
179  assertEquals(DEC2OCT(22.11), "26");
180  assertEquals(DEC2OCT(22.77), "26");
181  assertEquals(DEC2OCT("22.77"), "26");
182  assertEquals(DEC2OCT(100, 8), "00000144");
183  assertEquals(DEC2OCT([100], [8]), "00000144");
184  assertEquals(DEC2OCT(100, 7), "0000144");
185  assertEquals(DEC2OCT(100, 10), "0000000144");
186  assertEquals(DEC2OCT(-100), "7777777634");
187  assertEquals(DEC2OCT("-22.77"), "7777777752");
188  assertEquals(DEC2OCT(-22.11), "7777777752");
189  assertEquals(DEC2OCT(-22), "7777777752");
190  assertEquals(DEC2OCT(false), "0");
191  assertEquals(DEC2OCT(true), "1");
192  catchAndAssertEquals(function() {
193    DEC2OCT(100, 0);
194  }, ERRORS.NUM_ERROR);
195  catchAndAssertEquals(function() {
196    DEC2OCT(536870913, 10);
197  }, ERRORS.NUM_ERROR);
198  catchAndAssertEquals(function() {
199    DEC2OCT(536870910, -10);
200  }, ERRORS.NUM_ERROR);
201  catchAndAssertEquals(function() {
202    DEC2OCT.apply(this, [100, 100, 10]);
203  }, ERRORS.NA_ERROR);
204  catchAndAssertEquals(function() {
205    DEC2OCT.apply(this, []);
206  }, ERRORS.NA_ERROR);
207  catchAndAssertEquals(function() {
208    DEC2OCT("str");
209  }, ERRORS.VALUE_ERROR);
210});
211
212
213test("DELTA", function(){
214  assertEquals(DELTA(Cell.BuildFrom("A1", 2), 2), 1);
215  assertEquals(DELTA(2, 2), 1);
216  assertEquals(DELTA(2, 1), 0);
217  assertEquals(DELTA(2), 0);
218  assertEquals(DELTA("", ""), 1);
219  assertEquals(DELTA(false), 1);
220  assertEquals(DELTA(true), 0);
221  assertEquals(DELTA(2.2, 2.1), 0);
222  assertEquals(DELTA(1, true), 1);
223  assertEquals(DELTA(0, false), 1);
224  assertEquals(DELTA(true, true), 1);
225  catchAndAssertEquals(function() {
226    DELTA("str");
227  }, ERRORS.VALUE_ERROR);
228  catchAndAssertEquals(function() {
229    DELTA("n", "n");
230  }, ERRORS.VALUE_ERROR);
231  catchAndAssertEquals(function() {
232    DELTA.apply(this, []);
233  }, ERRORS.NA_ERROR);
234  catchAndAssertEquals(function() {
235    DELTA.apply(this, [1, 2, 3]);
236  }, ERRORS.NA_ERROR);
237});