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});