Branch data Line data Source code
1 [ + ]: 1 : /**
2 : 1 : * @module rational-test
3 : 1 : * @desc A test module for testing the rational C++ addon and the emulating JavaScript module.
4 : 1 : * @version 1.0.0
5 : 1 : * @author Essam A. El-Sherif
6 : 1 : */
7 : 1 :
8 : 1 : const assert = require('node:assert').strict;
9 : 1 :
10 : 1 : /**
11 : 1 : * @const rational_addon {object} The C++ addon exported object.
12 : 1 : */
13 : 1 : const rational_addon = require('../build/Release/rational');
14 : 1 :
15 : 1 : /**
16 : 1 : * @const rational_module {object} The JavaScript module exported object.
17 : 1 : * @see module:rational-module
18 : 1 : */
19 : 1 : const rational_module = require('./rational.module');
20 : 1 :
21 : 1 : /* Prepare test environment */
22 : 1 : let testCount = 1;
23 : 1 : let passCount = 0;
24 : 1 : let failCount = 0;
25 : 1 : let cancelCount = 0;
26 : 1 : let skipCount = 0;
27 : 1 : let todoCount = 0;
28 : 1 : let startTime = Date.now();
29 : 1 :
30 : 1 : const suites = new Map();
31 : 1 :
32 : 1 : /** @const {object} cmdOptions - Testing options. */
33 : 1 : const cmdOptions = {
34 : 1 : node : true,
35 : 1 : verbose : false,
36 : 1 : };
37 : 1 :
38 : 1 : /**
39 : 1 : * @func Main
40 : 1 : * @desc The application entry point function.
41 : 1 : */
42 [ + ]: 1 : (() => {
43 : 1 : loadTestData();
44 : 1 :
45 : 1 : if(cmdOptions.node){
46 : 1 :
47 : 1 : import('node:test')
48 [ + ]: 1 : .then(runner => {
49 : 1 : cmdOptions.verbose = false;
50 : 1 : nodeRunner(runner);
51 : 1 : }) /* node:coverage disable */
52 : : .catch((e) => {
53 : : defRunner();
54 : : });
55 [ - ]: : }
56 : : else{
57 : : defRunner();
58 : : } /* node:coverage enable */
59 : 1 : })('Main Function');
60 : 1 :
61 : 1 : /**
62 : 1 : * @func loadTestData
63 : 1 : * @desc Load test data.
64 : 1 : */
65 [ + ]: 1 : function loadTestData(){
66 : 1 :
67 : 1 : let testData = null;
68 : 1 : let suiteDesc = '';
69 : 1 :
70 : 1 : // TEST SUITE #1 - Rational constructor
71 : 1 : suiteDesc = 'Rational constructor';
72 : 1 : suites.set(suiteDesc, []);
73 : 1 :
74 : 1 : // TEST ### - Default constructor ... valid test#1
75 : 1 : testData = {};
76 [ + ]: 1 : testData.method = () => {
77 : 1 : assert(new rational_addon.Rational().getNumerator() === 0);
78 : 1 : assert(new rational_addon.Rational().getDenominator() === 1);
79 : 1 :
80 : 1 : assert(new rational_module.Rational().getNumerator() === 0);
81 : 1 : assert(new rational_module.Rational().getDenominator() === 1);
82 : 1 : };
83 : 1 : testData.desc = 'Default constructor ... valid test#1';
84 : 1 :
85 : 1 : testData.skip = false;
86 : 1 : suites.get(suiteDesc).push(testData);
87 : 1 :
88 : 1 : // TEST ### - One argument constructor ... valid test#1
89 : 1 : testData = {};
90 [ + ]: 1 : testData.method = () => {
91 : 1 : assert(new rational_addon.Rational(2).getNumerator() === 2);
92 : 1 : assert(new rational_addon.Rational(2).getDenominator() === 1);
93 : 1 :
94 : 1 : assert(new rational_module.Rational(2).getNumerator() === 2);
95 : 1 : assert(new rational_module.Rational(2).getDenominator() === 1);
96 : 1 : };
97 : 1 : testData.desc = 'One argument constructor ... valid test#1';
98 : 1 :
99 : 1 : testData.skip = false;
100 : 1 : suites.get(suiteDesc).push(testData);
101 : 1 :
102 : 1 : // TEST ### - One argument constructor ... valid test#2
103 : 1 : testData = {};
104 [ + ]: 1 : testData.method = () => {
105 : 1 : assert(new rational_addon.Rational('2').getNumerator() === 2);
106 : 1 : assert(new rational_addon.Rational('2').getDenominator() === 1);
107 : 1 :
108 : 1 : assert(new rational_module.Rational('2').getNumerator() === 2);
109 : 1 : assert(new rational_module.Rational('2').getDenominator() === 1);
110 : 1 : };
111 : 1 : testData.desc = 'One argument constructor ... valid test#2';
112 : 1 :
113 : 1 : testData.skip = false;
114 : 1 : suites.get(suiteDesc).push(testData);
115 : 1 :
116 : 1 : // TEST ### - One argument constructor ... valid test#3
117 : 1 : testData = {};
118 [ + ]: 1 : testData.method = () => {
119 : 1 : let s = new rational_addon.Rational(2);
120 : 1 : assert(new rational_addon.Rational(s).getNumerator() === 2);
121 : 1 : assert(new rational_addon.Rational(s).getDenominator() === 1);
122 : 1 :
123 : 1 : let r2 = new rational_module.Rational(2);
124 : 1 : assert(new rational_module.Rational(r2).getNumerator() === 2);
125 : 1 : assert(new rational_module.Rational(r2).getDenominator() === 1);
126 : 1 : };
127 : 1 : testData.desc = 'One argument constructor ... valid test#3';
128 : 1 :
129 : 1 : testData.skip = false;
130 : 1 : suites.get(suiteDesc).push(testData);
131 : 1 :
132 : 1 : // TEST ### - One argument constructor ... invalid test#1
133 : 1 : testData = {};
134 [ + ]: 1 : testData.method = () => {
135 : 1 :
136 : 1 : assert.throws(
137 [ + ]: 1 : () => {
138 : 1 : new rational_addon.Rational(2n);
139 : 1 : },
140 [ + ]: 1 : (err) => {
141 : 1 : assert(err instanceof TypeError, 'rational_addon.Rational(2n)');
142 : 1 : assert.strictEqual(
143 : 1 : err.message, 'Rational: BigInt type is not accepted',
144 : 1 : 'rational_addon.Rational(2n)'
145 : 1 : );
146 : 1 : return true;
147 : 1 : }
148 : 1 : );
149 : 1 : assert.throws(
150 [ + ]: 1 : () => {
151 : 1 : new rational_module.Rational(2n);
152 : 1 : },
153 [ + ]: 1 : (err) => {
154 : 1 : assert(err instanceof TypeError, 'rational_module.Rational(2n)');
155 : 1 : assert.strictEqual(
156 : 1 : err.message, 'Rational: BigInt type is not accepted',
157 : 1 : 'rational_module.Rational(2n)'
158 : 1 : );
159 : 1 : return true;
160 : 1 : }
161 : 1 : );
162 : 1 : };
163 : 1 : testData.desc = 'One argument constructor ... invalid test#1';
164 : 1 :
165 : 1 : testData.skip = false;
166 : 1 : suites.get(suiteDesc).push(testData);
167 : 1 :
168 : 1 : // TEST ### - One argument constructor ... invalid test#2
169 : 1 : testData = {};
170 [ + ]: 1 : testData.method = () => {
171 : 1 :
172 : 1 : assert.throws(
173 [ + ]: 1 : () => {
174 : 1 : new rational_addon.Rational({});
175 : 1 : },
176 [ + ]: 1 : (err) => {
177 : 1 : assert(err instanceof TypeError, 'rational_addon.Rational({})');
178 : 1 : assert.strictEqual(
179 : 1 : err.message, `Rational: invalid argument`,
180 : 1 : 'rational_addon.Rational({})'
181 : 1 : );
182 : 1 : return true;
183 : 1 : }
184 : 1 : );
185 : 1 : assert.throws(
186 [ + ]: 1 : () => {
187 : 1 : new rational_module.Rational({});
188 : 1 : },
189 [ + ]: 1 : (err) => {
190 : 1 : assert(err instanceof TypeError, 'rational_module.Rational({})');
191 : 1 : assert.strictEqual(
192 : 1 : err.message, `Rational: invalid argument`,
193 : 1 : 'rational_module.Rational({})'
194 : 1 : );
195 : 1 : return true;
196 : 1 : }
197 : 1 : );
198 : 1 : };
199 : 1 : testData.desc = 'One argument constructor ... invalid test#2';
200 : 1 :
201 : 1 : testData.skip = false;
202 : 1 : suites.get(suiteDesc).push(testData);
203 : 1 :
204 : 1 : // TEST ### - One argument constructor ... invalid test#3
205 : 1 : testData = {};
206 [ + ]: 1 : testData.method = () => {
207 : 1 :
208 : 1 : assert.throws(
209 [ + ]: 1 : () => {
210 : 1 : new rational_addon.Rational([]);
211 : 1 : },
212 [ + ]: 1 : (err) => {
213 : 1 : assert(err instanceof TypeError, 'rational_addon.Rational([])');
214 : 1 : assert.strictEqual(
215 : 1 : err.message, `Rational: invalid argument`,
216 : 1 : 'rational_addon.Rational([])'
217 : 1 : );
218 : 1 : return true;
219 : 1 : }
220 : 1 : );
221 : 1 : assert.throws(
222 [ + ]: 1 : () => {
223 : 1 : new rational_module.Rational([]);
224 : 1 : },
225 [ + ]: 1 : (err) => {
226 : 1 : assert(err instanceof TypeError, 'rational_module.Rational([])');
227 : 1 : assert.strictEqual(
228 : 1 : err.message, `Rational: invalid argument`,
229 : 1 : 'rational_module.Rational([])'
230 : 1 : );
231 : 1 : return true;
232 : 1 : }
233 : 1 : );
234 : 1 : };
235 : 1 : testData.desc = 'One argument constructor ... invalid test#3';
236 : 1 :
237 : 1 : testData.skip = false;
238 : 1 : suites.get(suiteDesc).push(testData);
239 : 1 :
240 : 1 : // TEST ### - One argument constructor ... invalid test#4
241 : 1 : testData = {};
242 [ + ]: 1 : testData.method = () => {
243 : 1 :
244 : 1 : assert.throws(
245 [ + ]: 1 : () => {
246 : 1 : new rational_addon.Rational(()=>{});
247 : 1 : },
248 [ + ]: 1 : (err) => {
249 : 1 : assert(err instanceof TypeError, 'rational_addon.Rational(()=>{})');
250 : 1 : assert.strictEqual(
251 : 1 : err.message, `Rational: invalid argument`,
252 : 1 : 'rational_addon.Rational(()=>{})'
253 : 1 : );
254 : 1 : return true;
255 : 1 : }
256 : 1 : );
257 : 1 : assert.throws(
258 [ + ]: 1 : () => {
259 : 1 : new rational_module.Rational(()=>{});
260 : 1 : },
261 [ + ]: 1 : (err) => {
262 : 1 : assert(err instanceof TypeError, 'rational_module.Rational(()=>{})');
263 : 1 : assert.strictEqual(
264 : 1 : err.message, `Rational: invalid argument`,
265 : 1 : 'rational_module.Rational(()=>{})'
266 : 1 : );
267 : 1 : return true;
268 : 1 : }
269 : 1 : );
270 : 1 : };
271 : 1 : testData.desc = 'One argument constructor ... invalid test#4';
272 : 1 :
273 : 1 : testData.skip = false;
274 : 1 : suites.get(suiteDesc).push(testData);
275 : 1 :
276 : 1 : // TEST ### - One argument constructor ... invalid test#5
277 : 1 : testData = {};
278 [ + ]: 1 : testData.method = () => {
279 : 1 :
280 : 1 : assert.throws(
281 [ + ]: 1 : () => {
282 : 1 : new rational_addon.Rational(NaN);
283 : 1 : },
284 [ + ]: 1 : (err) => {
285 : 1 : assert(err instanceof TypeError, 'rational_addon.Rational(NaN)');
286 : 1 : assert.strictEqual(
287 : 1 : err.message, `Rational: invalid argument`,
288 : 1 : 'rational_addon.Rational(NaN)'
289 : 1 : );
290 : 1 : return true;
291 : 1 : }
292 : 1 : );
293 : 1 : assert.throws(
294 [ + ]: 1 : () => {
295 : 1 : new rational_module.Rational(NaN);
296 : 1 : },
297 [ + ]: 1 : (err) => {
298 : 1 : assert(err instanceof TypeError, 'rational_module.Rational(NaN)');
299 : 1 : assert.strictEqual(
300 : 1 : err.message, `Rational: invalid argument`,
301 : 1 : 'rational_module.Rational(NaN)'
302 : 1 : );
303 : 1 : return true;
304 : 1 : }
305 : 1 : );
306 : 1 : };
307 : 1 : testData.desc = 'One argument constructor ... invalid test#5';
308 : 1 :
309 : 1 : testData.skip = false;
310 : 1 : suites.get(suiteDesc).push(testData);
311 : 1 :
312 : 1 : // TEST ### - One argument constructor ... invalid test#6
313 : 1 : testData = {};
314 [ + ]: 1 : testData.method = () => {
315 : 1 :
316 : 1 : assert.throws(
317 [ + ]: 1 : () => {
318 : 1 : new rational_addon.Rational('xxx');
319 : 1 : },
320 [ + ]: 1 : (err) => {
321 : 1 : assert(err instanceof TypeError, `rational_addon.Rational('xxx')`);
322 : 1 : assert.strictEqual(
323 : 1 : err.message, `Rational: invalid argument`,
324 : 1 : `rational_addon.Rational('xxx')`
325 : 1 : );
326 : 1 : return true;
327 : 1 : }
328 : 1 : );
329 : 1 : assert.throws(
330 [ + ]: 1 : () => {
331 : 1 : new rational_module.Rational('xxx');
332 : 1 : },
333 [ + ]: 1 : (err) => {
334 : 1 : assert(err instanceof TypeError, `rational_module.Rational('xxx')`);
335 : 1 : assert.strictEqual(
336 : 1 : err.message, `Rational: invalid argument`,
337 : 1 : `rational_module.Rational('xxx')`
338 : 1 : );
339 : 1 : return true;
340 : 1 : }
341 : 1 : );
342 : 1 : };
343 : 1 : testData.desc = 'One argument constructor ... invalid test#6';
344 : 1 :
345 : 1 : testData.skip = false;
346 : 1 : suites.get(suiteDesc).push(testData);
347 : 1 :
348 : 1 : // TEST ### - Two argument constructor ... valid test#1
349 : 1 : testData = {};
350 [ + ]: 1 : testData.method = () => {
351 : 1 : assert(new rational_addon.Rational(1, 2).getNumerator() === 1);
352 : 1 : assert(new rational_addon.Rational(1, 2).getDenominator() === 2);
353 : 1 :
354 : 1 : assert(new rational_module.Rational(1, 2).getNumerator() === 1);
355 : 1 : assert(new rational_module.Rational(1, 2).getDenominator() === 2);
356 : 1 : };
357 : 1 : testData.desc = 'Two argument constructor ... valid test#1';
358 : 1 :
359 : 1 : testData.skip = false;
360 : 1 : suites.get(suiteDesc).push(testData);
361 : 1 :
362 : 1 : // TEST ### - Two argument constructor ... valid test#2
363 : 1 : testData = {};
364 [ + ]: 1 : testData.method = () => {
365 : 1 : assert(new rational_addon.Rational(-1, 2).getNumerator() === -1);
366 : 1 : assert(new rational_addon.Rational(-1, 2).getDenominator() === 2);
367 : 1 :
368 : 1 : assert(new rational_module.Rational(-1, 2).getNumerator() === -1);
369 : 1 : assert(new rational_module.Rational(-1, 2).getDenominator() === 2);
370 : 1 : };
371 : 1 : testData.desc = 'Two argument constructor ... valid test#2';
372 : 1 :
373 : 1 : testData.skip = false;
374 : 1 : suites.get(suiteDesc).push(testData);
375 : 1 :
376 : 1 : // TEST ### - Two argument constructor ... valid test#3
377 : 1 : testData = {};
378 [ + ]: 1 : testData.method = () => {
379 : 1 : assert(new rational_addon.Rational('1', '-2').getNumerator() === -1);
380 : 1 : assert(new rational_addon.Rational('1', '-2').getDenominator() === 2);
381 : 1 :
382 : 1 : assert(new rational_module.Rational('1', '-2').getNumerator() === -1);
383 : 1 : assert(new rational_module.Rational('1', '-2').getDenominator() === 2);
384 : 1 : };
385 : 1 : testData.desc = 'Two argument constructor ... valid test#3';
386 : 1 :
387 : 1 : testData.skip = false;
388 : 1 : suites.get(suiteDesc).push(testData);
389 : 1 :
390 : 1 : // TEST ### - Two argument constructor ... valid test#4
391 : 1 : testData = {};
392 [ + ]: 1 : testData.method = () => {
393 : 1 : assert(new rational_addon.Rational(-1, '-2').getNumerator() === 1);
394 : 1 : assert(new rational_addon.Rational(-1, '-2').getDenominator() === 2);
395 : 1 :
396 : 1 : assert(new rational_module.Rational(-1, '-2').getNumerator() === 1);
397 : 1 : assert(new rational_module.Rational(-1, '-2').getDenominator() === 2);
398 : 1 : };
399 : 1 : testData.desc = 'Two argument constructor ... valid test#4';
400 : 1 :
401 : 1 : testData.skip = false;
402 : 1 : suites.get(suiteDesc).push(testData);
403 : 1 :
404 : 1 : // TEST ### - Two argument constructor ... valid test#5
405 : 1 : testData = {};
406 [ + ]: 1 : testData.method = () => {
407 : 1 : assert(new rational_addon.Rational(0, '2').getNumerator() === 0);
408 : 1 : assert(new rational_addon.Rational(0, '2').getDenominator() === 1);
409 : 1 :
410 : 1 : assert(new rational_module.Rational(0, '2').getNumerator() === 0);
411 : 1 : assert(new rational_module.Rational(0, '2').getDenominator() === 1);
412 : 1 : };
413 : 1 : testData.desc = 'Two argument constructor ... valid test#5';
414 : 1 :
415 : 1 : testData.skip = false;
416 : 1 : suites.get(suiteDesc).push(testData);
417 : 1 :
418 : 1 : // TEST ### - Two argument constructor ... invalid test#6
419 : 1 : testData = {};
420 [ + ]: 1 : testData.method = () => {
421 : 1 :
422 : 1 : assert.throws(
423 [ + ]: 1 : () => {
424 : 1 : new rational_addon.Rational(2, 0);
425 : 1 : },
426 [ + ]: 1 : (err) => {
427 : 1 : assert(err instanceof TypeError, `rational_addon.Rational(2, 0)`);
428 : 1 : assert.strictEqual(
429 : 1 : err.message, `Rational: bad rational, zero denominator`,
430 : 1 : `rational_addon.Rational(2, 0)`
431 : 1 : );
432 : 1 : return true;
433 : 1 : }
434 : 1 : );
435 : 1 : assert.throws(
436 [ + ]: 1 : () => {
437 : 1 : new rational_module.Rational(2, 0);
438 : 1 : },
439 [ + ]: 1 : (err) => {
440 : 1 : assert(err instanceof TypeError, `rational_module.Rational(2, 0)`);
441 : 1 : assert.strictEqual(
442 : 1 : err.message, `Rational: bad rational, zero denominator`,
443 : 1 : `rational_module.Rational(2, 0)`
444 : 1 : );
445 : 1 : return true;
446 : 1 : }
447 : 1 : );
448 : 1 : };
449 : 1 : testData.desc = 'Two argument constructor ... invalid test#6';
450 : 1 :
451 : 1 : testData.skip = false;
452 : 1 : suites.get(suiteDesc).push(testData);
453 : 1 :
454 : 1 : // TEST ### - Three argument constructor ... invalid test#1
455 : 1 : testData = {};
456 [ + ]: 1 : testData.method = () => {
457 : 1 :
458 : 1 : assert.throws(
459 [ + ]: 1 : () => {
460 : 1 : new rational_addon.Rational(2, 1, 1);
461 : 1 : },
462 [ + ]: 1 : (err) => {
463 : 1 : assert(err instanceof TypeError, `rational_addon.Rational(2, 1, 1)`);
464 : 1 : assert.strictEqual(
465 : 1 : err.message, `Rational: invalid number of arguments`,
466 : 1 : `rational_addon.Rational(2, 1, 1)`
467 : 1 : );
468 : 1 : return true;
469 : 1 : }
470 : 1 : );
471 : 1 : assert.throws(
472 [ + ]: 1 : () => {
473 : 1 : new rational_module.Rational(2, 1, 1);
474 : 1 : },
475 [ + ]: 1 : (err) => {
476 : 1 : assert(err instanceof TypeError, `rational_module.Rational(2, 0)`);
477 : 1 : assert.strictEqual(
478 : 1 : err.message, `Rational: invalid number of arguments`,
479 : 1 : `rational_module.Rational(2, 1, 1)`
480 : 1 : );
481 : 1 : return true;
482 : 1 : }
483 : 1 : );
484 : 1 : };
485 : 1 : testData.desc = 'Three argument constructor ... invalid test#1';
486 : 1 :
487 : 1 : testData.skip = false;
488 : 1 : suites.get(suiteDesc).push(testData);
489 : 1 :
490 : 1 : // TEST ### - Three argument constructor ... invalid test#2
491 : 1 : testData = {};
492 [ + ]: 1 : testData.method = () => {
493 : 1 :
494 : 1 : assert.throws(
495 [ + ]: 1 : () => {
496 : 1 : new rational_addon.Rational(1, undefined, undefined);
497 : 1 : },
498 [ + ]: 1 : (err) => {
499 : 1 : assert(err instanceof TypeError, `rational_addon.Rational(1, undefined, undefined)`);
500 : 1 : assert.strictEqual(
501 : 1 : err.message, `Rational: invalid number of arguments`,
502 : 1 : `rational_addon.Rational(1, undefined, undefined)`
503 : 1 : );
504 : 1 : return true;
505 : 1 : }
506 : 1 : );
507 : 1 : assert.throws(
508 [ + ]: 1 : () => {
509 : 1 : new rational_module.Rational(1, undefined, undefined);
510 : 1 : },
511 [ + ]: 1 : (err) => {
512 : 1 : assert(err instanceof TypeError, `rational_module.Rational(1, undefined, undefined)`);
513 : 1 : assert.strictEqual(
514 : 1 : err.message, `Rational: invalid number of arguments`,
515 : 1 : `rational_module.Rational(1, undefined, undefined)`
516 : 1 : );
517 : 1 : return true;
518 : 1 : }
519 : 1 : );
520 : 1 : };
521 : 1 : testData.desc = 'Three argument constructor ... invalid test#2';
522 : 1 :
523 : 1 : testData.skip = false;
524 : 1 : suites.get(suiteDesc).push(testData);
525 : 1 :
526 : 1 : // TEST SUITE #2 - Rational assign() function
527 : 1 : suiteDesc = 'Rational assign() function';
528 : 1 : suites.set(suiteDesc, []);
529 : 1 :
530 : 1 : // TEST ### - Rational assign() ... valid test#1
531 : 1 : testData = {};
532 [ + ]: 1 : testData.method = () => {
533 : 1 : let r = new rational_addon.Rational();
534 : 1 : r.assign(new rational_addon.Rational(2));
535 : 1 :
536 : 1 : assert(r.getNumerator() === 2);
537 : 1 : assert(r.getDenominator() === 1);
538 : 1 :
539 : 1 : r = new rational_module.Rational();
540 : 1 : r.assign(new rational_module.Rational(2));
541 : 1 :
542 : 1 : assert(r.getNumerator() === 2);
543 : 1 : assert(r.getDenominator() === 1);
544 : 1 : };
545 : 1 : testData.desc = 'Rational assign() ... valid test#1';
546 : 1 :
547 : 1 : testData.skip = false;
548 : 1 : suites.get(suiteDesc).push(testData);
549 : 1 :
550 : 1 : // TEST ### - Rational assign() ... valid test#2
551 : 1 : testData = {};
552 [ + ]: 1 : testData.method = () => {
553 : 1 : let r = new rational_addon.Rational();
554 : 1 : r.assign(2);
555 : 1 :
556 : 1 : assert(r.getNumerator() === 2);
557 : 1 : assert(r.getDenominator() === 1);
558 : 1 :
559 : 1 : r = new rational_module.Rational();
560 : 1 : r.assign(2);
561 : 1 :
562 : 1 : assert(r.getNumerator() === 2);
563 : 1 : assert(r.getDenominator() === 1);
564 : 1 : };
565 : 1 : testData.desc = 'Rational assign() ... valid test#2';
566 : 1 :
567 : 1 : testData.skip = false;
568 : 1 : suites.get(suiteDesc).push(testData);
569 : 1 :
570 : 1 : // TEST ### - Rational assign() ... valid test#3
571 : 1 : testData = {};
572 [ + ]: 1 : testData.method = () => {
573 : 1 : let r = new rational_addon.Rational();
574 : 1 : r.assign(6, 4);
575 : 1 :
576 : 1 : assert(r.getNumerator() === 3);
577 : 1 : assert(r.getDenominator() === 2);
578 : 1 :
579 : 1 : r = new rational_module.Rational();
580 : 1 : r.assign(6, 4);
581 : 1 :
582 : 1 : assert(r.getNumerator() === 3);
583 : 1 : assert(r.getDenominator() === 2);
584 : 1 : };
585 : 1 : testData.desc = 'Rational assign() ... valid test#3';
586 : 1 :
587 : 1 : testData.skip = false;
588 : 1 : suites.get(suiteDesc).push(testData);
589 : 1 :
590 : 1 : // TEST ### - Rational assign() ... valid test#4
591 : 1 : testData = {};
592 [ + ]: 1 : testData.method = () => {
593 : 1 : let r = new rational_addon.Rational();
594 : 1 : r.assign('6', 4);
595 : 1 :
596 : 1 : assert(r.getNumerator() === 3);
597 : 1 : assert(r.getDenominator() === 2);
598 : 1 :
599 : 1 : r = new rational_module.Rational();
600 : 1 : r.assign('6', 4);
601 : 1 :
602 : 1 : assert(r.getNumerator() === 3);
603 : 1 : assert(r.getDenominator() === 2);
604 : 1 : };
605 : 1 : testData.desc = 'Rational assign() ... valid test#4';
606 : 1 :
607 : 1 : testData.skip = false;
608 : 1 : suites.get(suiteDesc).push(testData);
609 : 1 :
610 : 1 : // TEST ### - Rational assign() ... valid test#5
611 : 1 : testData = {};
612 [ + ]: 1 : testData.method = () => {
613 : 1 : let r = new rational_addon.Rational();
614 : 1 : r.assign(6, '-4');
615 : 1 :
616 : 1 : assert(r.getNumerator() === -3);
617 : 1 : assert(r.getDenominator() === 2);
618 : 1 :
619 : 1 : r = new rational_module.Rational();
620 : 1 : r.assign(6, '-4');
621 : 1 :
622 : 1 : assert(r.getNumerator() === -3);
623 : 1 : assert(r.getDenominator() === 2);
624 : 1 : };
625 : 1 : testData.desc = 'Rational assign() ... valid test#5';
626 : 1 :
627 : 1 : testData.skip = false;
628 : 1 : suites.get(suiteDesc).push(testData);
629 : 1 :
630 : 1 : // TEST ### - Rational assign() ... invalid test#1
631 : 1 : testData = {};
632 [ + ]: 1 : testData.method = () => {
633 : 1 : let r = new rational_addon.Rational();
634 : 1 : assert.throws(
635 [ + ]: 1 : () => {
636 : 1 : r.assign();
637 : 1 : },
638 [ + ]: 1 : (err) => {
639 : 1 : assert(err instanceof TypeError, `rational_addon.assign()`);
640 : 1 : assert.strictEqual(
641 : 1 : err.message, `Rational: invalid number of arguments`,
642 : 1 : `rational_addon.assign({})`
643 : 1 : );
644 : 1 : return true;
645 : 1 : }
646 : 1 : );
647 : 1 :
648 : 1 : r = new rational_module.Rational();
649 : 1 : assert.throws(
650 [ + ]: 1 : () => {
651 : 1 : r.assign();
652 : 1 : },
653 [ + ]: 1 : (err) => {
654 : 1 : assert(err instanceof TypeError, `rational_module.assign()`);
655 : 1 : assert.strictEqual(
656 : 1 : err.message, `Rational: invalid number of arguments`,
657 : 1 : `rational_module.assign()`
658 : 1 : );
659 : 1 : return true;
660 : 1 : }
661 : 1 : );
662 : 1 : };
663 : 1 : testData.desc = 'Rational assign() ... invalid test#1';
664 : 1 :
665 : 1 : testData.skip = false;
666 : 1 : suites.get(suiteDesc).push(testData);
667 : 1 :
668 : 1 : // TEST ### - Rational assign() ... invalid test#2
669 : 1 : testData = {};
670 [ + ]: 1 : testData.method = () => {
671 : 1 : let r = new rational_addon.Rational();
672 : 1 : assert.throws(
673 [ + ]: 1 : () => {
674 : 1 : r.assign({});
675 : 1 : },
676 [ + ]: 1 : (err) => {
677 : 1 : assert(err instanceof TypeError, `rational_addon.assign({})`);
678 : 1 : assert.strictEqual(
679 : 1 : err.message, `Rational: invalid argument`,
680 : 1 : `rational_addon.assign({})`
681 : 1 : );
682 : 1 : return true;
683 : 1 : }
684 : 1 : );
685 : 1 :
686 : 1 : r = new rational_module.Rational();
687 : 1 : assert.throws(
688 [ + ]: 1 : () => {
689 : 1 : r.assign({});
690 : 1 : },
691 [ + ]: 1 : (err) => {
692 : 1 : assert(err instanceof TypeError, `rational_module.assign({})`);
693 : 1 : assert.strictEqual(
694 : 1 : err.message, `Rational: invalid argument`,
695 : 1 : `rational_module.assign({})`
696 : 1 : );
697 : 1 : return true;
698 : 1 : }
699 : 1 : );
700 : 1 : };
701 : 1 : testData.desc = 'Rational assign() ... invalid test#2';
702 : 1 :
703 : 1 : testData.skip = false;
704 : 1 : suites.get(suiteDesc).push(testData);
705 : 1 :
706 : 1 : // TEST ### - Rational assign() ... invalid test#3
707 : 1 : testData = {};
708 [ + ]: 1 : testData.method = () => {
709 : 1 : let r = new rational_addon.Rational();
710 : 1 : assert.throws(
711 [ + ]: 1 : () => {
712 : 1 : r.assign(1, {});
713 : 1 : },
714 [ + ]: 1 : (err) => {
715 : 1 : assert(err instanceof TypeError, `rational_addon.assign(1, {})`);
716 : 1 : assert.strictEqual(
717 : 1 : err.message, `Rational: invalid argument`,
718 : 1 : `rational_addon.assign({})`
719 : 1 : );
720 : 1 : return true;
721 : 1 : }
722 : 1 : );
723 : 1 :
724 : 1 : r = new rational_module.Rational();
725 : 1 : assert.throws(
726 [ + ]: 1 : () => {
727 : 1 : r.assign(1, {});
728 : 1 : },
729 [ + ]: 1 : (err) => {
730 : 1 : assert(err instanceof TypeError, `rational_module.assign(1, {})`);
731 : 1 : assert.strictEqual(
732 : 1 : err.message, `Rational: invalid argument`,
733 : 1 : `rational_module.assign(1, {})`
734 : 1 : );
735 : 1 : return true;
736 : 1 : }
737 : 1 : );
738 : 1 : };
739 : 1 : testData.desc = 'Rational assign() ... invalid test#3';
740 : 1 :
741 : 1 : testData.skip = false;
742 : 1 : suites.get(suiteDesc).push(testData);
743 : 1 :
744 : 1 : // TEST ### - Rational assign() ... invalid test#4
745 : 1 : testData = {};
746 [ + ]: 1 : testData.method = () => {
747 : 1 : let r = new rational_addon.Rational();
748 : 1 : assert.throws(
749 [ + ]: 1 : () => {
750 : 1 : r.assign(1, NaN);
751 : 1 : },
752 [ + ]: 1 : (err) => {
753 : 1 : assert(err instanceof TypeError, `rational_addon.assign(1, NaN)`);
754 : 1 : assert.strictEqual(
755 : 1 : err.message, `Rational: invalid argument`,
756 : 1 : `rational_addon.assign(1, NaN)`
757 : 1 : );
758 : 1 : return true;
759 : 1 : }
760 : 1 : );
761 : 1 :
762 : 1 : r = new rational_module.Rational();
763 : 1 : assert.throws(
764 [ + ]: 1 : () => {
765 : 1 : r.assign(1, NaN);
766 : 1 : },
767 [ + ]: 1 : (err) => {
768 : 1 : assert(err instanceof TypeError, `rational_module.assign(1, NaN)`);
769 : 1 : assert.strictEqual(
770 : 1 : err.message, `Rational: invalid argument`,
771 : 1 : `rational_module.assign(1, NaN)`
772 : 1 : );
773 : 1 : return true;
774 : 1 : }
775 : 1 : );
776 : 1 : };
777 : 1 : testData.desc = 'Rational assign() ... invalid test#4';
778 : 1 :
779 : 1 : testData.skip = false;
780 : 1 : suites.get(suiteDesc).push(testData);
781 : 1 :
782 : 1 : // TEST ### - Rational assign() ... invalid test#5
783 : 1 : testData = {};
784 [ + ]: 1 : testData.method = () => {
785 : 1 : let r = new rational_addon.Rational();
786 : 1 : assert.throws(
787 [ + ]: 1 : () => {
788 : 1 : r.assign(1, 'xxx');
789 : 1 : },
790 [ + ]: 1 : (err) => {
791 : 1 : assert(err instanceof TypeError, `rational_addon.assign(1, 'xxx')`);
792 : 1 : assert.strictEqual(
793 : 1 : err.message, `Rational: invalid argument`,
794 : 1 : `rational_addon.assign(1, 'xxx')`
795 : 1 : );
796 : 1 : return true;
797 : 1 : }
798 : 1 : );
799 : 1 :
800 : 1 : r = new rational_module.Rational();
801 : 1 : assert.throws(
802 [ + ]: 1 : () => {
803 : 1 : r.assign(1, 'xxx');
804 : 1 : },
805 [ + ]: 1 : (err) => {
806 : 1 : assert(err instanceof TypeError, `rational_module.assign(1, 'xxx')`);
807 : 1 : assert.strictEqual(
808 : 1 : err.message, `Rational: invalid argument`,
809 : 1 : `rational_module.assign(1, 'xxx')`
810 : 1 : );
811 : 1 : return true;
812 : 1 : }
813 : 1 : );
814 : 1 : };
815 : 1 : testData.desc = 'Rational assign() ... invalid test#5';
816 : 1 :
817 : 1 : testData.skip = false;
818 : 1 : suites.get(suiteDesc).push(testData);
819 : 1 :
820 : 1 : // TEST ### - Rational assign() ... invalid test#6
821 : 1 : testData = {};
822 [ + ]: 1 : testData.method = () => {
823 : 1 : let r = new rational_addon.Rational();
824 : 1 : assert.throws(
825 [ + ]: 1 : () => {
826 : 1 : r.assign('1', 0);
827 : 1 : },
828 [ + ]: 1 : (err) => {
829 : 1 : assert(err instanceof TypeError, `rational_addon.assign('1', 0)`);
830 : 1 : assert.strictEqual(
831 : 1 : err.message, `Rational: bad rational, zero denominator`,
832 : 1 : `rational_addon.assign(1, 0)`
833 : 1 : );
834 : 1 : return true;
835 : 1 : }
836 : 1 : );
837 : 1 :
838 : 1 : r = new rational_module.Rational();
839 : 1 : assert.throws(
840 [ + ]: 1 : () => {
841 : 1 : r.assign('1', 0);
842 : 1 : },
843 [ + ]: 1 : (err) => {
844 : 1 : assert(err instanceof TypeError, `rational_module.assign('1', 0)`);
845 : 1 : assert.strictEqual(
846 : 1 : err.message, `Rational: bad rational, zero denominator`,
847 : 1 : `rational_module.assign('1', 0)`
848 : 1 : );
849 : 1 : return true;
850 : 1 : }
851 : 1 : );
852 : 1 : };
853 : 1 : testData.desc = 'Rational assign() ... invalid test#6';
854 : 1 :
855 : 1 : testData.skip = false;
856 : 1 : suites.get(suiteDesc).push(testData);
857 : 1 :
858 : 1 : // TEST ### - Rational assign() ... invalid test#7
859 : 1 : testData = {};
860 [ + ]: 1 : testData.method = () => {
861 : 1 : let r = new rational_addon.Rational();
862 : 1 : assert.throws(
863 [ + ]: 1 : () => {
864 : 1 : r.assign(1, 2, 3);
865 : 1 : },
866 [ + ]: 1 : (err) => {
867 : 1 : assert(err instanceof TypeError, `rational_addon.assign(1, 2, 3)`);
868 : 1 : assert.strictEqual(
869 : 1 : err.message, `Rational: invalid number of arguments`,
870 : 1 : `rational_addon.assign(1, 2, 3)`
871 : 1 : );
872 : 1 : return true;
873 : 1 : }
874 : 1 : );
875 : 1 :
876 : 1 : r = new rational_module.Rational();
877 : 1 : assert.throws(
878 [ + ]: 1 : () => {
879 : 1 : r.assign(1, 2, 3);
880 : 1 : },
881 [ + ]: 1 : (err) => {
882 : 1 : assert(err instanceof TypeError, `rational_module.assign(1, 2, 3)`);
883 : 1 : assert.strictEqual(
884 : 1 : err.message, `Rational: invalid number of arguments`,
885 : 1 : `rational_module.assign(1, 2, 3)`
886 : 1 : );
887 : 1 : return true;
888 : 1 : }
889 : 1 : );
890 : 1 : };
891 : 1 : testData.desc = 'Rational assign() ... invalid test#7';
892 : 1 :
893 : 1 : testData.skip = false;
894 : 1 : suites.get(suiteDesc).push(testData);
895 : 1 :
896 : 1 : // TEST SUITE #3 - Rational selfAdd() function
897 : 1 : suiteDesc = 'Rational selfAdd() function';
898 : 1 : suites.set(suiteDesc, []);
899 : 1 :
900 : 1 : // TEST ### - Rational selfAdd() ... valid test#1
901 : 1 : testData = {};
902 [ + ]: 1 : testData.method = () => {
903 : 1 : let r = new rational_addon.Rational(1, 2);
904 : 1 : let s = r.selfAdd(new rational_addon.Rational(2, 3));
905 : 1 :
906 : 1 : assert.strictEqual(r.getNumerator(), 7);
907 : 1 : assert.strictEqual(r.getDenominator(), 6);
908 : 1 : assert(r === s);
909 : 1 :
910 : 1 : r = new rational_module.Rational(1, 2);
911 : 1 : s = r.selfAdd(new rational_module.Rational(2, 3));
912 : 1 :
913 : 1 : assert.strictEqual(r.getNumerator(), 7);
914 : 1 : assert.strictEqual(r.getDenominator(), 6);
915 : 1 : assert(r === s);
916 : 1 : };
917 : 1 : testData.desc = 'Rational selfAdd() ... valid test#1';
918 : 1 :
919 : 1 : testData.skip = false;
920 : 1 : suites.get(suiteDesc).push(testData);
921 : 1 :
922 : 1 : // TEST ### - Rational selfAdd() ... valid test#2
923 : 1 : testData = {};
924 [ + ]: 1 : testData.method = () => {
925 : 1 : let r = new rational_addon.Rational(1, 2);
926 : 1 : let s = r.selfAdd(-2);
927 : 1 :
928 : 1 : assert.strictEqual(r.getNumerator(), -3);
929 : 1 : assert.strictEqual(r.getDenominator(), 2);
930 : 1 : assert(r === s);
931 : 1 :
932 : 1 : r = new rational_module.Rational(1, 2);
933 : 1 : s = r.selfAdd(-2);
934 : 1 :
935 : 1 : assert.strictEqual(r.getNumerator(), -3);
936 : 1 : assert.strictEqual(r.getDenominator(), 2);
937 : 1 : assert(r === s);
938 : 1 : };
939 : 1 : testData.desc = 'Rational selfAdd() ... valid test#2';
940 : 1 :
941 : 1 : testData.skip = false;
942 : 1 : suites.get(suiteDesc).push(testData);
943 : 1 :
944 : 1 : // TEST ### - Rational selfAdd() ... valid test#3
945 : 1 : testData = {};
946 [ + ]: 1 : testData.method = () => {
947 : 1 : let r = new rational_addon.Rational(1, 2);
948 : 1 : let s = r.selfAdd('-2');
949 : 1 :
950 : 1 : assert.strictEqual(r.getNumerator(), -3);
951 : 1 : assert.strictEqual(r.getDenominator(), 2);
952 : 1 : assert(r === s);
953 : 1 :
954 : 1 : r = new rational_module.Rational(1, 2);
955 : 1 : s = r.selfAdd('-2');
956 : 1 :
957 : 1 : assert.strictEqual(r.getNumerator(), -3);
958 : 1 : assert.strictEqual(r.getDenominator(), 2);
959 : 1 : assert(r === s);
960 : 1 : };
961 : 1 : testData.desc = 'Rational selfAdd() ... valid test#3';
962 : 1 :
963 : 1 : testData.skip = false;
964 : 1 : suites.get(suiteDesc).push(testData);
965 : 1 :
966 : 1 : // TEST ### - Rational selfAdd() ... invalid test#1
967 : 1 : testData = {};
968 [ + ]: 1 : testData.method = () => {
969 : 1 : let r = new rational_addon.Rational();
970 : 1 : assert.throws(
971 [ + ]: 1 : () => {
972 : 1 : r.selfAdd();
973 : 1 : },
974 [ + ]: 1 : (err) => {
975 : 1 : assert(err instanceof TypeError, `rational_addon.selfAdd()`);
976 : 1 : assert.strictEqual(
977 : 1 : err.message, `Rational: invalid number of arguments`,
978 : 1 : `rational_addon.selfAdd()`
979 : 1 : );
980 : 1 : return true;
981 : 1 : }
982 : 1 : );
983 : 1 :
984 : 1 : r = new rational_module.Rational();
985 : 1 : assert.throws(
986 [ + ]: 1 : () => {
987 : 1 : r.selfAdd();
988 : 1 : },
989 [ + ]: 1 : (err) => {
990 : 1 : assert(err instanceof TypeError, `rational_module.selfAdd()`);
991 : 1 : assert.strictEqual(
992 : 1 : err.message, `Rational: invalid number of arguments`,
993 : 1 : `rational_module.selfAdd()`
994 : 1 : );
995 : 1 : return true;
996 : 1 : }
997 : 1 : );
998 : 1 : };
999 : 1 : testData.desc = 'Rational selfAdd() ... invalid test#1';
1000 : 1 :
1001 : 1 : testData.skip = false;
1002 : 1 : suites.get(suiteDesc).push(testData);
1003 : 1 :
1004 : 1 : // TEST ### - Rational selfAdd() ... invalid test#2
1005 : 1 : testData = {};
1006 [ + ]: 1 : testData.method = () => {
1007 : 1 : let r = new rational_addon.Rational();
1008 : 1 : assert.throws(
1009 [ + ]: 1 : () => {
1010 : 1 : r.selfAdd(1, 2, 3);
1011 : 1 : },
1012 [ + ]: 1 : (err) => {
1013 : 1 : assert(err instanceof TypeError, `rational_addon.selfAdd(1, 2, 3)`);
1014 : 1 : assert.strictEqual(
1015 : 1 : err.message, `Rational: invalid number of arguments`,
1016 : 1 : `rational_addon.selfAdd(1, 2, 3)`
1017 : 1 : );
1018 : 1 : return true;
1019 : 1 : }
1020 : 1 : );
1021 : 1 :
1022 : 1 : r = new rational_module.Rational();
1023 : 1 : assert.throws(
1024 [ + ]: 1 : () => {
1025 : 1 : r.selfAdd(1, 2, 3);
1026 : 1 : },
1027 [ + ]: 1 : (err) => {
1028 : 1 : assert(err instanceof TypeError, `rational_module.selfAdd(1, 2, 3)`);
1029 : 1 : assert.strictEqual(
1030 : 1 : err.message, `Rational: invalid number of arguments`,
1031 : 1 : `rational_module.selfAdd(1, 2, 3)`
1032 : 1 : );
1033 : 1 : return true;
1034 : 1 : }
1035 : 1 : );
1036 : 1 : };
1037 : 1 : testData.desc = 'Rational selfAdd() ... invalid test#2';
1038 : 1 :
1039 : 1 : testData.skip = false;
1040 : 1 : suites.get(suiteDesc).push(testData);
1041 : 1 :
1042 : 1 : // TEST ### - Rational selfAdd() ... invalid test#3
1043 : 1 : testData = {};
1044 [ + ]: 1 : testData.method = () => {
1045 : 1 : let r = new rational_addon.Rational();
1046 : 1 : assert.throws(
1047 [ + ]: 1 : () => {
1048 : 1 : r.selfAdd({});
1049 : 1 : },
1050 [ + ]: 1 : (err) => {
1051 : 1 : assert(err instanceof TypeError, `rational_addon.selfAdd({})`);
1052 : 1 : assert.strictEqual(
1053 : 1 : err.message, `Rational: invalid argument`,
1054 : 1 : `rational_addon.selfAdd({})`
1055 : 1 : );
1056 : 1 : return true;
1057 : 1 : }
1058 : 1 : );
1059 : 1 :
1060 : 1 : r = new rational_module.Rational();
1061 : 1 : assert.throws(
1062 [ + ]: 1 : () => {
1063 : 1 : r.selfAdd({});
1064 : 1 : },
1065 [ + ]: 1 : (err) => {
1066 : 1 : assert(err instanceof TypeError, `rational_module.selfAdd({})`);
1067 : 1 : assert.strictEqual(
1068 : 1 : err.message, `Rational: invalid argument`,
1069 : 1 : `rational_module.selfAdd({})`
1070 : 1 : );
1071 : 1 : return true;
1072 : 1 : }
1073 : 1 : );
1074 : 1 : };
1075 : 1 : testData.desc = 'Rational selfAdd() ... invalid test#3';
1076 : 1 :
1077 : 1 : testData.skip = false;
1078 : 1 : suites.get(suiteDesc).push(testData);
1079 : 1 :
1080 : 1 : // TEST ### - Rational selfAdd() ... invalid test#4
1081 : 1 : testData = {};
1082 [ + ]: 1 : testData.method = () => {
1083 : 1 : let r = new rational_addon.Rational();
1084 : 1 : assert.throws(
1085 [ + ]: 1 : () => {
1086 : 1 : r.selfAdd(NaN);
1087 : 1 : },
1088 [ + ]: 1 : (err) => {
1089 : 1 : assert(err instanceof TypeError, `rational_addon.selfAdd(NaN)`);
1090 : 1 : assert.strictEqual(
1091 : 1 : err.message, `Rational: invalid argument`,
1092 : 1 : `rational_addon.selfAdd(NaN)`
1093 : 1 : );
1094 : 1 : return true;
1095 : 1 : }
1096 : 1 : );
1097 : 1 :
1098 : 1 : r = new rational_module.Rational();
1099 : 1 : assert.throws(
1100 [ + ]: 1 : () => {
1101 : 1 : r.selfAdd(NaN);
1102 : 1 : },
1103 [ + ]: 1 : (err) => {
1104 : 1 : assert(err instanceof TypeError, `rational_module.selfAdd(NaN)`);
1105 : 1 : assert.strictEqual(
1106 : 1 : err.message, `Rational: invalid argument`,
1107 : 1 : `rational_module.selfAdd(NaN)`
1108 : 1 : );
1109 : 1 : return true;
1110 : 1 : }
1111 : 1 : );
1112 : 1 : };
1113 : 1 : testData.desc = 'Rational selfAdd() ... invalid test#4';
1114 : 1 :
1115 : 1 : testData.skip = false;
1116 : 1 : suites.get(suiteDesc).push(testData);
1117 : 1 :
1118 : 1 : // TEST ### - Rational selfAdd() ... invalid test#5
1119 : 1 : testData = {};
1120 [ + ]: 1 : testData.method = () => {
1121 : 1 : let r = new rational_addon.Rational();
1122 : 1 : assert.throws(
1123 [ + ]: 1 : () => {
1124 : 1 : r.selfAdd(1n);
1125 : 1 : },
1126 [ + ]: 1 : (err) => {
1127 : 1 : assert(err instanceof TypeError, `rational_addon.selfAdd(1n)`);
1128 : 1 : assert.strictEqual(
1129 : 1 : err.message, `Rational: BigInt type is not accepted`,
1130 : 1 : `rational_addon.selfAdd(1n)`
1131 : 1 : );
1132 : 1 : return true;
1133 : 1 : }
1134 : 1 : );
1135 : 1 :
1136 : 1 : r = new rational_module.Rational();
1137 : 1 : assert.throws(
1138 [ + ]: 1 : () => {
1139 : 1 : r.selfAdd(1n);
1140 : 1 : },
1141 [ + ]: 1 : (err) => {
1142 : 1 : assert(err instanceof TypeError, `rational_module.selfAdd(1n)`);
1143 : 1 : assert.strictEqual(
1144 : 1 : err.message, `Rational: BigInt type is not accepted`,
1145 : 1 : `rational_module.selfAdd(1n)`
1146 : 1 : );
1147 : 1 : return true;
1148 : 1 : }
1149 : 1 : );
1150 : 1 : };
1151 : 1 : testData.desc = 'Rational selfAdd() ... invalid test#5';
1152 : 1 :
1153 : 1 : testData.skip = false;
1154 : 1 : suites.get(suiteDesc).push(testData);
1155 : 1 :
1156 : 1 : // TEST ### - Rational selfAdd() ... invalid test#6
1157 : 1 : testData = {};
1158 [ + ]: 1 : testData.method = () => {
1159 : 1 : let r = new rational_addon.Rational();
1160 : 1 : assert.throws(
1161 [ + ]: 1 : () => {
1162 : 1 : r.selfAdd('xxx');
1163 : 1 : },
1164 [ + ]: 1 : (err) => {
1165 : 1 : assert(err instanceof TypeError, `rational_addon.selfAdd('xxx')`);
1166 : 1 : assert.strictEqual(
1167 : 1 : err.message, `Rational: invalid argument`,
1168 : 1 : `rational_addon.selfAdd('xxx')`
1169 : 1 : );
1170 : 1 : return true;
1171 : 1 : }
1172 : 1 : );
1173 : 1 :
1174 : 1 : r = new rational_module.Rational();
1175 : 1 : assert.throws(
1176 [ + ]: 1 : () => {
1177 : 1 : r.selfAdd('xxx');
1178 : 1 : },
1179 [ + ]: 1 : (err) => {
1180 : 1 : assert(err instanceof TypeError, `rational_module.selfAdd('xxx')`);
1181 : 1 : assert.strictEqual(
1182 : 1 : err.message, `Rational: invalid argument`,
1183 : 1 : `rational_module.selfAdd('xxx')`
1184 : 1 : );
1185 : 1 : return true;
1186 : 1 : }
1187 : 1 : );
1188 : 1 : };
1189 : 1 : testData.desc = 'Rational selfAdd() ... invalid test#6';
1190 : 1 :
1191 : 1 : testData.skip = false;
1192 : 1 : suites.get(suiteDesc).push(testData);
1193 : 1 :
1194 : 1 : // TEST SUITE #4 - Rational selfSub() function
1195 : 1 : suiteDesc = 'Rational selfSub() function';
1196 : 1 : suites.set(suiteDesc, []);
1197 : 1 :
1198 : 1 : // TEST ### - Rational selfSub() ... valid test#1
1199 : 1 : testData = {};
1200 [ + ]: 1 : testData.method = () => {
1201 : 1 : let r = new rational_addon.Rational(3, 2);
1202 : 1 : let s = r.selfSub(new rational_addon.Rational(1, 2));
1203 : 1 :
1204 : 1 : assert.strictEqual(r.getNumerator(), 1);
1205 : 1 : assert.strictEqual(r.getDenominator(), 1);
1206 : 1 : assert(r === s);
1207 : 1 :
1208 : 1 : r = new rational_module.Rational(3, 2);
1209 : 1 : s = r.selfSub(new rational_module.Rational(1, 2));
1210 : 1 :
1211 : 1 : assert.strictEqual(r.getNumerator(), 1);
1212 : 1 : assert.strictEqual(r.getDenominator(), 1);
1213 : 1 : assert(r === s);
1214 : 1 : };
1215 : 1 : testData.desc = 'Rational selfSub() ... valid test#1';
1216 : 1 :
1217 : 1 : testData.skip = false;
1218 : 1 : suites.get(suiteDesc).push(testData);
1219 : 1 :
1220 : 1 : // TEST ### - Rational selfSub() ... valid test#2
1221 : 1 : testData = {};
1222 [ + ]: 1 : testData.method = () => {
1223 : 1 : let r = new rational_addon.Rational(3, 2);
1224 : 1 : let s = r.selfSub('1');
1225 : 1 :
1226 : 1 : assert.strictEqual(r.getNumerator(), 1);
1227 : 1 : assert.strictEqual(r.getDenominator(), 2);
1228 : 1 : assert(r === s);
1229 : 1 :
1230 : 1 : r = new rational_module.Rational(3, 2);
1231 : 1 : s = r.selfSub('1');
1232 : 1 :
1233 : 1 : assert.strictEqual(r.getNumerator(), 1);
1234 : 1 : assert.strictEqual(r.getDenominator(), 2);
1235 : 1 : assert(r === s);
1236 : 1 : };
1237 : 1 : testData.desc = 'Rational selfSub() ... valid test#2';
1238 : 1 :
1239 : 1 : testData.skip = false;
1240 : 1 : suites.get(suiteDesc).push(testData);
1241 : 1 :
1242 : 1 : // TEST ### - Rational selfSub() ... valid test#3
1243 : 1 : testData = {};
1244 [ + ]: 1 : testData.method = () => {
1245 : 1 : let r = new rational_addon.Rational(3, 2);
1246 : 1 : let s = r.selfSub('-1');
1247 : 1 :
1248 : 1 : assert.strictEqual(r.getNumerator(), 5);
1249 : 1 : assert.strictEqual(r.getDenominator(), 2);
1250 : 1 : assert(r === s);
1251 : 1 :
1252 : 1 : r = new rational_module.Rational(3, 2);
1253 : 1 : s = r.selfSub('-1');
1254 : 1 :
1255 : 1 : assert.strictEqual(r.getNumerator(), 5);
1256 : 1 : assert.strictEqual(r.getDenominator(), 2);
1257 : 1 : assert(r === s);
1258 : 1 : };
1259 : 1 : testData.desc = 'Rational selfSub() ... valid test#3';
1260 : 1 :
1261 : 1 : testData.skip = false;
1262 : 1 : suites.get(suiteDesc).push(testData);
1263 : 1 :
1264 : 1 : // TEST ### - Rational selfSub() ... invalid test#1
1265 : 1 : testData = {};
1266 [ + ]: 1 : testData.method = () => {
1267 : 1 : let r = new rational_addon.Rational();
1268 : 1 : assert.throws(
1269 [ + ]: 1 : () => {
1270 : 1 : r.selfSub();
1271 : 1 : },
1272 [ + ]: 1 : (err) => {
1273 : 1 : assert(err instanceof TypeError, `rational_addon.selfSub()`);
1274 : 1 : assert.strictEqual(
1275 : 1 : err.message, `Rational: invalid number of arguments`,
1276 : 1 : `rational_addon.selfSub()`
1277 : 1 : );
1278 : 1 : return true;
1279 : 1 : }
1280 : 1 : );
1281 : 1 :
1282 : 1 : r = new rational_module.Rational();
1283 : 1 : assert.throws(
1284 [ + ]: 1 : () => {
1285 : 1 : r.selfSub();
1286 : 1 : },
1287 [ + ]: 1 : (err) => {
1288 : 1 : assert(err instanceof TypeError, `rational_module.selfSub()`);
1289 : 1 : assert.strictEqual(
1290 : 1 : err.message, `Rational: invalid number of arguments`,
1291 : 1 : `rational_module.selfSub()`
1292 : 1 : );
1293 : 1 : return true;
1294 : 1 : }
1295 : 1 : );
1296 : 1 : };
1297 : 1 : testData.desc = 'Rational selfSub() ... invalid test#1';
1298 : 1 :
1299 : 1 : testData.skip = false;
1300 : 1 : suites.get(suiteDesc).push(testData);
1301 : 1 :
1302 : 1 : // TEST ### - Rational selfSub() ... invalid test#2
1303 : 1 : testData = {};
1304 [ + ]: 1 : testData.method = () => {
1305 : 1 : let r = new rational_addon.Rational();
1306 : 1 : assert.throws(
1307 [ + ]: 1 : () => {
1308 : 1 : r.selfSub(1, 2, 3);
1309 : 1 : },
1310 [ + ]: 1 : (err) => {
1311 : 1 : assert(err instanceof TypeError, `rational_addon.selfSub(1, 2, 3)`);
1312 : 1 : assert.strictEqual(
1313 : 1 : err.message, `Rational: invalid number of arguments`,
1314 : 1 : `rational_addon.selfSub(1, 2, 3)`
1315 : 1 : );
1316 : 1 : return true;
1317 : 1 : }
1318 : 1 : );
1319 : 1 :
1320 : 1 : r = new rational_module.Rational();
1321 : 1 : assert.throws(
1322 [ + ]: 1 : () => {
1323 : 1 : r.selfSub(1, 2, 3);
1324 : 1 : },
1325 [ + ]: 1 : (err) => {
1326 : 1 : assert(err instanceof TypeError, `rational_module.selfSub(1, 2, 3)`);
1327 : 1 : assert.strictEqual(
1328 : 1 : err.message, `Rational: invalid number of arguments`,
1329 : 1 : `rational_module.selfSub(1, 2, 3)`
1330 : 1 : );
1331 : 1 : return true;
1332 : 1 : }
1333 : 1 : );
1334 : 1 : };
1335 : 1 : testData.desc = 'Rational selfSub() ... invalid test#2';
1336 : 1 :
1337 : 1 : testData.skip = false;
1338 : 1 : suites.get(suiteDesc).push(testData);
1339 : 1 :
1340 : 1 : // TEST ### - Rational selfSub() ... invalid test#3
1341 : 1 : testData = {};
1342 [ + ]: 1 : testData.method = () => {
1343 : 1 : let r = new rational_addon.Rational();
1344 : 1 : assert.throws(
1345 [ + ]: 1 : () => {
1346 : 1 : r.selfSub({});
1347 : 1 : },
1348 [ + ]: 1 : (err) => {
1349 : 1 : assert(err instanceof TypeError, `rational_addon.selfSub({})`);
1350 : 1 : assert.strictEqual(
1351 : 1 : err.message, `Rational: invalid argument`,
1352 : 1 : `rational_addon.selfSub({})`
1353 : 1 : );
1354 : 1 : return true;
1355 : 1 : }
1356 : 1 : );
1357 : 1 :
1358 : 1 : r = new rational_module.Rational();
1359 : 1 : assert.throws(
1360 [ + ]: 1 : () => {
1361 : 1 : r.selfSub({});
1362 : 1 : },
1363 [ + ]: 1 : (err) => {
1364 : 1 : assert(err instanceof TypeError, `rational_module.selfSub({})`);
1365 : 1 : assert.strictEqual(
1366 : 1 : err.message, `Rational: invalid argument`,
1367 : 1 : `rational_module.selfSub({})`
1368 : 1 : );
1369 : 1 : return true;
1370 : 1 : }
1371 : 1 : );
1372 : 1 : };
1373 : 1 : testData.desc = 'Rational selfSub() ... invalid test#3';
1374 : 1 :
1375 : 1 : testData.skip = false;
1376 : 1 : suites.get(suiteDesc).push(testData);
1377 : 1 :
1378 : 1 : // TEST ### - Rational selfSub() ... invalid test#4
1379 : 1 : testData = {};
1380 [ + ]: 1 : testData.method = () => {
1381 : 1 : let r = new rational_addon.Rational();
1382 : 1 : assert.throws(
1383 [ + ]: 1 : () => {
1384 : 1 : r.selfSub(NaN);
1385 : 1 : },
1386 [ + ]: 1 : (err) => {
1387 : 1 : assert(err instanceof TypeError, `rational_addon.selfSub(NaN)`);
1388 : 1 : assert.strictEqual(
1389 : 1 : err.message, `Rational: invalid argument`,
1390 : 1 : `rational_addon.selfSub(NaN)`
1391 : 1 : );
1392 : 1 : return true;
1393 : 1 : }
1394 : 1 : );
1395 : 1 :
1396 : 1 : r = new rational_module.Rational();
1397 : 1 : assert.throws(
1398 [ + ]: 1 : () => {
1399 : 1 : r.selfSub(NaN);
1400 : 1 : },
1401 [ + ]: 1 : (err) => {
1402 : 1 : assert(err instanceof TypeError, `rational_module.selfSub(NaN)`);
1403 : 1 : assert.strictEqual(
1404 : 1 : err.message, `Rational: invalid argument`,
1405 : 1 : `rational_module.selfSub(NaN)`
1406 : 1 : );
1407 : 1 : return true;
1408 : 1 : }
1409 : 1 : );
1410 : 1 : };
1411 : 1 : testData.desc = 'Rational selfSub() ... invalid test#4';
1412 : 1 :
1413 : 1 : testData.skip = false;
1414 : 1 : suites.get(suiteDesc).push(testData);
1415 : 1 :
1416 : 1 : // TEST ### - Rational selfSub() ... invalid test#5
1417 : 1 : testData = {};
1418 [ + ]: 1 : testData.method = () => {
1419 : 1 : let r = new rational_addon.Rational();
1420 : 1 : assert.throws(
1421 [ + ]: 1 : () => {
1422 : 1 : r.selfSub(1n);
1423 : 1 : },
1424 [ + ]: 1 : (err) => {
1425 : 1 : assert(err instanceof TypeError, `rational_addon.selfSub(1n)`);
1426 : 1 : assert.strictEqual(
1427 : 1 : err.message, `Rational: BigInt type is not accepted`,
1428 : 1 : `rational_addon.selfSub(1n)`
1429 : 1 : );
1430 : 1 : return true;
1431 : 1 : }
1432 : 1 : );
1433 : 1 :
1434 : 1 : r = new rational_module.Rational();
1435 : 1 : assert.throws(
1436 [ + ]: 1 : () => {
1437 : 1 : r.selfSub(1n);
1438 : 1 : },
1439 [ + ]: 1 : (err) => {
1440 : 1 : assert(err instanceof TypeError, `rational_module.selfSub(1n)`);
1441 : 1 : assert.strictEqual(
1442 : 1 : err.message, `Rational: BigInt type is not accepted`,
1443 : 1 : `rational_module.selfSub(1n)`
1444 : 1 : );
1445 : 1 : return true;
1446 : 1 : }
1447 : 1 : );
1448 : 1 : };
1449 : 1 : testData.desc = 'Rational selfSub() ... invalid test#5';
1450 : 1 :
1451 : 1 : testData.skip = false;
1452 : 1 : suites.get(suiteDesc).push(testData);
1453 : 1 :
1454 : 1 : // TEST ### - Rational selfSub() ... invalid test#6
1455 : 1 : testData = {};
1456 [ + ]: 1 : testData.method = () => {
1457 : 1 : let r = new rational_addon.Rational();
1458 : 1 : assert.throws(
1459 [ + ]: 1 : () => {
1460 : 1 : r.selfSub('xxx');
1461 : 1 : },
1462 [ + ]: 1 : (err) => {
1463 : 1 : assert(err instanceof TypeError, `rational_addon.selfSub('xxx')`);
1464 : 1 : assert.strictEqual(
1465 : 1 : err.message, `Rational: invalid argument`,
1466 : 1 : `rational_addon.selfSub('xxx')`
1467 : 1 : );
1468 : 1 : return true;
1469 : 1 : }
1470 : 1 : );
1471 : 1 :
1472 : 1 : r = new rational_module.Rational();
1473 : 1 : assert.throws(
1474 [ + ]: 1 : () => {
1475 : 1 : r.selfSub('xxx');
1476 : 1 : },
1477 [ + ]: 1 : (err) => {
1478 : 1 : assert(err instanceof TypeError, `rational_module.selfSub('xxx')`);
1479 : 1 : assert.strictEqual(
1480 : 1 : err.message, `Rational: invalid argument`,
1481 : 1 : `rational_module.selfSub('xxx')`
1482 : 1 : );
1483 : 1 : return true;
1484 : 1 : }
1485 : 1 : );
1486 : 1 : };
1487 : 1 : testData.desc = 'Rational selfSub() ... invalid test#6';
1488 : 1 :
1489 : 1 : testData.skip = false;
1490 : 1 : suites.get(suiteDesc).push(testData);
1491 : 1 :
1492 : 1 : // TEST SUITE #5 - Rational selfMul() function
1493 : 1 : suiteDesc = 'Rational selfMul() function';
1494 : 1 : suites.set(suiteDesc, []);
1495 : 1 :
1496 : 1 : // TEST ### - Rational selfMul() ... valid test#1
1497 : 1 : testData = {};
1498 [ + ]: 1 : testData.method = () => {
1499 : 1 : let r = new rational_addon.Rational(3, 2);
1500 : 1 : let s = r.selfMul(new rational_addon.Rational(1, 2));
1501 : 1 :
1502 : 1 : assert.strictEqual(r.getNumerator(), 3);
1503 : 1 : assert.strictEqual(r.getDenominator(), 4);
1504 : 1 : assert(r === s);
1505 : 1 :
1506 : 1 : r = new rational_module.Rational(3, 2);
1507 : 1 : s = r.selfMul(new rational_module.Rational(1, 2));
1508 : 1 :
1509 : 1 : assert.strictEqual(r.getNumerator(), 3);
1510 : 1 : assert.strictEqual(r.getDenominator(), 4);
1511 : 1 : assert(r === s);
1512 : 1 : };
1513 : 1 : testData.desc = 'Rational selfMul() ... valid test#1';
1514 : 1 :
1515 : 1 : testData.skip = false;
1516 : 1 : suites.get(suiteDesc).push(testData);
1517 : 1 :
1518 : 1 : // TEST ### - Rational selfMul() ... valid test#2
1519 : 1 : testData = {};
1520 [ + ]: 1 : testData.method = () => {
1521 : 1 : let r = new rational_addon.Rational(3, 2);
1522 : 1 : let s = r.selfMul('1');
1523 : 1 :
1524 : 1 : assert.strictEqual(r.getNumerator(), 3);
1525 : 1 : assert.strictEqual(r.getDenominator(), 2);
1526 : 1 : assert(r === s);
1527 : 1 :
1528 : 1 : r = new rational_module.Rational(3, 2);
1529 : 1 : s = r.selfMul('1');
1530 : 1 :
1531 : 1 : assert.strictEqual(r.getNumerator(), 3);
1532 : 1 : assert.strictEqual(r.getDenominator(), 2);
1533 : 1 : assert(r === s);
1534 : 1 : };
1535 : 1 : testData.desc = 'Rational selfMul() ... valid test#2';
1536 : 1 :
1537 : 1 : testData.skip = false;
1538 : 1 : suites.get(suiteDesc).push(testData);
1539 : 1 :
1540 : 1 : // TEST ### - Rational selfMul() ... valid test#3
1541 : 1 : testData = {};
1542 [ + ]: 1 : testData.method = () => {
1543 : 1 : let r = new rational_addon.Rational(3, 2);
1544 : 1 : let s = r.selfMul('-1');
1545 : 1 :
1546 : 1 : assert.strictEqual(r.getNumerator(), -3);
1547 : 1 : assert.strictEqual(r.getDenominator(), 2);
1548 : 1 : assert(r === s);
1549 : 1 :
1550 : 1 : r = new rational_module.Rational(3, 2);
1551 : 1 : s = r.selfMul('-1');
1552 : 1 :
1553 : 1 : assert.strictEqual(r.getNumerator(), -3);
1554 : 1 : assert.strictEqual(r.getDenominator(), 2);
1555 : 1 : assert(r === s);
1556 : 1 : };
1557 : 1 : testData.desc = 'Rational selfMul() ... valid test#3';
1558 : 1 :
1559 : 1 : testData.skip = false;
1560 : 1 : suites.get(suiteDesc).push(testData);
1561 : 1 :
1562 : 1 : // TEST ### - Rational selfMul() ... invalid test#1
1563 : 1 : testData = {};
1564 [ + ]: 1 : testData.method = () => {
1565 : 1 : let r = new rational_addon.Rational();
1566 : 1 : assert.throws(
1567 [ + ]: 1 : () => {
1568 : 1 : r.selfMul();
1569 : 1 : },
1570 [ + ]: 1 : (err) => {
1571 : 1 : assert(err instanceof TypeError, `rational_addon.selfMul()`);
1572 : 1 : assert.strictEqual(
1573 : 1 : err.message, `Rational: invalid number of arguments`,
1574 : 1 : `rational_addon.selfMul()`
1575 : 1 : );
1576 : 1 : return true;
1577 : 1 : }
1578 : 1 : );
1579 : 1 :
1580 : 1 : r = new rational_module.Rational();
1581 : 1 : assert.throws(
1582 [ + ]: 1 : () => {
1583 : 1 : r.selfMul();
1584 : 1 : },
1585 [ + ]: 1 : (err) => {
1586 : 1 : assert(err instanceof TypeError, `rational_module.selfMul()`);
1587 : 1 : assert.strictEqual(
1588 : 1 : err.message, `Rational: invalid number of arguments`,
1589 : 1 : `rational_module.selfMul()`
1590 : 1 : );
1591 : 1 : return true;
1592 : 1 : }
1593 : 1 : );
1594 : 1 : };
1595 : 1 : testData.desc = 'Rational selfMul() ... invalid test#1';
1596 : 1 :
1597 : 1 : testData.skip = false;
1598 : 1 : suites.get(suiteDesc).push(testData);
1599 : 1 :
1600 : 1 : // TEST ### - Rational selfMul() ... invalid test#2
1601 : 1 : testData = {};
1602 [ + ]: 1 : testData.method = () => {
1603 : 1 : let r = new rational_addon.Rational();
1604 : 1 : assert.throws(
1605 [ + ]: 1 : () => {
1606 : 1 : r.selfMul(1, 2, 3);
1607 : 1 : },
1608 [ + ]: 1 : (err) => {
1609 : 1 : assert(err instanceof TypeError, `rational_addon.selfMul(1, 2, 3)`);
1610 : 1 : assert.strictEqual(
1611 : 1 : err.message, `Rational: invalid number of arguments`,
1612 : 1 : `rational_addon.selfMul(1, 2, 3)`
1613 : 1 : );
1614 : 1 : return true;
1615 : 1 : }
1616 : 1 : );
1617 : 1 :
1618 : 1 : r = new rational_module.Rational();
1619 : 1 : assert.throws(
1620 [ + ]: 1 : () => {
1621 : 1 : r.selfMul(1, 2, 3);
1622 : 1 : },
1623 [ + ]: 1 : (err) => {
1624 : 1 : assert(err instanceof TypeError, `rational_module.selfMul(1, 2, 3)`);
1625 : 1 : assert.strictEqual(
1626 : 1 : err.message, `Rational: invalid number of arguments`,
1627 : 1 : `rational_module.selfMul(1, 2, 3)`
1628 : 1 : );
1629 : 1 : return true;
1630 : 1 : }
1631 : 1 : );
1632 : 1 : };
1633 : 1 : testData.desc = 'Rational selfMul() ... invalid test#2';
1634 : 1 :
1635 : 1 : testData.skip = false;
1636 : 1 : suites.get(suiteDesc).push(testData);
1637 : 1 :
1638 : 1 : // TEST ### - Rational selfMul() ... invalid test#3
1639 : 1 : testData = {};
1640 [ + ]: 1 : testData.method = () => {
1641 : 1 : let r = new rational_addon.Rational();
1642 : 1 : assert.throws(
1643 [ + ]: 1 : () => {
1644 : 1 : r.selfMul({});
1645 : 1 : },
1646 [ + ]: 1 : (err) => {
1647 : 1 : assert(err instanceof TypeError, `rational_addon.selfMul({})`);
1648 : 1 : assert.strictEqual(
1649 : 1 : err.message, `Rational: invalid argument`,
1650 : 1 : `rational_addon.selfMul({})`
1651 : 1 : );
1652 : 1 : return true;
1653 : 1 : }
1654 : 1 : );
1655 : 1 :
1656 : 1 : r = new rational_module.Rational();
1657 : 1 : assert.throws(
1658 [ + ]: 1 : () => {
1659 : 1 : r.selfMul({});
1660 : 1 : },
1661 [ + ]: 1 : (err) => {
1662 : 1 : assert(err instanceof TypeError, `rational_module.selfMul({})`);
1663 : 1 : assert.strictEqual(
1664 : 1 : err.message, `Rational: invalid argument`,
1665 : 1 : `rational_module.selfMul({})`
1666 : 1 : );
1667 : 1 : return true;
1668 : 1 : }
1669 : 1 : );
1670 : 1 : };
1671 : 1 : testData.desc = 'Rational selfMul() ... invalid test#3';
1672 : 1 :
1673 : 1 : testData.skip = false;
1674 : 1 : suites.get(suiteDesc).push(testData);
1675 : 1 :
1676 : 1 : // TEST ### - Rational selfMul() ... invalid test#4
1677 : 1 : testData = {};
1678 [ + ]: 1 : testData.method = () => {
1679 : 1 : let r = new rational_addon.Rational();
1680 : 1 : assert.throws(
1681 [ + ]: 1 : () => {
1682 : 1 : r.selfMul(NaN);
1683 : 1 : },
1684 [ + ]: 1 : (err) => {
1685 : 1 : assert(err instanceof TypeError, `rational_addon.selfMul(NaN)`);
1686 : 1 : assert.strictEqual(
1687 : 1 : err.message, `Rational: invalid argument`,
1688 : 1 : `rational_addon.selfMul(NaN)`
1689 : 1 : );
1690 : 1 : return true;
1691 : 1 : }
1692 : 1 : );
1693 : 1 :
1694 : 1 : r = new rational_module.Rational();
1695 : 1 : assert.throws(
1696 [ + ]: 1 : () => {
1697 : 1 : r.selfMul(NaN);
1698 : 1 : },
1699 [ + ]: 1 : (err) => {
1700 : 1 : assert(err instanceof TypeError, `rational_module.selfMul(NaN)`);
1701 : 1 : assert.strictEqual(
1702 : 1 : err.message, `Rational: invalid argument`,
1703 : 1 : `rational_module.selfMul(NaN)`
1704 : 1 : );
1705 : 1 : return true;
1706 : 1 : }
1707 : 1 : );
1708 : 1 : };
1709 : 1 : testData.desc = 'Rational selfMul() ... invalid test#4';
1710 : 1 :
1711 : 1 : testData.skip = false;
1712 : 1 : suites.get(suiteDesc).push(testData);
1713 : 1 :
1714 : 1 : // TEST ### - Rational selfMul() ... invalid test#5
1715 : 1 : testData = {};
1716 [ + ]: 1 : testData.method = () => {
1717 : 1 : let r = new rational_addon.Rational();
1718 : 1 : assert.throws(
1719 [ + ]: 1 : () => {
1720 : 1 : r.selfMul(1n);
1721 : 1 : },
1722 [ + ]: 1 : (err) => {
1723 : 1 : assert(err instanceof TypeError, `rational_addon.selfMul(1n)`);
1724 : 1 : assert.strictEqual(
1725 : 1 : err.message, `Rational: BigInt type is not accepted`,
1726 : 1 : `rational_addon.selfMul(1n)`
1727 : 1 : );
1728 : 1 : return true;
1729 : 1 : }
1730 : 1 : );
1731 : 1 :
1732 : 1 : r = new rational_module.Rational();
1733 : 1 : assert.throws(
1734 [ + ]: 1 : () => {
1735 : 1 : r.selfMul(1n);
1736 : 1 : },
1737 [ + ]: 1 : (err) => {
1738 : 1 : assert(err instanceof TypeError, `rational_module.selfMul(1n)`);
1739 : 1 : assert.strictEqual(
1740 : 1 : err.message, `Rational: BigInt type is not accepted`,
1741 : 1 : `rational_module.selfMul(1n)`
1742 : 1 : );
1743 : 1 : return true;
1744 : 1 : }
1745 : 1 : );
1746 : 1 : };
1747 : 1 : testData.desc = 'Rational selfMul() ... invalid test#5';
1748 : 1 :
1749 : 1 : testData.skip = false;
1750 : 1 : suites.get(suiteDesc).push(testData);
1751 : 1 :
1752 : 1 : // TEST ### - Rational selfMul() ... invalid test#6
1753 : 1 : testData = {};
1754 [ + ]: 1 : testData.method = () => {
1755 : 1 : let r = new rational_addon.Rational();
1756 : 1 : assert.throws(
1757 [ + ]: 1 : () => {
1758 : 1 : r.selfMul('xxx');
1759 : 1 : },
1760 [ + ]: 1 : (err) => {
1761 : 1 : assert(err instanceof TypeError, `rational_addon.selfMul('xxx')`);
1762 : 1 : assert.strictEqual(
1763 : 1 : err.message, `Rational: invalid argument`,
1764 : 1 : `rational_addon.selfMul('xxx')`
1765 : 1 : );
1766 : 1 : return true;
1767 : 1 : }
1768 : 1 : );
1769 : 1 :
1770 : 1 : r = new rational_module.Rational();
1771 : 1 : assert.throws(
1772 [ + ]: 1 : () => {
1773 : 1 : r.selfMul('xxx');
1774 : 1 : },
1775 [ + ]: 1 : (err) => {
1776 : 1 : assert(err instanceof TypeError, `rational_module.selfMul('xxx')`);
1777 : 1 : assert.strictEqual(
1778 : 1 : err.message, `Rational: invalid argument`,
1779 : 1 : `rational_module.selfMul('xxx')`
1780 : 1 : );
1781 : 1 : return true;
1782 : 1 : }
1783 : 1 : );
1784 : 1 : };
1785 : 1 : testData.desc = 'Rational selfMul() ... invalid test#6';
1786 : 1 :
1787 : 1 : testData.skip = false;
1788 : 1 : suites.get(suiteDesc).push(testData);
1789 : 1 :
1790 : 1 : // TEST SUITE #6 - Rational selfDiv() function
1791 : 1 : suiteDesc = 'Rational selfDiv() function';
1792 : 1 : suites.set(suiteDesc, []);
1793 : 1 :
1794 : 1 : // TEST ### - Rational selfDiv() ... valid test#1
1795 : 1 : testData = {};
1796 [ + ]: 1 : testData.method = () => {
1797 : 1 : let r = new rational_addon.Rational(3, 2);
1798 : 1 : let s = r.selfDiv(new rational_addon.Rational(-1, 2));
1799 : 1 :
1800 : 1 : assert.strictEqual(r.getNumerator(), -3);
1801 : 1 : assert.strictEqual(r.getDenominator(), 1);
1802 : 1 : assert(r === s);
1803 : 1 :
1804 : 1 : r = new rational_module.Rational(3, 2);
1805 : 1 : s = r.selfDiv(new rational_module.Rational(-1, 2));
1806 : 1 :
1807 : 1 : assert.strictEqual(r.getNumerator(), -3);
1808 : 1 : assert.strictEqual(r.getDenominator(), 1);
1809 : 1 : assert(r === s);
1810 : 1 : };
1811 : 1 : testData.desc = 'Rational selfDiv() ... valid test#1';
1812 : 1 :
1813 : 1 : testData.skip = false;
1814 : 1 : suites.get(suiteDesc).push(testData);
1815 : 1 :
1816 : 1 : // TEST ### - Rational selfDiv() ... valid test#2
1817 : 1 : testData = {};
1818 [ + ]: 1 : testData.method = () => {
1819 : 1 : let r = new rational_addon.Rational(3, 2);
1820 : 1 : let s = r.selfDiv('1');
1821 : 1 :
1822 : 1 : assert.strictEqual(r.getNumerator(), 3);
1823 : 1 : assert.strictEqual(r.getDenominator(), 2);
1824 : 1 : assert(r === s);
1825 : 1 :
1826 : 1 : r = new rational_module.Rational(3, 2);
1827 : 1 : s = r.selfDiv('1');
1828 : 1 :
1829 : 1 : assert.strictEqual(r.getNumerator(), 3);
1830 : 1 : assert.strictEqual(r.getDenominator(), 2);
1831 : 1 : assert(r === s);
1832 : 1 : };
1833 : 1 : testData.desc = 'Rational selfDiv() ... valid test#2';
1834 : 1 :
1835 : 1 : testData.skip = false;
1836 : 1 : suites.get(suiteDesc).push(testData);
1837 : 1 :
1838 : 1 : // TEST ### - Rational selfDiv() ... valid test#3
1839 : 1 : testData = {};
1840 [ + ]: 1 : testData.method = () => {
1841 : 1 : let r = new rational_addon.Rational(3, 2);
1842 : 1 : let s = r.selfDiv('-1');
1843 : 1 :
1844 : 1 : assert.strictEqual(r.getNumerator(), -3);
1845 : 1 : assert.strictEqual(r.getDenominator(), 2);
1846 : 1 : assert(r === s);
1847 : 1 :
1848 : 1 : r = new rational_module.Rational(3, 2);
1849 : 1 : s = r.selfDiv('-1');
1850 : 1 :
1851 : 1 : assert.strictEqual(r.getNumerator(), -3);
1852 : 1 : assert.strictEqual(r.getDenominator(), 2);
1853 : 1 : assert(r === s);
1854 : 1 : };
1855 : 1 : testData.desc = 'Rational selfDiv() ... valid test#3';
1856 : 1 :
1857 : 1 : testData.skip = false;
1858 : 1 : suites.get(suiteDesc).push(testData);
1859 : 1 :
1860 : 1 : // TEST ### - Rational selfDiv() ... invalid test#1
1861 : 1 : testData = {};
1862 [ + ]: 1 : testData.method = () => {
1863 : 1 : let r = new rational_addon.Rational();
1864 : 1 : assert.throws(
1865 [ + ]: 1 : () => {
1866 : 1 : r.selfDiv();
1867 : 1 : },
1868 [ + ]: 1 : (err) => {
1869 : 1 : assert(err instanceof TypeError, `rational_addon.selfDiv()`);
1870 : 1 : assert.strictEqual(
1871 : 1 : err.message, `Rational: invalid number of arguments`,
1872 : 1 : `rational_addon.selfDiv()`
1873 : 1 : );
1874 : 1 : return true;
1875 : 1 : }
1876 : 1 : );
1877 : 1 :
1878 : 1 : r = new rational_module.Rational();
1879 : 1 : assert.throws(
1880 [ + ]: 1 : () => {
1881 : 1 : r.selfDiv();
1882 : 1 : },
1883 [ + ]: 1 : (err) => {
1884 : 1 : assert(err instanceof TypeError, `rational_module.selfDiv()`);
1885 : 1 : assert.strictEqual(
1886 : 1 : err.message, `Rational: invalid number of arguments`,
1887 : 1 : `rational_module.selfDiv()`
1888 : 1 : );
1889 : 1 : return true;
1890 : 1 : }
1891 : 1 : );
1892 : 1 : };
1893 : 1 : testData.desc = 'Rational selfDiv() ... invalid test#1';
1894 : 1 :
1895 : 1 : testData.skip = false;
1896 : 1 : suites.get(suiteDesc).push(testData);
1897 : 1 :
1898 : 1 : // TEST ### - Rational selfDiv() ... invalid test#2
1899 : 1 : testData = {};
1900 [ + ]: 1 : testData.method = () => {
1901 : 1 : let r = new rational_addon.Rational();
1902 : 1 : assert.throws(
1903 [ + ]: 1 : () => {
1904 : 1 : r.selfDiv(1, 2, 3);
1905 : 1 : },
1906 [ + ]: 1 : (err) => {
1907 : 1 : assert(err instanceof TypeError, `rational_addon.selfDiv(1, 2, 3)`);
1908 : 1 : assert.strictEqual(
1909 : 1 : err.message, `Rational: invalid number of arguments`,
1910 : 1 : `rational_addon.selfDiv(1, 2, 3)`
1911 : 1 : );
1912 : 1 : return true;
1913 : 1 : }
1914 : 1 : );
1915 : 1 :
1916 : 1 : r = new rational_module.Rational();
1917 : 1 : assert.throws(
1918 [ + ]: 1 : () => {
1919 : 1 : r.selfDiv(1, 2, 3);
1920 : 1 : },
1921 [ + ]: 1 : (err) => {
1922 : 1 : assert(err instanceof TypeError, `rational_module.selfDiv(1, 2, 3)`);
1923 : 1 : assert.strictEqual(
1924 : 1 : err.message, `Rational: invalid number of arguments`,
1925 : 1 : `rational_module.selfDiv(1, 2, 3)`
1926 : 1 : );
1927 : 1 : return true;
1928 : 1 : }
1929 : 1 : );
1930 : 1 : };
1931 : 1 : testData.desc = 'Rational selfDiv() ... invalid test#2';
1932 : 1 :
1933 : 1 : testData.skip = false;
1934 : 1 : suites.get(suiteDesc).push(testData);
1935 : 1 :
1936 : 1 : // TEST ### - Rational selfDiv() ... invalid test#3
1937 : 1 : testData = {};
1938 [ + ]: 1 : testData.method = () => {
1939 : 1 : let r = new rational_addon.Rational();
1940 : 1 : assert.throws(
1941 [ + ]: 1 : () => {
1942 : 1 : r.selfDiv({});
1943 : 1 : },
1944 [ + ]: 1 : (err) => {
1945 : 1 : assert(err instanceof TypeError, `rational_addon.selfDiv({})`);
1946 : 1 : assert.strictEqual(
1947 : 1 : err.message, `Rational: invalid argument`,
1948 : 1 : `rational_addon.selfDiv({})`
1949 : 1 : );
1950 : 1 : return true;
1951 : 1 : }
1952 : 1 : );
1953 : 1 :
1954 : 1 : r = new rational_module.Rational();
1955 : 1 : assert.throws(
1956 [ + ]: 1 : () => {
1957 : 1 : r.selfDiv({});
1958 : 1 : },
1959 [ + ]: 1 : (err) => {
1960 : 1 : assert(err instanceof TypeError, `rational_module.selfDiv({})`);
1961 : 1 : assert.strictEqual(
1962 : 1 : err.message, `Rational: invalid argument`,
1963 : 1 : `rational_module.selfDiv({})`
1964 : 1 : );
1965 : 1 : return true;
1966 : 1 : }
1967 : 1 : );
1968 : 1 : };
1969 : 1 : testData.desc = 'Rational selfDiv() ... invalid test#3';
1970 : 1 :
1971 : 1 : testData.skip = false;
1972 : 1 : suites.get(suiteDesc).push(testData);
1973 : 1 :
1974 : 1 : // TEST ### - Rational selfDiv() ... invalid test#4
1975 : 1 : testData = {};
1976 [ + ]: 1 : testData.method = () => {
1977 : 1 : let r = new rational_addon.Rational();
1978 : 1 : assert.throws(
1979 [ + ]: 1 : () => {
1980 : 1 : r.selfDiv(NaN);
1981 : 1 : },
1982 [ + ]: 1 : (err) => {
1983 : 1 : assert(err instanceof TypeError, `rational_addon.selfDiv(NaN)`);
1984 : 1 : assert.strictEqual(
1985 : 1 : err.message, `Rational: invalid argument`,
1986 : 1 : `rational_addon.selfDiv(NaN)`
1987 : 1 : );
1988 : 1 : return true;
1989 : 1 : }
1990 : 1 : );
1991 : 1 :
1992 : 1 : r = new rational_module.Rational();
1993 : 1 : assert.throws(
1994 [ + ]: 1 : () => {
1995 : 1 : r.selfDiv(NaN);
1996 : 1 : },
1997 [ + ]: 1 : (err) => {
1998 : 1 : assert(err instanceof TypeError, `rational_module.selfDiv(NaN)`);
1999 : 1 : assert.strictEqual(
2000 : 1 : err.message, `Rational: invalid argument`,
2001 : 1 : `rational_module.selfDiv(NaN)`
2002 : 1 : );
2003 : 1 : return true;
2004 : 1 : }
2005 : 1 : );
2006 : 1 : };
2007 : 1 : testData.desc = 'Rational selfDiv() ... invalid test#4';
2008 : 1 :
2009 : 1 : testData.skip = false;
2010 : 1 : suites.get(suiteDesc).push(testData);
2011 : 1 :
2012 : 1 : // TEST ### - Rational selfDiv() ... invalid test#5
2013 : 1 : testData = {};
2014 [ + ]: 1 : testData.method = () => {
2015 : 1 : let r = new rational_addon.Rational();
2016 : 1 : assert.throws(
2017 [ + ]: 1 : () => {
2018 : 1 : r.selfDiv(1n);
2019 : 1 : },
2020 [ + ]: 1 : (err) => {
2021 : 1 : assert(err instanceof TypeError, `rational_addon.selfDiv(1n)`);
2022 : 1 : assert.strictEqual(
2023 : 1 : err.message, `Rational: BigInt type is not accepted`,
2024 : 1 : `rational_addon.selfDiv(1n)`
2025 : 1 : );
2026 : 1 : return true;
2027 : 1 : }
2028 : 1 : );
2029 : 1 :
2030 : 1 : r = new rational_module.Rational();
2031 : 1 : assert.throws(
2032 [ + ]: 1 : () => {
2033 : 1 : r.selfDiv(1n);
2034 : 1 : },
2035 [ + ]: 1 : (err) => {
2036 : 1 : assert(err instanceof TypeError, `rational_module.selfDiv(1n)`);
2037 : 1 : assert.strictEqual(
2038 : 1 : err.message, `Rational: BigInt type is not accepted`,
2039 : 1 : `rational_module.selfDiv(1n)`
2040 : 1 : );
2041 : 1 : return true;
2042 : 1 : }
2043 : 1 : );
2044 : 1 : };
2045 : 1 : testData.desc = 'Rational selfDiv() ... invalid test#5';
2046 : 1 :
2047 : 1 : testData.skip = false;
2048 : 1 : suites.get(suiteDesc).push(testData);
2049 : 1 :
2050 : 1 : // TEST ### - Rational selfDiv() ... invalid test#6
2051 : 1 : testData = {};
2052 [ + ]: 1 : testData.method = () => {
2053 : 1 : let r = new rational_addon.Rational();
2054 : 1 : assert.throws(
2055 [ + ]: 1 : () => {
2056 : 1 : r.selfDiv('xxx');
2057 : 1 : },
2058 [ + ]: 1 : (err) => {
2059 : 1 : assert(err instanceof TypeError, `rational_addon.selfDiv('xxx')`);
2060 : 1 : assert.strictEqual(
2061 : 1 : err.message, `Rational: invalid argument`,
2062 : 1 : `rational_addon.selfDiv('xxx')`
2063 : 1 : );
2064 : 1 : return true;
2065 : 1 : }
2066 : 1 : );
2067 : 1 :
2068 : 1 : r = new rational_module.Rational();
2069 : 1 : assert.throws(
2070 [ + ]: 1 : () => {
2071 : 1 : r.selfDiv('xxx');
2072 : 1 : },
2073 [ + ]: 1 : (err) => {
2074 : 1 : assert(err instanceof TypeError, `rational_module.selfDiv('xxx')`);
2075 : 1 : assert.strictEqual(
2076 : 1 : err.message, `Rational: invalid argument`,
2077 : 1 : `rational_module.selfDiv('xxx')`
2078 : 1 : );
2079 : 1 : return true;
2080 : 1 : }
2081 : 1 : );
2082 : 1 : };
2083 : 1 : testData.desc = 'Rational selfDiv() ... invalid test#6';
2084 : 1 :
2085 : 1 : testData.skip = false;
2086 : 1 : suites.get(suiteDesc).push(testData);
2087 : 1 :
2088 : 1 : // TEST ### - Rational selfDiv() ... invalid test#7
2089 : 1 : testData = {};
2090 [ + ]: 1 : testData.method = () => {
2091 : 1 : let r = new rational_addon.Rational(3, 2);
2092 : 1 : assert.throws(
2093 [ + ]: 1 : () => {
2094 : 1 : r.selfDiv(new rational_addon.Rational());
2095 : 1 : },
2096 [ + ]: 1 : (err) => {
2097 : 1 : assert(err instanceof TypeError, `rational_addon.selfDiv(new rational_addon.Rational())`);
2098 : 1 : assert.strictEqual(
2099 : 1 : err.message, `Rational: division by zero`,
2100 : 1 : `rational_addon.selfDiv(new rational_addon.Rational())`
2101 : 1 : );
2102 : 1 : return true;
2103 : 1 : }
2104 : 1 : );
2105 : 1 :
2106 : 1 : r = new rational_module.Rational(3, 2);
2107 : 1 : assert.throws(
2108 [ + ]: 1 : () => {
2109 : 1 : r.selfDiv(new rational_module.Rational());
2110 : 1 : },
2111 [ + ]: 1 : (err) => {
2112 : 1 : assert(err instanceof TypeError, `rational_module.selfDiv(new rational_module.Rational())`);
2113 : 1 : assert.strictEqual(
2114 : 1 : err.message, `Rational: division by zero`,
2115 : 1 : `rational_module.selfDiv(new rational_module.Rational())`
2116 : 1 : );
2117 : 1 : return true;
2118 : 1 : }
2119 : 1 : );
2120 : 1 : };
2121 : 1 : testData.desc = 'Rational selfDiv() ... invalid test#7';
2122 : 1 :
2123 : 1 : testData.skip = false;
2124 : 1 : suites.get(suiteDesc).push(testData);
2125 : 1 :
2126 : 1 : // TEST ### - Rational selfDiv() ... invalid test#8
2127 : 1 : testData = {};
2128 [ + ]: 1 : testData.method = () => {
2129 : 1 : let r = new rational_addon.Rational();
2130 : 1 : assert.throws(
2131 [ + ]: 1 : () => {
2132 : 1 : r.selfDiv(0);
2133 : 1 : },
2134 [ + ]: 1 : (err) => {
2135 : 1 : assert(err instanceof TypeError, `rational_addon.selfDiv(0)`);
2136 : 1 : assert.strictEqual(
2137 : 1 : err.message, `Rational: division by zero`,
2138 : 1 : `rational_addon.selfDiv(0)`
2139 : 1 : );
2140 : 1 : return true;
2141 : 1 : }
2142 : 1 : );
2143 : 1 :
2144 : 1 : r = new rational_module.Rational();
2145 : 1 : assert.throws(
2146 [ + ]: 1 : () => {
2147 : 1 : r.selfDiv(0);
2148 : 1 : },
2149 [ + ]: 1 : (err) => {
2150 : 1 : assert(err instanceof TypeError, `rational_module.selfDiv(0)`);
2151 : 1 : assert.strictEqual(
2152 : 1 : err.message, `Rational: division by zero`,
2153 : 1 : `rational_module.selfDiv(0)`
2154 : 1 : );
2155 : 1 : return true;
2156 : 1 : }
2157 : 1 : );
2158 : 1 : };
2159 : 1 : testData.desc = 'Rational selfDiv() ... invalid test#8';
2160 : 1 :
2161 : 1 : testData.skip = false;
2162 : 1 : suites.get(suiteDesc).push(testData);
2163 : 1 :
2164 : 1 : // TEST SUITE #7 - Rational selfPow() function
2165 : 1 : suiteDesc = 'Rational selfPow() function';
2166 : 1 : suites.set(suiteDesc, []);
2167 : 1 :
2168 : 1 : // TEST ### - Rational selfPow() ... valid test#1
2169 : 1 : testData = {};
2170 [ + ]: 1 : testData.method = () => {
2171 : 1 : let r = new rational_addon.Rational(3, 2);
2172 : 1 : let s = r.selfPow(0);
2173 : 1 :
2174 : 1 : assert.strictEqual(r.getNumerator(), 1);
2175 : 1 : assert.strictEqual(r.getDenominator(), 1);
2176 : 1 : assert(r === s);
2177 : 1 :
2178 : 1 : r = new rational_module.Rational(3, 2);
2179 : 1 : s = r.selfPow(0);
2180 : 1 :
2181 : 1 : assert.strictEqual(r.getNumerator(), 1);
2182 : 1 : assert.strictEqual(r.getDenominator(), 1);
2183 : 1 : assert(r === s);
2184 : 1 : };
2185 : 1 : testData.desc = 'Rational selfPow() ... valid test#1';
2186 : 1 :
2187 : 1 : testData.skip = false;
2188 : 1 : suites.get(suiteDesc).push(testData);
2189 : 1 :
2190 : 1 : // TEST ### - Rational selfPow() ... valid test#2
2191 : 1 : testData = {};
2192 [ + ]: 1 : testData.method = () => {
2193 : 1 : let r = new rational_addon.Rational(-3, 2);
2194 : 1 : let s = r.selfPow(1);
2195 : 1 :
2196 : 1 : assert.strictEqual(r.getNumerator(), -3);
2197 : 1 : assert.strictEqual(r.getDenominator(), 2);
2198 : 1 : assert(r === s);
2199 : 1 :
2200 : 1 : r = new rational_module.Rational(-3, 2);
2201 : 1 : s = r.selfPow(1);
2202 : 1 :
2203 : 1 : assert.strictEqual(r.getNumerator(), -3);
2204 : 1 : assert.strictEqual(r.getDenominator(), 2);
2205 : 1 : assert(r === s);
2206 : 1 : };
2207 : 1 : testData.desc = 'Rational selfPow() ... valid test#2';
2208 : 1 :
2209 : 1 : testData.skip = false;
2210 : 1 : suites.get(suiteDesc).push(testData);
2211 : 1 :
2212 : 1 : // TEST ### - Rational selfPow() ... valid test#3
2213 : 1 : testData = {};
2214 [ + ]: 1 : testData.method = () => {
2215 : 1 : let r = new rational_addon.Rational(-3, 2);
2216 : 1 : let s = r.selfPow(2);
2217 : 1 :
2218 : 1 : assert.strictEqual(r.getNumerator(), 9);
2219 : 1 : assert.strictEqual(r.getDenominator(), 4);
2220 : 1 : assert(r === s);
2221 : 1 :
2222 : 1 : r = new rational_module.Rational(-3, 2);
2223 : 1 : s = r.selfPow(2);
2224 : 1 :
2225 : 1 : assert.strictEqual(r.getNumerator(), 9);
2226 : 1 : assert.strictEqual(r.getDenominator(), 4);
2227 : 1 : assert(r === s);
2228 : 1 : };
2229 : 1 : testData.desc = 'Rational selfPow() ... valid test#3';
2230 : 1 :
2231 : 1 : testData.skip = false;
2232 : 1 : suites.get(suiteDesc).push(testData);
2233 : 1 :
2234 : 1 : // TEST ### - Rational selfPow() ... valid test#4
2235 : 1 : testData = {};
2236 [ + ]: 1 : testData.method = () => {
2237 : 1 : let r = new rational_addon.Rational(-3, 2);
2238 : 1 : let s = r.selfPow(-1);
2239 : 1 :
2240 : 1 : assert.strictEqual(r.getNumerator(), -2);
2241 : 1 : assert.strictEqual(r.getDenominator(), 3);
2242 : 1 : assert(r === s);
2243 : 1 :
2244 : 1 : r = new rational_module.Rational(-3, 2);
2245 : 1 : s = r.selfPow(-1);
2246 : 1 :
2247 : 1 : assert.strictEqual(r.getNumerator(), -2);
2248 : 1 : assert.strictEqual(r.getDenominator(), 3);
2249 : 1 : assert(r === s);
2250 : 1 : };
2251 : 1 : testData.desc = 'Rational selfPow() ... valid test#4';
2252 : 1 :
2253 : 1 : testData.skip = false;
2254 : 1 : suites.get(suiteDesc).push(testData);
2255 : 1 :
2256 : 1 : // TEST ### - Rational selfPow() ... valid test#5
2257 : 1 : testData = {};
2258 [ + ]: 1 : testData.method = () => {
2259 : 1 : let r = new rational_addon.Rational(-3, 2);
2260 : 1 : let s = r.selfPow(-2);
2261 : 1 :
2262 : 1 : assert.strictEqual(r.getNumerator(), 4);
2263 : 1 : assert.strictEqual(r.getDenominator(), 9);
2264 : 1 : assert(r === s);
2265 : 1 :
2266 : 1 : r = new rational_module.Rational(-3, 2);
2267 : 1 : s = r.selfPow(-2);
2268 : 1 :
2269 : 1 : assert.strictEqual(r.getNumerator(), 4);
2270 : 1 : assert.strictEqual(r.getDenominator(), 9);
2271 : 1 : assert(r === s);
2272 : 1 : };
2273 : 1 : testData.desc = 'Rational selfPow() ... valid test#5';
2274 : 1 :
2275 : 1 : testData.skip = false;
2276 : 1 : suites.get(suiteDesc).push(testData);
2277 : 1 :
2278 : 1 : // TEST ### - Rational selfPow() ... invalid test#1
2279 : 1 : testData = {};
2280 [ + ]: 1 : testData.method = () => {
2281 : 1 : let r = new rational_addon.Rational(3, 2);
2282 : 1 : assert.throws(
2283 [ + ]: 1 : () => {
2284 : 1 : r.selfPow();
2285 : 1 : },
2286 [ + ]: 1 : (err) => {
2287 : 1 : assert(err instanceof TypeError, `rational_addon.selfPow()`);
2288 : 1 : assert.strictEqual(
2289 : 1 : err.message, `Rational: invalid number of arguments`,
2290 : 1 : `rational_addon.selfPow()`
2291 : 1 : );
2292 : 1 : return true;
2293 : 1 : }
2294 : 1 : );
2295 : 1 :
2296 : 1 : r = new rational_module.Rational(3, 2);
2297 : 1 : assert.throws(
2298 [ + ]: 1 : () => {
2299 : 1 : r.selfPow();
2300 : 1 : },
2301 [ + ]: 1 : (err) => {
2302 : 1 : assert(err instanceof TypeError, `rational_module.selfPow()`);
2303 : 1 : assert.strictEqual(
2304 : 1 : err.message, `Rational: invalid number of arguments`,
2305 : 1 : `rational_module.selfPow()`
2306 : 1 : );
2307 : 1 : return true;
2308 : 1 : }
2309 : 1 : );
2310 : 1 : };
2311 : 1 : testData.desc = 'Rational selfPow() ... invalid test#1';
2312 : 1 :
2313 : 1 : testData.skip = false;
2314 : 1 : suites.get(suiteDesc).push(testData);
2315 : 1 :
2316 : 1 : // TEST ### - Rational selfPow() ... invalid test#2
2317 : 1 : testData = {};
2318 [ + ]: 1 : testData.method = () => {
2319 : 1 : let r = new rational_addon.Rational(3, 2);
2320 : 1 : assert.throws(
2321 [ + ]: 1 : () => {
2322 : 1 : r.selfPow(1, 2);
2323 : 1 : },
2324 [ + ]: 1 : (err) => {
2325 : 1 : assert(err instanceof TypeError, `rational_addon.selfPow(1, 2)`);
2326 : 1 : assert.strictEqual(
2327 : 1 : err.message, `Rational: invalid number of arguments`,
2328 : 1 : `rational_addon.selfPow(1, 2)`
2329 : 1 : );
2330 : 1 : return true;
2331 : 1 : }
2332 : 1 : );
2333 : 1 :
2334 : 1 : r = new rational_module.Rational(3, 2);
2335 : 1 : assert.throws(
2336 [ + ]: 1 : () => {
2337 : 1 : r.selfPow(1, 2);
2338 : 1 : },
2339 [ + ]: 1 : (err) => {
2340 : 1 : assert(err instanceof TypeError, `rational_module.selfPow(1, 2)`);
2341 : 1 : assert.strictEqual(
2342 : 1 : err.message, `Rational: invalid number of arguments`,
2343 : 1 : `rational_module.selfPow(1, 2)`
2344 : 1 : );
2345 : 1 : return true;
2346 : 1 : }
2347 : 1 : );
2348 : 1 : };
2349 : 1 : testData.desc = 'Rational selfPow() ... invalid test#2';
2350 : 1 :
2351 : 1 : testData.skip = false;
2352 : 1 : suites.get(suiteDesc).push(testData);
2353 : 1 :
2354 : 1 : // TEST ### - Rational selfPow() ... invalid test#3
2355 : 1 : testData = {};
2356 [ + ]: 1 : testData.method = () => {
2357 : 1 : let r = new rational_addon.Rational(3, 2);
2358 : 1 : assert.throws(
2359 [ + ]: 1 : () => {
2360 : 1 : r.selfPow({});
2361 : 1 : },
2362 [ + ]: 1 : (err) => {
2363 : 1 : assert(err instanceof TypeError, `rational_addon.selfPow({})`);
2364 : 1 : assert.strictEqual(
2365 : 1 : err.message, `Rational: invalid argument`,
2366 : 1 : `rational_addon.selfPow({})`
2367 : 1 : );
2368 : 1 : return true;
2369 : 1 : }
2370 : 1 : );
2371 : 1 :
2372 : 1 : r = new rational_module.Rational(3, 2);
2373 : 1 : assert.throws(
2374 [ + ]: 1 : () => {
2375 : 1 : r.selfPow({});
2376 : 1 : },
2377 [ + ]: 1 : (err) => {
2378 : 1 : assert(err instanceof TypeError, `rational_module.selfPow({})`);
2379 : 1 : assert.strictEqual(
2380 : 1 : err.message, `Rational: invalid argument`,
2381 : 1 : `rational_module.selfPow({})`
2382 : 1 : );
2383 : 1 : return true;
2384 : 1 : }
2385 : 1 : );
2386 : 1 : };
2387 : 1 : testData.desc = 'Rational selfPow() ... invalid test#3';
2388 : 1 :
2389 : 1 : testData.skip = false;
2390 : 1 : suites.get(suiteDesc).push(testData);
2391 : 1 :
2392 : 1 : // TEST ### - Rational selfPow() ... invalid test#4
2393 : 1 : testData = {};
2394 [ + ]: 1 : testData.method = () => {
2395 : 1 : let r = new rational_addon.Rational(3, 2);
2396 : 1 : assert.throws(
2397 [ + ]: 1 : () => {
2398 : 1 : r.selfPow(1n);
2399 : 1 : },
2400 [ + ]: 1 : (err) => {
2401 : 1 : assert(err instanceof TypeError, `rational_addon.selfPow(1n)`);
2402 : 1 : assert.strictEqual(
2403 : 1 : err.message, `Rational: BigInt type is not accepted`,
2404 : 1 : `rational_addon.selfPow(1n)`
2405 : 1 : );
2406 : 1 : return true;
2407 : 1 : }
2408 : 1 : );
2409 : 1 :
2410 : 1 : r = new rational_module.Rational(3, 2);
2411 : 1 : assert.throws(
2412 [ + ]: 1 : () => {
2413 : 1 : r.selfPow(1n);
2414 : 1 : },
2415 [ + ]: 1 : (err) => {
2416 : 1 : assert(err instanceof TypeError, `rational_module.selfPow(1n)`);
2417 : 1 : assert.strictEqual(
2418 : 1 : err.message, `Rational: BigInt type is not accepted`,
2419 : 1 : `rational_module.selfPow(1n)`
2420 : 1 : );
2421 : 1 : return true;
2422 : 1 : }
2423 : 1 : );
2424 : 1 : };
2425 : 1 : testData.desc = 'Rational selfPow() ... invalid test#4';
2426 : 1 :
2427 : 1 : testData.skip = false;
2428 : 1 : suites.get(suiteDesc).push(testData);
2429 : 1 :
2430 : 1 : // TEST ### - Rational selfPow() ... invalid test#5
2431 : 1 : testData = {};
2432 [ + ]: 1 : testData.method = () => {
2433 : 1 : let r = new rational_addon.Rational();
2434 : 1 : assert.throws(
2435 [ + ]: 1 : () => {
2436 : 1 : r.selfPow(-3);
2437 : 1 : },
2438 [ + ]: 1 : (err) => {
2439 : 1 : assert(err instanceof TypeError, `rational_addon.selfPow(-3)`);
2440 : 1 : assert.strictEqual(
2441 : 1 : err.message, `Rational: division by zero`,
2442 : 1 : `rational_addon.selfPow(-3)`
2443 : 1 : );
2444 : 1 : return true;
2445 : 1 : }
2446 : 1 : );
2447 : 1 :
2448 : 1 : r = new rational_module.Rational();
2449 : 1 : assert.throws(
2450 [ + ]: 1 : () => {
2451 : 1 : r.selfPow(-3);
2452 : 1 : },
2453 [ + ]: 1 : (err) => {
2454 : 1 : assert(err instanceof TypeError, `rational_module.selfPow(-3)`);
2455 : 1 : assert.strictEqual(
2456 : 1 : err.message, `Rational: division by zero`,
2457 : 1 : `rational_module.selfPow(-3)`
2458 : 1 : );
2459 : 1 : return true;
2460 : 1 : }
2461 : 1 : );
2462 : 1 : };
2463 : 1 : testData.desc = 'Rational selfPow() ... invalid test#5';
2464 : 1 :
2465 : 1 : testData.skip = false;
2466 : 1 : suites.get(suiteDesc).push(testData);
2467 : 1 :
2468 : 1 : // TEST SUITE #8 - Rational add() function
2469 : 1 : suiteDesc = 'Rational add() function';
2470 : 1 : suites.set(suiteDesc, []);
2471 : 1 :
2472 : 1 : // TEST ### - Rational add() ... valid test#1
2473 : 1 : testData = {};
2474 [ + ]: 1 : testData.method = () => {
2475 : 1 : let r = new rational_addon.Rational(1, 2);
2476 : 1 : let s = r.add(new rational_addon.Rational(2, 3));
2477 : 1 :
2478 : 1 : assert.strictEqual(r.getNumerator(), 1);
2479 : 1 : assert.strictEqual(r.getDenominator(), 2);
2480 : 1 :
2481 : 1 : assert.strictEqual(s.getNumerator(), 7);
2482 : 1 : assert.strictEqual(s.getDenominator(), 6);
2483 : 1 :
2484 : 1 : assert(r !== s);
2485 : 1 :
2486 : 1 : r = new rational_module.Rational(1, 2);
2487 : 1 : s = r.add(new rational_module.Rational(2, 3));
2488 : 1 :
2489 : 1 : assert.strictEqual(r.getNumerator(), 1);
2490 : 1 : assert.strictEqual(r.getDenominator(), 2);
2491 : 1 :
2492 : 1 : assert.strictEqual(s.getNumerator(), 7);
2493 : 1 : assert.strictEqual(s.getDenominator(), 6);
2494 : 1 :
2495 : 1 : assert(r !== s);
2496 : 1 : };
2497 : 1 : testData.desc = 'Rational add() ... valid test#1';
2498 : 1 :
2499 : 1 : testData.skip = false;
2500 : 1 : suites.get(suiteDesc).push(testData);
2501 : 1 :
2502 : 1 : // TEST ### - Rational add() ... valid test#2
2503 : 1 : testData = {};
2504 [ + ]: 1 : testData.method = () => {
2505 : 1 : let r = new rational_addon.Rational(1, 2);
2506 : 1 : let s = r.add(-2);
2507 : 1 :
2508 : 1 : assert.strictEqual(r.getNumerator(), 1);
2509 : 1 : assert.strictEqual(r.getDenominator(), 2);
2510 : 1 :
2511 : 1 : assert.strictEqual(s.getNumerator(), -3);
2512 : 1 : assert.strictEqual(s.getDenominator(), 2);
2513 : 1 :
2514 : 1 : assert(r !== s);
2515 : 1 :
2516 : 1 : r = new rational_module.Rational(1, 2);
2517 : 1 : s = r.add(-2);
2518 : 1 :
2519 : 1 : assert.strictEqual(r.getNumerator(), 1);
2520 : 1 : assert.strictEqual(r.getDenominator(), 2);
2521 : 1 :
2522 : 1 : assert.strictEqual(s.getNumerator(), -3);
2523 : 1 : assert.strictEqual(s.getDenominator(), 2);
2524 : 1 :
2525 : 1 : assert(r !== s);
2526 : 1 : };
2527 : 1 : testData.desc = 'Rational add() ... valid test#2';
2528 : 1 :
2529 : 1 : testData.skip = false;
2530 : 1 : suites.get(suiteDesc).push(testData);
2531 : 1 :
2532 : 1 : // TEST ### - Rational add() ... valid test#3
2533 : 1 : testData = {};
2534 [ + ]: 1 : testData.method = () => {
2535 : 1 : let r = new rational_addon.Rational(1, 2);
2536 : 1 : let s = r.add('-2');
2537 : 1 :
2538 : 1 : assert.strictEqual(r.getNumerator(), 1);
2539 : 1 : assert.strictEqual(r.getDenominator(), 2);
2540 : 1 :
2541 : 1 : assert.strictEqual(s.getNumerator(), -3);
2542 : 1 : assert.strictEqual(s.getDenominator(), 2);
2543 : 1 :
2544 : 1 : assert(r !== s);
2545 : 1 :
2546 : 1 : r = new rational_module.Rational(1, 2);
2547 : 1 : s = r.add('-2');
2548 : 1 :
2549 : 1 : assert.strictEqual(r.getNumerator(), 1);
2550 : 1 : assert.strictEqual(r.getDenominator(), 2);
2551 : 1 :
2552 : 1 : assert.strictEqual(s.getNumerator(), -3);
2553 : 1 : assert.strictEqual(s.getDenominator(), 2);
2554 : 1 :
2555 : 1 : assert(r !== s);
2556 : 1 : };
2557 : 1 : testData.desc = 'Rational add() ... valid test#3';
2558 : 1 :
2559 : 1 : testData.skip = false;
2560 : 1 : suites.get(suiteDesc).push(testData);
2561 : 1 :
2562 : 1 : // TEST ### - Rational add() ... invalid test#1
2563 : 1 : testData = {};
2564 [ + ]: 1 : testData.method = () => {
2565 : 1 : let r = new rational_addon.Rational();
2566 : 1 : assert.throws(
2567 [ + ]: 1 : () => {
2568 : 1 : r.add();
2569 : 1 : },
2570 [ + ]: 1 : (err) => {
2571 : 1 : assert(err instanceof TypeError, `rational_addon.add()`);
2572 : 1 : assert.strictEqual(
2573 : 1 : err.message, `Rational: invalid number of arguments`,
2574 : 1 : `rational_addon.add()`
2575 : 1 : );
2576 : 1 : return true;
2577 : 1 : }
2578 : 1 : );
2579 : 1 :
2580 : 1 : r = new rational_module.Rational();
2581 : 1 : assert.throws(
2582 [ + ]: 1 : () => {
2583 : 1 : r.add();
2584 : 1 : },
2585 [ + ]: 1 : (err) => {
2586 : 1 : assert(err instanceof TypeError, `rational_module.add()`);
2587 : 1 : assert.strictEqual(
2588 : 1 : err.message, `Rational: invalid number of arguments`,
2589 : 1 : `rational_module.add()`
2590 : 1 : );
2591 : 1 : return true;
2592 : 1 : }
2593 : 1 : );
2594 : 1 : };
2595 : 1 : testData.desc = 'Rational add() ... invalid test#1';
2596 : 1 :
2597 : 1 : testData.skip = false;
2598 : 1 : suites.get(suiteDesc).push(testData);
2599 : 1 :
2600 : 1 : // TEST ### - Rational add() ... invalid test#2
2601 : 1 : testData = {};
2602 [ + ]: 1 : testData.method = () => {
2603 : 1 : let r = new rational_addon.Rational();
2604 : 1 : assert.throws(
2605 [ + ]: 1 : () => {
2606 : 1 : r.add(1, 2, 3);
2607 : 1 : },
2608 [ + ]: 1 : (err) => {
2609 : 1 : assert(err instanceof TypeError, `rational_addon.add(1, 2, 3)`);
2610 : 1 : assert.strictEqual(
2611 : 1 : err.message, `Rational: invalid number of arguments`,
2612 : 1 : `rational_addon.add(1, 2, 3)`
2613 : 1 : );
2614 : 1 : return true;
2615 : 1 : }
2616 : 1 : );
2617 : 1 :
2618 : 1 : r = new rational_module.Rational();
2619 : 1 : assert.throws(
2620 [ + ]: 1 : () => {
2621 : 1 : r.add(1, 2, 3);
2622 : 1 : },
2623 [ + ]: 1 : (err) => {
2624 : 1 : assert(err instanceof TypeError, `rational_module.add(1, 2, 3)`);
2625 : 1 : assert.strictEqual(
2626 : 1 : err.message, `Rational: invalid number of arguments`,
2627 : 1 : `rational_module.add(1, 2, 3)`
2628 : 1 : );
2629 : 1 : return true;
2630 : 1 : }
2631 : 1 : );
2632 : 1 : };
2633 : 1 : testData.desc = 'Rational add() ... invalid test#2';
2634 : 1 :
2635 : 1 : testData.skip = false;
2636 : 1 : suites.get(suiteDesc).push(testData);
2637 : 1 :
2638 : 1 : // TEST ### - Rational add() ... invalid test#3
2639 : 1 : testData = {};
2640 [ + ]: 1 : testData.method = () => {
2641 : 1 : let r = new rational_addon.Rational();
2642 : 1 : assert.throws(
2643 [ + ]: 1 : () => {
2644 : 1 : r.add({});
2645 : 1 : },
2646 [ + ]: 1 : (err) => {
2647 : 1 : assert(err instanceof TypeError, `rational_addon.add({})`);
2648 : 1 : assert.strictEqual(
2649 : 1 : err.message, `Rational: invalid argument`,
2650 : 1 : `rational_addon.add({})`
2651 : 1 : );
2652 : 1 : return true;
2653 : 1 : }
2654 : 1 : );
2655 : 1 :
2656 : 1 : r = new rational_module.Rational();
2657 : 1 : assert.throws(
2658 [ + ]: 1 : () => {
2659 : 1 : r.add({});
2660 : 1 : },
2661 [ + ]: 1 : (err) => {
2662 : 1 : assert(err instanceof TypeError, `rational_module.add({})`);
2663 : 1 : assert.strictEqual(
2664 : 1 : err.message, `Rational: invalid argument`,
2665 : 1 : `rational_module.add({})`
2666 : 1 : );
2667 : 1 : return true;
2668 : 1 : }
2669 : 1 : );
2670 : 1 : };
2671 : 1 : testData.desc = 'Rational add() ... invalid test#3';
2672 : 1 :
2673 : 1 : testData.skip = false;
2674 : 1 : suites.get(suiteDesc).push(testData);
2675 : 1 :
2676 : 1 : // TEST ### - Rational add() ... invalid test#4
2677 : 1 : testData = {};
2678 [ + ]: 1 : testData.method = () => {
2679 : 1 : let r = new rational_addon.Rational();
2680 : 1 : assert.throws(
2681 [ + ]: 1 : () => {
2682 : 1 : r.add(NaN);
2683 : 1 : },
2684 [ + ]: 1 : (err) => {
2685 : 1 : assert(err instanceof TypeError, `rational_addon.add(NaN)`);
2686 : 1 : assert.strictEqual(
2687 : 1 : err.message, `Rational: invalid argument`,
2688 : 1 : `rational_addon.add(NaN)`
2689 : 1 : );
2690 : 1 : return true;
2691 : 1 : }
2692 : 1 : );
2693 : 1 :
2694 : 1 : r = new rational_module.Rational();
2695 : 1 : assert.throws(
2696 [ + ]: 1 : () => {
2697 : 1 : r.add(NaN);
2698 : 1 : },
2699 [ + ]: 1 : (err) => {
2700 : 1 : assert(err instanceof TypeError, `rational_module.add(NaN)`);
2701 : 1 : assert.strictEqual(
2702 : 1 : err.message, `Rational: invalid argument`,
2703 : 1 : `rational_module.add(NaN)`
2704 : 1 : );
2705 : 1 : return true;
2706 : 1 : }
2707 : 1 : );
2708 : 1 : };
2709 : 1 : testData.desc = 'Rational add() ... invalid test#4';
2710 : 1 :
2711 : 1 : testData.skip = false;
2712 : 1 : suites.get(suiteDesc).push(testData);
2713 : 1 :
2714 : 1 : // TEST ### - Rational add() ... invalid test#5
2715 : 1 : testData = {};
2716 [ + ]: 1 : testData.method = () => {
2717 : 1 : let r = new rational_addon.Rational();
2718 : 1 : assert.throws(
2719 [ + ]: 1 : () => {
2720 : 1 : r.add(1n);
2721 : 1 : },
2722 [ + ]: 1 : (err) => {
2723 : 1 : assert(err instanceof TypeError, `rational_addon.add(1n)`);
2724 : 1 : assert.strictEqual(
2725 : 1 : err.message, `Rational: BigInt type is not accepted`,
2726 : 1 : `rational_addon.add(1n)`
2727 : 1 : );
2728 : 1 : return true;
2729 : 1 : }
2730 : 1 : );
2731 : 1 :
2732 : 1 : r = new rational_module.Rational();
2733 : 1 : assert.throws(
2734 [ + ]: 1 : () => {
2735 : 1 : r.add(1n);
2736 : 1 : },
2737 [ + ]: 1 : (err) => {
2738 : 1 : assert(err instanceof TypeError, `rational_module.add(1n)`);
2739 : 1 : assert.strictEqual(
2740 : 1 : err.message, `Rational: BigInt type is not accepted`,
2741 : 1 : `rational_module.add(1n)`
2742 : 1 : );
2743 : 1 : return true;
2744 : 1 : }
2745 : 1 : );
2746 : 1 : };
2747 : 1 : testData.desc = 'Rational add() ... invalid test#5';
2748 : 1 :
2749 : 1 : testData.skip = false;
2750 : 1 : suites.get(suiteDesc).push(testData);
2751 : 1 :
2752 : 1 : // TEST ### - Rational add() ... invalid test#6
2753 : 1 : testData = {};
2754 [ + ]: 1 : testData.method = () => {
2755 : 1 : let r = new rational_addon.Rational();
2756 : 1 : assert.throws(
2757 [ + ]: 1 : () => {
2758 : 1 : r.add('xxx');
2759 : 1 : },
2760 [ + ]: 1 : (err) => {
2761 : 1 : assert(err instanceof TypeError, `rational_addon.add('xxx')`);
2762 : 1 : assert.strictEqual(
2763 : 1 : err.message, `Rational: invalid argument`,
2764 : 1 : `rational_addon.add('xxx')`
2765 : 1 : );
2766 : 1 : return true;
2767 : 1 : }
2768 : 1 : );
2769 : 1 :
2770 : 1 : r = new rational_module.Rational();
2771 : 1 : assert.throws(
2772 [ + ]: 1 : () => {
2773 : 1 : r.add('xxx');
2774 : 1 : },
2775 [ + ]: 1 : (err) => {
2776 : 1 : assert(err instanceof TypeError, `rational_module.add('xxx')`);
2777 : 1 : assert.strictEqual(
2778 : 1 : err.message, `Rational: invalid argument`,
2779 : 1 : `rational_module.add('xxx')`
2780 : 1 : );
2781 : 1 : return true;
2782 : 1 : }
2783 : 1 : );
2784 : 1 : };
2785 : 1 : testData.desc = 'Rational add() ... invalid test#6';
2786 : 1 :
2787 : 1 : testData.skip = false;
2788 : 1 : suites.get(suiteDesc).push(testData);
2789 : 1 :
2790 : 1 : // TEST SUITE #9 - Rational sub() function
2791 : 1 : suiteDesc = 'Rational sub() function';
2792 : 1 : suites.set(suiteDesc, []);
2793 : 1 :
2794 : 1 : // TEST ### - Rational sub() ... valid test#1
2795 : 1 : testData = {};
2796 [ + ]: 1 : testData.method = () => {
2797 : 1 : let r = new rational_addon.Rational(3, 2);
2798 : 1 : let s = r.sub(new rational_addon.Rational(1, 2));
2799 : 1 :
2800 : 1 : assert.strictEqual(r.getNumerator(), 3);
2801 : 1 : assert.strictEqual(r.getDenominator(), 2);
2802 : 1 :
2803 : 1 : assert.strictEqual(s.getNumerator(), 1);
2804 : 1 : assert.strictEqual(s.getDenominator(), 1);
2805 : 1 :
2806 : 1 : assert(r !== s);
2807 : 1 :
2808 : 1 : r = new rational_module.Rational(3, 2);
2809 : 1 : s = r.sub(new rational_module.Rational(1, 2));
2810 : 1 :
2811 : 1 : assert.strictEqual(r.getNumerator(), 3);
2812 : 1 : assert.strictEqual(r.getDenominator(), 2);
2813 : 1 :
2814 : 1 : assert.strictEqual(s.getNumerator(), 1);
2815 : 1 : assert.strictEqual(s.getDenominator(), 1);
2816 : 1 :
2817 : 1 : assert(r !== s);
2818 : 1 : };
2819 : 1 : testData.desc = 'Rational sub() ... valid test#1';
2820 : 1 :
2821 : 1 : testData.skip = false;
2822 : 1 : suites.get(suiteDesc).push(testData);
2823 : 1 :
2824 : 1 : // TEST ### - Rational sub() ... valid test#2
2825 : 1 : testData = {};
2826 [ + ]: 1 : testData.method = () => {
2827 : 1 : let r = new rational_addon.Rational(3, 2);
2828 : 1 : let s = r.sub('1');
2829 : 1 :
2830 : 1 : assert.strictEqual(r.getNumerator(), 3);
2831 : 1 : assert.strictEqual(r.getDenominator(), 2);
2832 : 1 :
2833 : 1 : assert.strictEqual(s.getNumerator(), 1);
2834 : 1 : assert.strictEqual(s.getDenominator(), 2);
2835 : 1 :
2836 : 1 : assert(r !== s);
2837 : 1 :
2838 : 1 : r = new rational_module.Rational(3, 2);
2839 : 1 : s = r.sub('1');
2840 : 1 :
2841 : 1 : assert.strictEqual(r.getNumerator(), 3);
2842 : 1 : assert.strictEqual(r.getDenominator(), 2);
2843 : 1 :
2844 : 1 : assert.strictEqual(s.getNumerator(), 1);
2845 : 1 : assert.strictEqual(s.getDenominator(), 2);
2846 : 1 :
2847 : 1 : assert(r !== s);
2848 : 1 : };
2849 : 1 : testData.desc = 'Rational sub() ... valid test#2';
2850 : 1 :
2851 : 1 : testData.skip = false;
2852 : 1 : suites.get(suiteDesc).push(testData);
2853 : 1 :
2854 : 1 : // TEST ### - Rational sub() ... valid test#3
2855 : 1 : testData = {};
2856 [ + ]: 1 : testData.method = () => {
2857 : 1 : let r = new rational_addon.Rational(3, 2);
2858 : 1 : let s = r.sub('-1');
2859 : 1 :
2860 : 1 : assert.strictEqual(r.getNumerator(), 3);
2861 : 1 : assert.strictEqual(r.getDenominator(), 2);
2862 : 1 :
2863 : 1 : assert.strictEqual(s.getNumerator(), 5);
2864 : 1 : assert.strictEqual(s.getDenominator(), 2);
2865 : 1 :
2866 : 1 : assert(r !== s);
2867 : 1 :
2868 : 1 : r = new rational_module.Rational(3, 2);
2869 : 1 : s = r.sub('-1');
2870 : 1 :
2871 : 1 : assert.strictEqual(r.getNumerator(), 3);
2872 : 1 : assert.strictEqual(r.getDenominator(), 2);
2873 : 1 :
2874 : 1 : assert.strictEqual(s.getNumerator(), 5);
2875 : 1 : assert.strictEqual(s.getDenominator(), 2);
2876 : 1 :
2877 : 1 : assert(r !== s);
2878 : 1 : };
2879 : 1 : testData.desc = 'Rational sub() ... valid test#3';
2880 : 1 :
2881 : 1 : testData.skip = false;
2882 : 1 : suites.get(suiteDesc).push(testData);
2883 : 1 :
2884 : 1 : // TEST ### - Rational sub() ... invalid test#1
2885 : 1 : testData = {};
2886 [ + ]: 1 : testData.method = () => {
2887 : 1 : let r = new rational_addon.Rational();
2888 : 1 : assert.throws(
2889 [ + ]: 1 : () => {
2890 : 1 : r.sub();
2891 : 1 : },
2892 [ + ]: 1 : (err) => {
2893 : 1 : assert(err instanceof TypeError, `rational_addon.sub()`);
2894 : 1 : assert.strictEqual(
2895 : 1 : err.message, `Rational: invalid number of arguments`,
2896 : 1 : `rational_addon.sub()`
2897 : 1 : );
2898 : 1 : return true;
2899 : 1 : }
2900 : 1 : );
2901 : 1 :
2902 : 1 : r = new rational_module.Rational();
2903 : 1 : assert.throws(
2904 [ + ]: 1 : () => {
2905 : 1 : r.sub();
2906 : 1 : },
2907 [ + ]: 1 : (err) => {
2908 : 1 : assert(err instanceof TypeError, `rational_module.sub()`);
2909 : 1 : assert.strictEqual(
2910 : 1 : err.message, `Rational: invalid number of arguments`,
2911 : 1 : `rational_module.sub()`
2912 : 1 : );
2913 : 1 : return true;
2914 : 1 : }
2915 : 1 : );
2916 : 1 : };
2917 : 1 : testData.desc = 'Rational sub() ... invalid test#1';
2918 : 1 :
2919 : 1 : testData.skip = false;
2920 : 1 : suites.get(suiteDesc).push(testData);
2921 : 1 :
2922 : 1 : // TEST ### - Rational sub() ... invalid test#2
2923 : 1 : testData = {};
2924 [ + ]: 1 : testData.method = () => {
2925 : 1 : let r = new rational_addon.Rational();
2926 : 1 : assert.throws(
2927 [ + ]: 1 : () => {
2928 : 1 : r.sub(1, 2, 3);
2929 : 1 : },
2930 [ + ]: 1 : (err) => {
2931 : 1 : assert(err instanceof TypeError, `rational_addon.sub(1, 2, 3)`);
2932 : 1 : assert.strictEqual(
2933 : 1 : err.message, `Rational: invalid number of arguments`,
2934 : 1 : `rational_addon.sub(1, 2, 3)`
2935 : 1 : );
2936 : 1 : return true;
2937 : 1 : }
2938 : 1 : );
2939 : 1 :
2940 : 1 : r = new rational_module.Rational();
2941 : 1 : assert.throws(
2942 [ + ]: 1 : () => {
2943 : 1 : r.sub(1, 2, 3);
2944 : 1 : },
2945 [ + ]: 1 : (err) => {
2946 : 1 : assert(err instanceof TypeError, `rational_module.sub(1, 2, 3)`);
2947 : 1 : assert.strictEqual(
2948 : 1 : err.message, `Rational: invalid number of arguments`,
2949 : 1 : `rational_module.sub(1, 2, 3)`
2950 : 1 : );
2951 : 1 : return true;
2952 : 1 : }
2953 : 1 : );
2954 : 1 : };
2955 : 1 : testData.desc = 'Rational sub() ... invalid test#2';
2956 : 1 :
2957 : 1 : testData.skip = false;
2958 : 1 : suites.get(suiteDesc).push(testData);
2959 : 1 :
2960 : 1 : // TEST ### - Rational sub() ... invalid test#3
2961 : 1 : testData = {};
2962 [ + ]: 1 : testData.method = () => {
2963 : 1 : let r = new rational_addon.Rational();
2964 : 1 : assert.throws(
2965 [ + ]: 1 : () => {
2966 : 1 : r.sub({});
2967 : 1 : },
2968 [ + ]: 1 : (err) => {
2969 : 1 : assert(err instanceof TypeError, `rational_addon.sub({})`);
2970 : 1 : assert.strictEqual(
2971 : 1 : err.message, `Rational: invalid argument`,
2972 : 1 : `rational_addon.sub({})`
2973 : 1 : );
2974 : 1 : return true;
2975 : 1 : }
2976 : 1 : );
2977 : 1 :
2978 : 1 : r = new rational_module.Rational();
2979 : 1 : assert.throws(
2980 [ + ]: 1 : () => {
2981 : 1 : r.sub({});
2982 : 1 : },
2983 [ + ]: 1 : (err) => {
2984 : 1 : assert(err instanceof TypeError, `rational_module.sub({})`);
2985 : 1 : assert.strictEqual(
2986 : 1 : err.message, `Rational: invalid argument`,
2987 : 1 : `rational_module.sub({})`
2988 : 1 : );
2989 : 1 : return true;
2990 : 1 : }
2991 : 1 : );
2992 : 1 : };
2993 : 1 : testData.desc = 'Rational sub() ... invalid test#3';
2994 : 1 :
2995 : 1 : testData.skip = false;
2996 : 1 : suites.get(suiteDesc).push(testData);
2997 : 1 :
2998 : 1 : // TEST ### - Rational sub() ... invalid test#4
2999 : 1 : testData = {};
3000 [ + ]: 1 : testData.method = () => {
3001 : 1 : let r = new rational_addon.Rational();
3002 : 1 : assert.throws(
3003 [ + ]: 1 : () => {
3004 : 1 : r.sub(NaN);
3005 : 1 : },
3006 [ + ]: 1 : (err) => {
3007 : 1 : assert(err instanceof TypeError, `rational_addon.sub(NaN)`);
3008 : 1 : assert.strictEqual(
3009 : 1 : err.message, `Rational: invalid argument`,
3010 : 1 : `rational_addon.sub(NaN)`
3011 : 1 : );
3012 : 1 : return true;
3013 : 1 : }
3014 : 1 : );
3015 : 1 :
3016 : 1 : r = new rational_module.Rational();
3017 : 1 : assert.throws(
3018 [ + ]: 1 : () => {
3019 : 1 : r.sub(NaN);
3020 : 1 : },
3021 [ + ]: 1 : (err) => {
3022 : 1 : assert(err instanceof TypeError, `rational_module.sub(NaN)`);
3023 : 1 : assert.strictEqual(
3024 : 1 : err.message, `Rational: invalid argument`,
3025 : 1 : `rational_module.sub(NaN)`
3026 : 1 : );
3027 : 1 : return true;
3028 : 1 : }
3029 : 1 : );
3030 : 1 : };
3031 : 1 : testData.desc = 'Rational sub() ... invalid test#4';
3032 : 1 :
3033 : 1 : testData.skip = false;
3034 : 1 : suites.get(suiteDesc).push(testData);
3035 : 1 :
3036 : 1 : // TEST ### - Rational sub() ... invalid test#5
3037 : 1 : testData = {};
3038 [ + ]: 1 : testData.method = () => {
3039 : 1 : let r = new rational_addon.Rational();
3040 : 1 : assert.throws(
3041 [ + ]: 1 : () => {
3042 : 1 : r.sub(1n);
3043 : 1 : },
3044 [ + ]: 1 : (err) => {
3045 : 1 : assert(err instanceof TypeError, `rational_addon.sub(1n)`);
3046 : 1 : assert.strictEqual(
3047 : 1 : err.message, `Rational: BigInt type is not accepted`,
3048 : 1 : `rational_addon.sub(1n)`
3049 : 1 : );
3050 : 1 : return true;
3051 : 1 : }
3052 : 1 : );
3053 : 1 :
3054 : 1 : r = new rational_module.Rational();
3055 : 1 : assert.throws(
3056 [ + ]: 1 : () => {
3057 : 1 : r.sub(1n);
3058 : 1 : },
3059 [ + ]: 1 : (err) => {
3060 : 1 : assert(err instanceof TypeError, `rational_module.sub(1n)`);
3061 : 1 : assert.strictEqual(
3062 : 1 : err.message, `Rational: BigInt type is not accepted`,
3063 : 1 : `rational_module.sub(1n)`
3064 : 1 : );
3065 : 1 : return true;
3066 : 1 : }
3067 : 1 : );
3068 : 1 : };
3069 : 1 : testData.desc = 'Rational sub() ... invalid test#5';
3070 : 1 :
3071 : 1 : testData.skip = false;
3072 : 1 : suites.get(suiteDesc).push(testData);
3073 : 1 :
3074 : 1 : // TEST ### - Rational sub() ... invalid test#6
3075 : 1 : testData = {};
3076 [ + ]: 1 : testData.method = () => {
3077 : 1 : let r = new rational_addon.Rational();
3078 : 1 : assert.throws(
3079 [ + ]: 1 : () => {
3080 : 1 : r.sub('xxx');
3081 : 1 : },
3082 [ + ]: 1 : (err) => {
3083 : 1 : assert(err instanceof TypeError, `rational_addon.sub('xxx')`);
3084 : 1 : assert.strictEqual(
3085 : 1 : err.message, `Rational: invalid argument`,
3086 : 1 : `rational_addon.sub('xxx')`
3087 : 1 : );
3088 : 1 : return true;
3089 : 1 : }
3090 : 1 : );
3091 : 1 :
3092 : 1 : r = new rational_module.Rational();
3093 : 1 : assert.throws(
3094 [ + ]: 1 : () => {
3095 : 1 : r.sub('xxx');
3096 : 1 : },
3097 [ + ]: 1 : (err) => {
3098 : 1 : assert(err instanceof TypeError, `rational_module.sub('xxx')`);
3099 : 1 : assert.strictEqual(
3100 : 1 : err.message, `Rational: invalid argument`,
3101 : 1 : `rational_module.sub('xxx')`
3102 : 1 : );
3103 : 1 : return true;
3104 : 1 : }
3105 : 1 : );
3106 : 1 : };
3107 : 1 : testData.desc = 'Rational sub() ... invalid test#6';
3108 : 1 :
3109 : 1 : testData.skip = false;
3110 : 1 : suites.get(suiteDesc).push(testData);
3111 : 1 :
3112 : 1 : // TEST SUITE #10 - Rational mul() function
3113 : 1 : suiteDesc = 'Rational mul() function';
3114 : 1 : suites.set(suiteDesc, []);
3115 : 1 :
3116 : 1 : // TEST ### - Rational mul() ... valid test#1
3117 : 1 : testData = {};
3118 [ + ]: 1 : testData.method = () => {
3119 : 1 : let r = new rational_addon.Rational(3, 2);
3120 : 1 : let s = r.mul(new rational_addon.Rational(1, 2));
3121 : 1 :
3122 : 1 : assert.strictEqual(r.getNumerator(), 3);
3123 : 1 : assert.strictEqual(r.getDenominator(), 2);
3124 : 1 :
3125 : 1 : assert.strictEqual(s.getNumerator(), 3);
3126 : 1 : assert.strictEqual(s.getDenominator(), 4);
3127 : 1 :
3128 : 1 : assert(r !== s);
3129 : 1 :
3130 : 1 : r = new rational_module.Rational(3, 2);
3131 : 1 : s = r.mul(new rational_module.Rational(1, 2));
3132 : 1 :
3133 : 1 : assert.strictEqual(r.getNumerator(), 3);
3134 : 1 : assert.strictEqual(r.getDenominator(), 2);
3135 : 1 :
3136 : 1 : assert.strictEqual(s.getNumerator(), 3);
3137 : 1 : assert.strictEqual(s.getDenominator(), 4);
3138 : 1 :
3139 : 1 : assert(r !== s);
3140 : 1 : };
3141 : 1 : testData.desc = 'Rational mul() ... valid test#1';
3142 : 1 :
3143 : 1 : testData.skip = false;
3144 : 1 : suites.get(suiteDesc).push(testData);
3145 : 1 :
3146 : 1 : // TEST ### - Rational mul() ... valid test#2
3147 : 1 : testData = {};
3148 [ + ]: 1 : testData.method = () => {
3149 : 1 : let r = new rational_addon.Rational(3, 2);
3150 : 1 : let s = r.mul('1');
3151 : 1 :
3152 : 1 : assert.strictEqual(r.getNumerator(), 3);
3153 : 1 : assert.strictEqual(r.getDenominator(), 2);
3154 : 1 :
3155 : 1 : assert.strictEqual(s.getNumerator(), 3);
3156 : 1 : assert.strictEqual(s.getDenominator(), 2);
3157 : 1 :
3158 : 1 : assert(r !== s);
3159 : 1 :
3160 : 1 : r = new rational_module.Rational(3, 2);
3161 : 1 : s = r.mul('1');
3162 : 1 :
3163 : 1 : assert.strictEqual(r.getNumerator(), 3);
3164 : 1 : assert.strictEqual(r.getDenominator(), 2);
3165 : 1 :
3166 : 1 : assert.strictEqual(r.getNumerator(), 3);
3167 : 1 : assert.strictEqual(r.getDenominator(), 2);
3168 : 1 :
3169 : 1 : assert(r !== s);
3170 : 1 : };
3171 : 1 : testData.desc = 'Rational mul() ... valid test#2';
3172 : 1 :
3173 : 1 : testData.skip = false;
3174 : 1 : suites.get(suiteDesc).push(testData);
3175 : 1 :
3176 : 1 : // TEST ### - Rational mul() ... valid test#3
3177 : 1 : testData = {};
3178 [ + ]: 1 : testData.method = () => {
3179 : 1 : let r = new rational_addon.Rational(3, 2);
3180 : 1 : let s = r.mul('-1');
3181 : 1 :
3182 : 1 : assert.strictEqual(r.getNumerator(), 3);
3183 : 1 : assert.strictEqual(r.getDenominator(), 2);
3184 : 1 :
3185 : 1 : assert.strictEqual(s.getNumerator(), -3);
3186 : 1 : assert.strictEqual(s.getDenominator(), 2);
3187 : 1 :
3188 : 1 : assert(r !== s);
3189 : 1 :
3190 : 1 : r = new rational_module.Rational(3, 2);
3191 : 1 : s = r.mul('-1');
3192 : 1 :
3193 : 1 : assert.strictEqual(r.getNumerator(), 3);
3194 : 1 : assert.strictEqual(r.getDenominator(), 2);
3195 : 1 :
3196 : 1 : assert.strictEqual(s.getNumerator(), -3);
3197 : 1 : assert.strictEqual(s.getDenominator(), 2);
3198 : 1 :
3199 : 1 : assert(r !== s);
3200 : 1 : };
3201 : 1 : testData.desc = 'Rational mul() ... valid test#3';
3202 : 1 :
3203 : 1 : testData.skip = false;
3204 : 1 : suites.get(suiteDesc).push(testData);
3205 : 1 :
3206 : 1 : // TEST ### - Rational mul() ... invalid test#1
3207 : 1 : testData = {};
3208 [ + ]: 1 : testData.method = () => {
3209 : 1 : let r = new rational_addon.Rational();
3210 : 1 : assert.throws(
3211 [ + ]: 1 : () => {
3212 : 1 : r.mul();
3213 : 1 : },
3214 [ + ]: 1 : (err) => {
3215 : 1 : assert(err instanceof TypeError, `rational_addon.mul()`);
3216 : 1 : assert.strictEqual(
3217 : 1 : err.message, `Rational: invalid number of arguments`,
3218 : 1 : `rational_addon.mul()`
3219 : 1 : );
3220 : 1 : return true;
3221 : 1 : }
3222 : 1 : );
3223 : 1 :
3224 : 1 : r = new rational_module.Rational();
3225 : 1 : assert.throws(
3226 [ + ]: 1 : () => {
3227 : 1 : r.mul();
3228 : 1 : },
3229 [ + ]: 1 : (err) => {
3230 : 1 : assert(err instanceof TypeError, `rational_module.mul()`);
3231 : 1 : assert.strictEqual(
3232 : 1 : err.message, `Rational: invalid number of arguments`,
3233 : 1 : `rational_module.mul()`
3234 : 1 : );
3235 : 1 : return true;
3236 : 1 : }
3237 : 1 : );
3238 : 1 : };
3239 : 1 : testData.desc = 'Rational mul() ... invalid test#1';
3240 : 1 :
3241 : 1 : testData.skip = false;
3242 : 1 : suites.get(suiteDesc).push(testData);
3243 : 1 :
3244 : 1 : // TEST ### - Rational mul() ... invalid test#2
3245 : 1 : testData = {};
3246 [ + ]: 1 : testData.method = () => {
3247 : 1 : let r = new rational_addon.Rational();
3248 : 1 : assert.throws(
3249 [ + ]: 1 : () => {
3250 : 1 : r.mul(1, 2, 3);
3251 : 1 : },
3252 [ + ]: 1 : (err) => {
3253 : 1 : assert(err instanceof TypeError, `rational_addon.mul(1, 2, 3)`);
3254 : 1 : assert.strictEqual(
3255 : 1 : err.message, `Rational: invalid number of arguments`,
3256 : 1 : `rational_addon.mul(1, 2, 3)`
3257 : 1 : );
3258 : 1 : return true;
3259 : 1 : }
3260 : 1 : );
3261 : 1 :
3262 : 1 : r = new rational_module.Rational();
3263 : 1 : assert.throws(
3264 [ + ]: 1 : () => {
3265 : 1 : r.mul(1, 2, 3);
3266 : 1 : },
3267 [ + ]: 1 : (err) => {
3268 : 1 : assert(err instanceof TypeError, `rational_module.mul(1, 2, 3)`);
3269 : 1 : assert.strictEqual(
3270 : 1 : err.message, `Rational: invalid number of arguments`,
3271 : 1 : `rational_module.mul(1, 2, 3)`
3272 : 1 : );
3273 : 1 : return true;
3274 : 1 : }
3275 : 1 : );
3276 : 1 : };
3277 : 1 : testData.desc = 'Rational mul() ... invalid test#2';
3278 : 1 :
3279 : 1 : testData.skip = false;
3280 : 1 : suites.get(suiteDesc).push(testData);
3281 : 1 :
3282 : 1 : // TEST ### - Rational mul() ... invalid test#3
3283 : 1 : testData = {};
3284 [ + ]: 1 : testData.method = () => {
3285 : 1 : let r = new rational_addon.Rational();
3286 : 1 : assert.throws(
3287 [ + ]: 1 : () => {
3288 : 1 : r.mul({});
3289 : 1 : },
3290 [ + ]: 1 : (err) => {
3291 : 1 : assert(err instanceof TypeError, `rational_addon.mul({})`);
3292 : 1 : assert.strictEqual(
3293 : 1 : err.message, `Rational: invalid argument`,
3294 : 1 : `rational_addon.mul({})`
3295 : 1 : );
3296 : 1 : return true;
3297 : 1 : }
3298 : 1 : );
3299 : 1 :
3300 : 1 : r = new rational_module.Rational();
3301 : 1 : assert.throws(
3302 [ + ]: 1 : () => {
3303 : 1 : r.mul({});
3304 : 1 : },
3305 [ + ]: 1 : (err) => {
3306 : 1 : assert(err instanceof TypeError, `rational_module.mul({})`);
3307 : 1 : assert.strictEqual(
3308 : 1 : err.message, `Rational: invalid argument`,
3309 : 1 : `rational_module.mul({})`
3310 : 1 : );
3311 : 1 : return true;
3312 : 1 : }
3313 : 1 : );
3314 : 1 : };
3315 : 1 : testData.desc = 'Rational mul() ... invalid test#3';
3316 : 1 :
3317 : 1 : testData.skip = false;
3318 : 1 : suites.get(suiteDesc).push(testData);
3319 : 1 :
3320 : 1 : // TEST ### - Rational mul() ... invalid test#4
3321 : 1 : testData = {};
3322 [ + ]: 1 : testData.method = () => {
3323 : 1 : let r = new rational_addon.Rational();
3324 : 1 : assert.throws(
3325 [ + ]: 1 : () => {
3326 : 1 : r.mul(NaN);
3327 : 1 : },
3328 [ + ]: 1 : (err) => {
3329 : 1 : assert(err instanceof TypeError, `rational_addon.mul(NaN)`);
3330 : 1 : assert.strictEqual(
3331 : 1 : err.message, `Rational: invalid argument`,
3332 : 1 : `rational_addon.mul(NaN)`
3333 : 1 : );
3334 : 1 : return true;
3335 : 1 : }
3336 : 1 : );
3337 : 1 :
3338 : 1 : r = new rational_module.Rational();
3339 : 1 : assert.throws(
3340 [ + ]: 1 : () => {
3341 : 1 : r.mul(NaN);
3342 : 1 : },
3343 [ + ]: 1 : (err) => {
3344 : 1 : assert(err instanceof TypeError, `rational_module.mul(NaN)`);
3345 : 1 : assert.strictEqual(
3346 : 1 : err.message, `Rational: invalid argument`,
3347 : 1 : `rational_module.mul(NaN)`
3348 : 1 : );
3349 : 1 : return true;
3350 : 1 : }
3351 : 1 : );
3352 : 1 : };
3353 : 1 : testData.desc = 'Rational mul() ... invalid test#4';
3354 : 1 :
3355 : 1 : testData.skip = false;
3356 : 1 : suites.get(suiteDesc).push(testData);
3357 : 1 :
3358 : 1 : // TEST ### - Rational mul() ... invalid test#5
3359 : 1 : testData = {};
3360 [ + ]: 1 : testData.method = () => {
3361 : 1 : let r = new rational_addon.Rational();
3362 : 1 : assert.throws(
3363 [ + ]: 1 : () => {
3364 : 1 : r.mul(1n);
3365 : 1 : },
3366 [ + ]: 1 : (err) => {
3367 : 1 : assert(err instanceof TypeError, `rational_addon.mul(1n)`);
3368 : 1 : assert.strictEqual(
3369 : 1 : err.message, `Rational: BigInt type is not accepted`,
3370 : 1 : `rational_addon.mul(1n)`
3371 : 1 : );
3372 : 1 : return true;
3373 : 1 : }
3374 : 1 : );
3375 : 1 :
3376 : 1 : r = new rational_module.Rational();
3377 : 1 : assert.throws(
3378 [ + ]: 1 : () => {
3379 : 1 : r.mul(1n);
3380 : 1 : },
3381 [ + ]: 1 : (err) => {
3382 : 1 : assert(err instanceof TypeError, `rational_module.mul(1n)`);
3383 : 1 : assert.strictEqual(
3384 : 1 : err.message, `Rational: BigInt type is not accepted`,
3385 : 1 : `rational_module.mul(1n)`
3386 : 1 : );
3387 : 1 : return true;
3388 : 1 : }
3389 : 1 : );
3390 : 1 : };
3391 : 1 : testData.desc = 'Rational mul() ... invalid test#5';
3392 : 1 :
3393 : 1 : testData.skip = false;
3394 : 1 : suites.get(suiteDesc).push(testData);
3395 : 1 :
3396 : 1 : // TEST ### - Rational mul() ... invalid test#6
3397 : 1 : testData = {};
3398 [ + ]: 1 : testData.method = () => {
3399 : 1 : let r = new rational_addon.Rational();
3400 : 1 : assert.throws(
3401 [ + ]: 1 : () => {
3402 : 1 : r.mul('xxx');
3403 : 1 : },
3404 [ + ]: 1 : (err) => {
3405 : 1 : assert(err instanceof TypeError, `rational_addon.mul('xxx')`);
3406 : 1 : assert.strictEqual(
3407 : 1 : err.message, `Rational: invalid argument`,
3408 : 1 : `rational_addon.mul('xxx')`
3409 : 1 : );
3410 : 1 : return true;
3411 : 1 : }
3412 : 1 : );
3413 : 1 :
3414 : 1 : r = new rational_module.Rational();
3415 : 1 : assert.throws(
3416 [ + ]: 1 : () => {
3417 : 1 : r.mul('xxx');
3418 : 1 : },
3419 [ + ]: 1 : (err) => {
3420 : 1 : assert(err instanceof TypeError, `rational_module.mul('xxx')`);
3421 : 1 : assert.strictEqual(
3422 : 1 : err.message, `Rational: invalid argument`,
3423 : 1 : `rational_module.mul('xxx')`
3424 : 1 : );
3425 : 1 : return true;
3426 : 1 : }
3427 : 1 : );
3428 : 1 : };
3429 : 1 : testData.desc = 'Rational mul() ... invalid test#6';
3430 : 1 :
3431 : 1 : testData.skip = false;
3432 : 1 : suites.get(suiteDesc).push(testData);
3433 : 1 :
3434 : 1 : // TEST SUITE #11 - Rational div() function
3435 : 1 : suiteDesc = 'Rational div() function';
3436 : 1 : suites.set(suiteDesc, []);
3437 : 1 :
3438 : 1 : // TEST ### - Rational div() ... valid test#1
3439 : 1 : testData = {};
3440 [ + ]: 1 : testData.method = () => {
3441 : 1 : let r = new rational_addon.Rational(3, 2);
3442 : 1 : let s = r.div(new rational_addon.Rational(-1, 2));
3443 : 1 :
3444 : 1 : assert.strictEqual(r.getNumerator(), 3);
3445 : 1 : assert.strictEqual(r.getDenominator(), 2);
3446 : 1 :
3447 : 1 : assert.strictEqual(s.getNumerator(), -3);
3448 : 1 : assert.strictEqual(s.getDenominator(), 1);
3449 : 1 :
3450 : 1 : assert(r !== s);
3451 : 1 :
3452 : 1 : r = new rational_module.Rational(3, 2);
3453 : 1 : s = r.div(new rational_module.Rational(-1, 2));
3454 : 1 :
3455 : 1 : assert.strictEqual(r.getNumerator(), 3);
3456 : 1 : assert.strictEqual(r.getDenominator(), 2);
3457 : 1 :
3458 : 1 : assert.strictEqual(s.getNumerator(), -3);
3459 : 1 : assert.strictEqual(s.getDenominator(), 1);
3460 : 1 :
3461 : 1 : assert(r !== s);
3462 : 1 : };
3463 : 1 : testData.desc = 'Rational div() ... valid test#1';
3464 : 1 :
3465 : 1 : testData.skip = false;
3466 : 1 : suites.get(suiteDesc).push(testData);
3467 : 1 :
3468 : 1 : // TEST ### - Rational div() ... valid test#2
3469 : 1 : testData = {};
3470 [ + ]: 1 : testData.method = () => {
3471 : 1 : let r = new rational_addon.Rational(3, 2);
3472 : 1 : let s = r.div('1');
3473 : 1 :
3474 : 1 : assert.strictEqual(r.getNumerator(), 3);
3475 : 1 : assert.strictEqual(r.getDenominator(), 2);
3476 : 1 :
3477 : 1 : assert.strictEqual(s.getNumerator(), 3);
3478 : 1 : assert.strictEqual(s.getDenominator(), 2);
3479 : 1 :
3480 : 1 : assert(r !== s);
3481 : 1 :
3482 : 1 : r = new rational_module.Rational(3, 2);
3483 : 1 : s = r.div('1');
3484 : 1 :
3485 : 1 : assert.strictEqual(r.getNumerator(), 3);
3486 : 1 : assert.strictEqual(r.getDenominator(), 2);
3487 : 1 :
3488 : 1 : assert.strictEqual(s.getNumerator(), 3);
3489 : 1 : assert.strictEqual(s.getDenominator(), 2);
3490 : 1 :
3491 : 1 : assert(r !== s);
3492 : 1 : };
3493 : 1 : testData.desc = 'Rational div() ... valid test#2';
3494 : 1 :
3495 : 1 : testData.skip = false;
3496 : 1 : suites.get(suiteDesc).push(testData);
3497 : 1 :
3498 : 1 : // TEST ### - Rational div() ... valid test#3
3499 : 1 : testData = {};
3500 [ + ]: 1 : testData.method = () => {
3501 : 1 : let r = new rational_addon.Rational(3, 2);
3502 : 1 : let s = r.div('-1');
3503 : 1 :
3504 : 1 : assert.strictEqual(r.getNumerator(), 3);
3505 : 1 : assert.strictEqual(r.getDenominator(), 2);
3506 : 1 :
3507 : 1 : assert.strictEqual(s.getNumerator(), -3);
3508 : 1 : assert.strictEqual(s.getDenominator(), 2);
3509 : 1 :
3510 : 1 : assert(r !== s);
3511 : 1 :
3512 : 1 : r = new rational_module.Rational(3, 2);
3513 : 1 : s = r.div('-1');
3514 : 1 :
3515 : 1 : assert.strictEqual(r.getNumerator(), 3);
3516 : 1 : assert.strictEqual(r.getDenominator(), 2);
3517 : 1 :
3518 : 1 : assert.strictEqual(s.getNumerator(), -3);
3519 : 1 : assert.strictEqual(s.getDenominator(), 2);
3520 : 1 :
3521 : 1 : assert(r !== s);
3522 : 1 : };
3523 : 1 : testData.desc = 'Rational div() ... valid test#3';
3524 : 1 :
3525 : 1 : testData.skip = false;
3526 : 1 : suites.get(suiteDesc).push(testData);
3527 : 1 :
3528 : 1 : // TEST ### - Rational div() ... invalid test#1
3529 : 1 : testData = {};
3530 [ + ]: 1 : testData.method = () => {
3531 : 1 : let r = new rational_addon.Rational();
3532 : 1 : assert.throws(
3533 [ + ]: 1 : () => {
3534 : 1 : r.div();
3535 : 1 : },
3536 [ + ]: 1 : (err) => {
3537 : 1 : assert(err instanceof TypeError, `rational_addon.div()`);
3538 : 1 : assert.strictEqual(
3539 : 1 : err.message, `Rational: invalid number of arguments`,
3540 : 1 : `rational_addon.div()`
3541 : 1 : );
3542 : 1 : return true;
3543 : 1 : }
3544 : 1 : );
3545 : 1 :
3546 : 1 : r = new rational_module.Rational();
3547 : 1 : assert.throws(
3548 [ + ]: 1 : () => {
3549 : 1 : r.div();
3550 : 1 : },
3551 [ + ]: 1 : (err) => {
3552 : 1 : assert(err instanceof TypeError, `rational_module.div()`);
3553 : 1 : assert.strictEqual(
3554 : 1 : err.message, `Rational: invalid number of arguments`,
3555 : 1 : `rational_module.div()`
3556 : 1 : );
3557 : 1 : return true;
3558 : 1 : }
3559 : 1 : );
3560 : 1 : };
3561 : 1 : testData.desc = 'Rational div() ... invalid test#1';
3562 : 1 :
3563 : 1 : testData.skip = false;
3564 : 1 : suites.get(suiteDesc).push(testData);
3565 : 1 :
3566 : 1 : // TEST ### - Rational div() ... invalid test#2
3567 : 1 : testData = {};
3568 [ + ]: 1 : testData.method = () => {
3569 : 1 : let r = new rational_addon.Rational();
3570 : 1 : assert.throws(
3571 [ + ]: 1 : () => {
3572 : 1 : r.div(1, 2, 3);
3573 : 1 : },
3574 [ + ]: 1 : (err) => {
3575 : 1 : assert(err instanceof TypeError, `rational_addon.div(1, 2, 3)`);
3576 : 1 : assert.strictEqual(
3577 : 1 : err.message, `Rational: invalid number of arguments`,
3578 : 1 : `rational_addon.div(1, 2, 3)`
3579 : 1 : );
3580 : 1 : return true;
3581 : 1 : }
3582 : 1 : );
3583 : 1 :
3584 : 1 : r = new rational_module.Rational();
3585 : 1 : assert.throws(
3586 [ + ]: 1 : () => {
3587 : 1 : r.div(1, 2, 3);
3588 : 1 : },
3589 [ + ]: 1 : (err) => {
3590 : 1 : assert(err instanceof TypeError, `rational_module.div(1, 2, 3)`);
3591 : 1 : assert.strictEqual(
3592 : 1 : err.message, `Rational: invalid number of arguments`,
3593 : 1 : `rational_module.div(1, 2, 3)`
3594 : 1 : );
3595 : 1 : return true;
3596 : 1 : }
3597 : 1 : );
3598 : 1 : };
3599 : 1 : testData.desc = 'Rational div() ... invalid test#2';
3600 : 1 :
3601 : 1 : testData.skip = false;
3602 : 1 : suites.get(suiteDesc).push(testData);
3603 : 1 :
3604 : 1 : // TEST ### - Rational div() ... invalid test#3
3605 : 1 : testData = {};
3606 [ + ]: 1 : testData.method = () => {
3607 : 1 : let r = new rational_addon.Rational();
3608 : 1 : assert.throws(
3609 [ + ]: 1 : () => {
3610 : 1 : r.div({});
3611 : 1 : },
3612 [ + ]: 1 : (err) => {
3613 : 1 : assert(err instanceof TypeError, `rational_addon.div({})`);
3614 : 1 : assert.strictEqual(
3615 : 1 : err.message, `Rational: invalid argument`,
3616 : 1 : `rational_addon.div({})`
3617 : 1 : );
3618 : 1 : return true;
3619 : 1 : }
3620 : 1 : );
3621 : 1 :
3622 : 1 : r = new rational_module.Rational();
3623 : 1 : assert.throws(
3624 [ + ]: 1 : () => {
3625 : 1 : r.div({});
3626 : 1 : },
3627 [ + ]: 1 : (err) => {
3628 : 1 : assert(err instanceof TypeError, `rational_module.div({})`);
3629 : 1 : assert.strictEqual(
3630 : 1 : err.message, `Rational: invalid argument`,
3631 : 1 : `rational_module.div({})`
3632 : 1 : );
3633 : 1 : return true;
3634 : 1 : }
3635 : 1 : );
3636 : 1 : };
3637 : 1 : testData.desc = 'Rational div() ... invalid test#3';
3638 : 1 :
3639 : 1 : testData.skip = false;
3640 : 1 : suites.get(suiteDesc).push(testData);
3641 : 1 :
3642 : 1 : // TEST ### - Rational div() ... invalid test#4
3643 : 1 : testData = {};
3644 [ + ]: 1 : testData.method = () => {
3645 : 1 : let r = new rational_addon.Rational();
3646 : 1 : assert.throws(
3647 [ + ]: 1 : () => {
3648 : 1 : r.div(NaN);
3649 : 1 : },
3650 [ + ]: 1 : (err) => {
3651 : 1 : assert(err instanceof TypeError, `rational_addon.div(NaN)`);
3652 : 1 : assert.strictEqual(
3653 : 1 : err.message, `Rational: invalid argument`,
3654 : 1 : `rational_addon.div(NaN)`
3655 : 1 : );
3656 : 1 : return true;
3657 : 1 : }
3658 : 1 : );
3659 : 1 :
3660 : 1 : r = new rational_module.Rational();
3661 : 1 : assert.throws(
3662 [ + ]: 1 : () => {
3663 : 1 : r.div(NaN);
3664 : 1 : },
3665 [ + ]: 1 : (err) => {
3666 : 1 : assert(err instanceof TypeError, `rational_module.div(NaN)`);
3667 : 1 : assert.strictEqual(
3668 : 1 : err.message, `Rational: invalid argument`,
3669 : 1 : `rational_module.div(NaN)`
3670 : 1 : );
3671 : 1 : return true;
3672 : 1 : }
3673 : 1 : );
3674 : 1 : };
3675 : 1 : testData.desc = 'Rational div() ... invalid test#4';
3676 : 1 :
3677 : 1 : testData.skip = false;
3678 : 1 : suites.get(suiteDesc).push(testData);
3679 : 1 :
3680 : 1 : // TEST ### - Rational div() ... invalid test#5
3681 : 1 : testData = {};
3682 [ + ]: 1 : testData.method = () => {
3683 : 1 : let r = new rational_addon.Rational();
3684 : 1 : assert.throws(
3685 [ + ]: 1 : () => {
3686 : 1 : r.div(1n);
3687 : 1 : },
3688 [ + ]: 1 : (err) => {
3689 : 1 : assert(err instanceof TypeError, `rational_addon.div(1n)`);
3690 : 1 : assert.strictEqual(
3691 : 1 : err.message, `Rational: BigInt type is not accepted`,
3692 : 1 : `rational_addon.div(1n)`
3693 : 1 : );
3694 : 1 : return true;
3695 : 1 : }
3696 : 1 : );
3697 : 1 :
3698 : 1 : r = new rational_module.Rational();
3699 : 1 : assert.throws(
3700 [ + ]: 1 : () => {
3701 : 1 : r.div(1n);
3702 : 1 : },
3703 [ + ]: 1 : (err) => {
3704 : 1 : assert(err instanceof TypeError, `rational_module.div(1n)`);
3705 : 1 : assert.strictEqual(
3706 : 1 : err.message, `Rational: BigInt type is not accepted`,
3707 : 1 : `rational_module.div(1n)`
3708 : 1 : );
3709 : 1 : return true;
3710 : 1 : }
3711 : 1 : );
3712 : 1 : };
3713 : 1 : testData.desc = 'Rational div() ... invalid test#5';
3714 : 1 :
3715 : 1 : testData.skip = false;
3716 : 1 : suites.get(suiteDesc).push(testData);
3717 : 1 :
3718 : 1 : // TEST ### - Rational div() ... invalid test#6
3719 : 1 : testData = {};
3720 [ + ]: 1 : testData.method = () => {
3721 : 1 : let r = new rational_addon.Rational();
3722 : 1 : assert.throws(
3723 [ + ]: 1 : () => {
3724 : 1 : r.div('xxx');
3725 : 1 : },
3726 [ + ]: 1 : (err) => {
3727 : 1 : assert(err instanceof TypeError, `rational_addon.div('xxx')`);
3728 : 1 : assert.strictEqual(
3729 : 1 : err.message, `Rational: invalid argument`,
3730 : 1 : `rational_addon.div('xxx')`
3731 : 1 : );
3732 : 1 : return true;
3733 : 1 : }
3734 : 1 : );
3735 : 1 :
3736 : 1 : r = new rational_module.Rational();
3737 : 1 : assert.throws(
3738 [ + ]: 1 : () => {
3739 : 1 : r.div('xxx');
3740 : 1 : },
3741 [ + ]: 1 : (err) => {
3742 : 1 : assert(err instanceof TypeError, `rational_module.div('xxx')`);
3743 : 1 : assert.strictEqual(
3744 : 1 : err.message, `Rational: invalid argument`,
3745 : 1 : `rational_module.div('xxx')`
3746 : 1 : );
3747 : 1 : return true;
3748 : 1 : }
3749 : 1 : );
3750 : 1 : };
3751 : 1 : testData.desc = 'Rational div() ... invalid test#6';
3752 : 1 :
3753 : 1 : testData.skip = false;
3754 : 1 : suites.get(suiteDesc).push(testData);
3755 : 1 :
3756 : 1 : // TEST ### - Rational div() ... invalid test#7
3757 : 1 : testData = {};
3758 [ + ]: 1 : testData.method = () => {
3759 : 1 : let r = new rational_addon.Rational(3, 2);
3760 : 1 : assert.throws(
3761 [ + ]: 1 : () => {
3762 : 1 : r.div(new rational_addon.Rational());
3763 : 1 : },
3764 [ + ]: 1 : (err) => {
3765 : 1 : assert(err instanceof TypeError, `rational_addon.div(new rational_addon.Rational())`);
3766 : 1 : assert.strictEqual(
3767 : 1 : err.message, `Rational: division by zero`,
3768 : 1 : `rational_addon.div(new rational_addon.Rational())`
3769 : 1 : );
3770 : 1 : return true;
3771 : 1 : }
3772 : 1 : );
3773 : 1 :
3774 : 1 : r = new rational_module.Rational(3, 2);
3775 : 1 : assert.throws(
3776 [ + ]: 1 : () => {
3777 : 1 : r.div(new rational_module.Rational());
3778 : 1 : },
3779 [ + ]: 1 : (err) => {
3780 : 1 : assert(err instanceof TypeError, `rational_module.div(new rational_module.Rational())`);
3781 : 1 : assert.strictEqual(
3782 : 1 : err.message, `Rational: division by zero`,
3783 : 1 : `rational_module.div(new rational_module.Rational())`
3784 : 1 : );
3785 : 1 : return true;
3786 : 1 : }
3787 : 1 : );
3788 : 1 : };
3789 : 1 : testData.desc = 'Rational div() ... invalid test#7';
3790 : 1 :
3791 : 1 : testData.skip = false;
3792 : 1 : suites.get(suiteDesc).push(testData);
3793 : 1 :
3794 : 1 : // TEST ### - Rational div() ... invalid test#8
3795 : 1 : testData = {};
3796 [ + ]: 1 : testData.method = () => {
3797 : 1 : let r = new rational_addon.Rational();
3798 : 1 : assert.throws(
3799 [ + ]: 1 : () => {
3800 : 1 : r.div(0);
3801 : 1 : },
3802 [ + ]: 1 : (err) => {
3803 : 1 : assert(err instanceof TypeError, `rational_addon.div(0)`);
3804 : 1 : assert.strictEqual(
3805 : 1 : err.message, `Rational: division by zero`,
3806 : 1 : `rational_addon.div(0)`
3807 : 1 : );
3808 : 1 : return true;
3809 : 1 : }
3810 : 1 : );
3811 : 1 :
3812 : 1 : r = new rational_module.Rational();
3813 : 1 : assert.throws(
3814 [ + ]: 1 : () => {
3815 : 1 : r.div(0);
3816 : 1 : },
3817 [ + ]: 1 : (err) => {
3818 : 1 : assert(err instanceof TypeError, `rational_module.div(0)`);
3819 : 1 : assert.strictEqual(
3820 : 1 : err.message, `Rational: division by zero`,
3821 : 1 : `rational_module.div(0)`
3822 : 1 : );
3823 : 1 : return true;
3824 : 1 : }
3825 : 1 : );
3826 : 1 : };
3827 : 1 : testData.desc = 'Rational div() ... invalid test#8';
3828 : 1 :
3829 : 1 : testData.skip = false;
3830 : 1 : suites.get(suiteDesc).push(testData);
3831 : 1 :
3832 : 1 : // TEST SUITE #12 - Rational pow() function
3833 : 1 : suiteDesc = 'Rational pow() function';
3834 : 1 : suites.set(suiteDesc, []);
3835 : 1 :
3836 : 1 : // TEST ### - Rational pow() ... valid test#1
3837 : 1 : testData = {};
3838 [ + ]: 1 : testData.method = () => {
3839 : 1 : let r = new rational_addon.Rational(3, 2);
3840 : 1 : let s = r.pow(0);
3841 : 1 :
3842 : 1 : assert.strictEqual(r.getNumerator(), 3);
3843 : 1 : assert.strictEqual(r.getDenominator(), 2);
3844 : 1 :
3845 : 1 : assert.strictEqual(s.getNumerator(), 1);
3846 : 1 : assert.strictEqual(s.getDenominator(), 1);
3847 : 1 :
3848 : 1 : assert(r !== s);
3849 : 1 :
3850 : 1 : r = new rational_module.Rational(3, 2);
3851 : 1 : s = r.pow(0);
3852 : 1 :
3853 : 1 : assert.strictEqual(r.getNumerator(), 3);
3854 : 1 : assert.strictEqual(r.getDenominator(), 2);
3855 : 1 :
3856 : 1 : assert.strictEqual(s.getNumerator(), 1);
3857 : 1 : assert.strictEqual(s.getDenominator(), 1);
3858 : 1 :
3859 : 1 : assert(r !== s);
3860 : 1 : };
3861 : 1 : testData.desc = 'Rational pow() ... valid test#1';
3862 : 1 :
3863 : 1 : testData.skip = false;
3864 : 1 : suites.get(suiteDesc).push(testData);
3865 : 1 :
3866 : 1 : // TEST ### - Rational pow() ... valid test#2
3867 : 1 : testData = {};
3868 [ + ]: 1 : testData.method = () => {
3869 : 1 : let r = new rational_addon.Rational(-3, 2);
3870 : 1 : let s = r.pow(1);
3871 : 1 :
3872 : 1 : assert.strictEqual(r.getNumerator(), -3);
3873 : 1 : assert.strictEqual(r.getDenominator(), 2);
3874 : 1 :
3875 : 1 : assert.strictEqual(s.getNumerator(), -3);
3876 : 1 : assert.strictEqual(s.getDenominator(), 2);
3877 : 1 :
3878 : 1 : assert(r !== s);
3879 : 1 :
3880 : 1 : r = new rational_module.Rational(-3, 2);
3881 : 1 : s = r.pow(1);
3882 : 1 :
3883 : 1 : assert.strictEqual(r.getNumerator(), -3);
3884 : 1 : assert.strictEqual(r.getDenominator(), 2);
3885 : 1 :
3886 : 1 : assert.strictEqual(s.getNumerator(), -3);
3887 : 1 : assert.strictEqual(s.getDenominator(), 2);
3888 : 1 :
3889 : 1 : assert(r !== s);
3890 : 1 : };
3891 : 1 : testData.desc = 'Rational pow() ... valid test#2';
3892 : 1 :
3893 : 1 : testData.skip = false;
3894 : 1 : suites.get(suiteDesc).push(testData);
3895 : 1 :
3896 : 1 : // TEST ### - Rational pow() ... valid test#3
3897 : 1 : testData = {};
3898 [ + ]: 1 : testData.method = () => {
3899 : 1 : let r = new rational_addon.Rational(-3, 2);
3900 : 1 : let s = r.pow(2);
3901 : 1 :
3902 : 1 : assert.strictEqual(r.getNumerator(), -3);
3903 : 1 : assert.strictEqual(r.getDenominator(), 2);
3904 : 1 :
3905 : 1 : assert.strictEqual(s.getNumerator(), 9);
3906 : 1 : assert.strictEqual(s.getDenominator(), 4);
3907 : 1 :
3908 : 1 : assert(r !== s);
3909 : 1 :
3910 : 1 : r = new rational_module.Rational(-3, 2);
3911 : 1 : s = r.pow(2);
3912 : 1 :
3913 : 1 : assert.strictEqual(r.getNumerator(), -3);
3914 : 1 : assert.strictEqual(r.getDenominator(), 2);
3915 : 1 :
3916 : 1 : assert.strictEqual(s.getNumerator(), 9);
3917 : 1 : assert.strictEqual(s.getDenominator(), 4);
3918 : 1 :
3919 : 1 : assert(r !== s);
3920 : 1 : };
3921 : 1 : testData.desc = 'Rational pow() ... valid test#3';
3922 : 1 :
3923 : 1 : testData.skip = false;
3924 : 1 : suites.get(suiteDesc).push(testData);
3925 : 1 :
3926 : 1 : // TEST ### - Rational pow() ... valid test#4
3927 : 1 : testData = {};
3928 [ + ]: 1 : testData.method = () => {
3929 : 1 : let r = new rational_addon.Rational(-3, 2);
3930 : 1 : let s = r.pow(-1);
3931 : 1 :
3932 : 1 : assert.strictEqual(r.getNumerator(), -3);
3933 : 1 : assert.strictEqual(r.getDenominator(), 2);
3934 : 1 :
3935 : 1 : assert.strictEqual(s.getNumerator(), -2);
3936 : 1 : assert.strictEqual(s.getDenominator(), 3);
3937 : 1 :
3938 : 1 : assert(r !== s);
3939 : 1 :
3940 : 1 : r = new rational_module.Rational(-3, 2);
3941 : 1 : s = r.pow(-1);
3942 : 1 :
3943 : 1 : assert.strictEqual(r.getNumerator(), -3);
3944 : 1 : assert.strictEqual(r.getDenominator(), 2);
3945 : 1 :
3946 : 1 : assert.strictEqual(s.getNumerator(), -2);
3947 : 1 : assert.strictEqual(s.getDenominator(), 3);
3948 : 1 :
3949 : 1 : assert(r !== s);
3950 : 1 : };
3951 : 1 : testData.desc = 'Rational pow() ... valid test#4';
3952 : 1 :
3953 : 1 : testData.skip = false;
3954 : 1 : suites.get(suiteDesc).push(testData);
3955 : 1 :
3956 : 1 : // TEST ### - Rational pow() ... valid test#5
3957 : 1 : testData = {};
3958 [ + ]: 1 : testData.method = () => {
3959 : 1 : let r = new rational_addon.Rational(-3, 2);
3960 : 1 : let s = r.pow(-2);
3961 : 1 :
3962 : 1 : assert.strictEqual(r.getNumerator(), -3);
3963 : 1 : assert.strictEqual(r.getDenominator(), 2);
3964 : 1 :
3965 : 1 : assert.strictEqual(s.getNumerator(), 4);
3966 : 1 : assert.strictEqual(s.getDenominator(), 9);
3967 : 1 :
3968 : 1 : assert(r !== s);
3969 : 1 :
3970 : 1 : r = new rational_module.Rational(-3, 2);
3971 : 1 : s = r.pow(-2);
3972 : 1 :
3973 : 1 : assert.strictEqual(r.getNumerator(), -3);
3974 : 1 : assert.strictEqual(r.getDenominator(), 2);
3975 : 1 :
3976 : 1 : assert.strictEqual(s.getNumerator(), 4);
3977 : 1 : assert.strictEqual(s.getDenominator(), 9);
3978 : 1 :
3979 : 1 : assert(r !== s);
3980 : 1 : };
3981 : 1 : testData.desc = 'Rational pow() ... valid test#5';
3982 : 1 :
3983 : 1 : testData.skip = false;
3984 : 1 : suites.get(suiteDesc).push(testData);
3985 : 1 :
3986 : 1 : // TEST ### - Rational pow() ... invalid test#1
3987 : 1 : testData = {};
3988 [ + ]: 1 : testData.method = () => {
3989 : 1 : let r = new rational_addon.Rational(3, 2);
3990 : 1 : assert.throws(
3991 [ + ]: 1 : () => {
3992 : 1 : r.pow();
3993 : 1 : },
3994 [ + ]: 1 : (err) => {
3995 : 1 : assert(err instanceof TypeError, `rational_addon.pow()`);
3996 : 1 : assert.strictEqual(
3997 : 1 : err.message, `Rational: invalid number of arguments`,
3998 : 1 : `rational_addon.pow()`
3999 : 1 : );
4000 : 1 : return true;
4001 : 1 : }
4002 : 1 : );
4003 : 1 :
4004 : 1 : r = new rational_module.Rational(3, 2);
4005 : 1 : assert.throws(
4006 [ + ]: 1 : () => {
4007 : 1 : r.pow();
4008 : 1 : },
4009 [ + ]: 1 : (err) => {
4010 : 1 : assert(err instanceof TypeError, `rational_module.pow()`);
4011 : 1 : assert.strictEqual(
4012 : 1 : err.message, `Rational: invalid number of arguments`,
4013 : 1 : `rational_module.pow()`
4014 : 1 : );
4015 : 1 : return true;
4016 : 1 : }
4017 : 1 : );
4018 : 1 : };
4019 : 1 : testData.desc = 'Rational pow() ... invalid test#1';
4020 : 1 :
4021 : 1 : testData.skip = false;
4022 : 1 : suites.get(suiteDesc).push(testData);
4023 : 1 :
4024 : 1 : // TEST ### - Rational pow() ... invalid test#2
4025 : 1 : testData = {};
4026 [ + ]: 1 : testData.method = () => {
4027 : 1 : let r = new rational_addon.Rational(3, 2);
4028 : 1 : assert.throws(
4029 [ + ]: 1 : () => {
4030 : 1 : r.pow(1, 2);
4031 : 1 : },
4032 [ + ]: 1 : (err) => {
4033 : 1 : assert(err instanceof TypeError, `rational_addon.pow(1, 2)`);
4034 : 1 : assert.strictEqual(
4035 : 1 : err.message, `Rational: invalid number of arguments`,
4036 : 1 : `rational_addon.pow(1, 2)`
4037 : 1 : );
4038 : 1 : return true;
4039 : 1 : }
4040 : 1 : );
4041 : 1 :
4042 : 1 : r = new rational_module.Rational(3, 2);
4043 : 1 : assert.throws(
4044 [ + ]: 1 : () => {
4045 : 1 : r.pow(1, 2);
4046 : 1 : },
4047 [ + ]: 1 : (err) => {
4048 : 1 : assert(err instanceof TypeError, `rational_module.pow(1, 2)`);
4049 : 1 : assert.strictEqual(
4050 : 1 : err.message, `Rational: invalid number of arguments`,
4051 : 1 : `rational_module.pow(1, 2)`
4052 : 1 : );
4053 : 1 : return true;
4054 : 1 : }
4055 : 1 : );
4056 : 1 : };
4057 : 1 : testData.desc = 'Rational pow() ... invalid test#2';
4058 : 1 :
4059 : 1 : testData.skip = false;
4060 : 1 : suites.get(suiteDesc).push(testData);
4061 : 1 :
4062 : 1 : // TEST ### - Rational pow() ... invalid test#3
4063 : 1 : testData = {};
4064 [ + ]: 1 : testData.method = () => {
4065 : 1 : let r = new rational_addon.Rational(3, 2);
4066 : 1 : assert.throws(
4067 [ + ]: 1 : () => {
4068 : 1 : r.pow({});
4069 : 1 : },
4070 [ + ]: 1 : (err) => {
4071 : 1 : assert(err instanceof TypeError, `rational_addon.pow({})`);
4072 : 1 : assert.strictEqual(
4073 : 1 : err.message, `Rational: invalid argument`,
4074 : 1 : `rational_addon.pow({})`
4075 : 1 : );
4076 : 1 : return true;
4077 : 1 : }
4078 : 1 : );
4079 : 1 :
4080 : 1 : r = new rational_module.Rational(3, 2);
4081 : 1 : assert.throws(
4082 [ + ]: 1 : () => {
4083 : 1 : r.pow({});
4084 : 1 : },
4085 [ + ]: 1 : (err) => {
4086 : 1 : assert(err instanceof TypeError, `rational_module.pow({})`);
4087 : 1 : assert.strictEqual(
4088 : 1 : err.message, `Rational: invalid argument`,
4089 : 1 : `rational_module.pow({})`
4090 : 1 : );
4091 : 1 : return true;
4092 : 1 : }
4093 : 1 : );
4094 : 1 : };
4095 : 1 : testData.desc = 'Rational pow() ... invalid test#3';
4096 : 1 :
4097 : 1 : testData.skip = false;
4098 : 1 : suites.get(suiteDesc).push(testData);
4099 : 1 :
4100 : 1 : // TEST ### - Rational pow() ... invalid test#4
4101 : 1 : testData = {};
4102 [ + ]: 1 : testData.method = () => {
4103 : 1 : let r = new rational_addon.Rational(3, 2);
4104 : 1 : assert.throws(
4105 [ + ]: 1 : () => {
4106 : 1 : r.pow(1n);
4107 : 1 : },
4108 [ + ]: 1 : (err) => {
4109 : 1 : assert(err instanceof TypeError, `rational_addon.pow(1n)`);
4110 : 1 : assert.strictEqual(
4111 : 1 : err.message, `Rational: BigInt type is not accepted`,
4112 : 1 : `rational_addon.pow(1n)`
4113 : 1 : );
4114 : 1 : return true;
4115 : 1 : }
4116 : 1 : );
4117 : 1 :
4118 : 1 : r = new rational_module.Rational(3, 2);
4119 : 1 : assert.throws(
4120 [ + ]: 1 : () => {
4121 : 1 : r.pow(1n);
4122 : 1 : },
4123 [ + ]: 1 : (err) => {
4124 : 1 : assert(err instanceof TypeError, `rational_module.pow(1n)`);
4125 : 1 : assert.strictEqual(
4126 : 1 : err.message, `Rational: BigInt type is not accepted`,
4127 : 1 : `rational_module.pow(1n)`
4128 : 1 : );
4129 : 1 : return true;
4130 : 1 : }
4131 : 1 : );
4132 : 1 : };
4133 : 1 : testData.desc = 'Rational pow() ... invalid test#4';
4134 : 1 :
4135 : 1 : testData.skip = false;
4136 : 1 : suites.get(suiteDesc).push(testData);
4137 : 1 :
4138 : 1 : // TEST ### - Rational pow() ... invalid test#5
4139 : 1 : testData = {};
4140 [ + ]: 1 : testData.method = () => {
4141 : 1 : let r = new rational_addon.Rational();
4142 : 1 : assert.throws(
4143 [ + ]: 1 : () => {
4144 : 1 : r.pow(-3);
4145 : 1 : },
4146 [ + ]: 1 : (err) => {
4147 : 1 : assert(err instanceof TypeError, `rational_addon.pow(-3)`);
4148 : 1 : assert.strictEqual(
4149 : 1 : err.message, `Rational: division by zero`,
4150 : 1 : `rational_addon.pow(-3)`
4151 : 1 : );
4152 : 1 : return true;
4153 : 1 : }
4154 : 1 : );
4155 : 1 :
4156 : 1 : r = new rational_module.Rational();
4157 : 1 : assert.throws(
4158 [ + ]: 1 : () => {
4159 : 1 : r.pow(-3);
4160 : 1 : },
4161 [ + ]: 1 : (err) => {
4162 : 1 : assert(err instanceof TypeError, `rational_module.pow(-3)`);
4163 : 1 : assert.strictEqual(
4164 : 1 : err.message, `Rational: division by zero`,
4165 : 1 : `rational_module.pow(-3)`
4166 : 1 : );
4167 : 1 : return true;
4168 : 1 : }
4169 : 1 : );
4170 : 1 : };
4171 : 1 : testData.desc = 'Rational pow() ... invalid test#5';
4172 : 1 :
4173 : 1 : testData.skip = false;
4174 : 1 : suites.get(suiteDesc).push(testData);
4175 : 1 :
4176 : 1 : // TEST SUITE #13 - Rational preInc() function
4177 : 1 : suiteDesc = 'Rational preInc() function';
4178 : 1 : suites.set(suiteDesc, []);
4179 : 1 :
4180 : 1 : // TEST ### - Rational preInc() ... valid test#1
4181 : 1 : testData = {};
4182 [ + ]: 1 : testData.method = () => {
4183 : 1 : let r = new rational_addon.Rational(3, 2);
4184 : 1 : let s = r.preInc();
4185 : 1 :
4186 : 1 : assert.strictEqual(r.getNumerator(), 5);
4187 : 1 : assert.strictEqual(r.getDenominator(), 2);
4188 : 1 :
4189 : 1 : assert.strictEqual(s.getNumerator(), 5);
4190 : 1 : assert.strictEqual(s.getDenominator(), 2);
4191 : 1 : assert(r === s);
4192 : 1 :
4193 : 1 : r = new rational_module.Rational(3, 2);
4194 : 1 : s = r.preInc();
4195 : 1 :
4196 : 1 : assert.strictEqual(r.getNumerator(), 5);
4197 : 1 : assert.strictEqual(r.getDenominator(), 2);
4198 : 1 :
4199 : 1 : assert.strictEqual(s.getNumerator(), 5);
4200 : 1 : assert.strictEqual(s.getDenominator(), 2);
4201 : 1 : assert(r === s);
4202 : 1 : };
4203 : 1 : testData.desc = 'Rational preInc() ... valid test#1';
4204 : 1 :
4205 : 1 : testData.skip = false;
4206 : 1 : suites.get(suiteDesc).push(testData);
4207 : 1 :
4208 : 1 : // TEST ### - Rational preInc() ... valid test#2
4209 : 1 : testData = {};
4210 [ + ]: 1 : testData.method = () => {
4211 : 1 : let r = new rational_addon.Rational(-1);
4212 : 1 : let s = r.preInc();
4213 : 1 :
4214 : 1 : assert.strictEqual(r.getNumerator(), 0);
4215 : 1 : assert.strictEqual(r.getDenominator(), 1);
4216 : 1 :
4217 : 1 : assert.strictEqual(s.getNumerator(), 0);
4218 : 1 : assert.strictEqual(s.getDenominator(), 1);
4219 : 1 : assert(r === s);
4220 : 1 :
4221 : 1 : r = new rational_module.Rational(-1);
4222 : 1 : s = r.preInc();
4223 : 1 :
4224 : 1 : assert.strictEqual(r.getNumerator(), 0);
4225 : 1 : assert.strictEqual(r.getDenominator(), 1);
4226 : 1 :
4227 : 1 : assert.strictEqual(s.getNumerator(), 0);
4228 : 1 : assert.strictEqual(s.getDenominator(), 1);
4229 : 1 : assert(r === s);
4230 : 1 : };
4231 : 1 : testData.desc = 'Rational preInc() ... valid test#2';
4232 : 1 :
4233 : 1 : testData.skip = false;
4234 : 1 : suites.get(suiteDesc).push(testData);
4235 : 1 :
4236 : 1 : // TEST ### - Rational preInc() ... valid test#3
4237 : 1 : testData = {};
4238 [ + ]: 1 : testData.method = () => {
4239 : 1 : let r = new rational_addon.Rational(-2);
4240 : 1 : let s = r.preInc();
4241 : 1 :
4242 : 1 : assert.strictEqual(r.getNumerator(), -1);
4243 : 1 : assert.strictEqual(r.getDenominator(), 1);
4244 : 1 :
4245 : 1 : assert.strictEqual(s.getNumerator(), -1);
4246 : 1 : assert.strictEqual(s.getDenominator(), 1);
4247 : 1 : assert(r === s);
4248 : 1 :
4249 : 1 : r = new rational_module.Rational(-2);
4250 : 1 : s = r.preInc();
4251 : 1 :
4252 : 1 : assert.strictEqual(r.getNumerator(), -1);
4253 : 1 : assert.strictEqual(r.getDenominator(), 1);
4254 : 1 :
4255 : 1 : assert.strictEqual(s.getNumerator(), -1);
4256 : 1 : assert.strictEqual(s.getDenominator(), 1);
4257 : 1 : assert(r === s);
4258 : 1 : };
4259 : 1 : testData.desc = 'Rational preInc() ... valid test#3';
4260 : 1 :
4261 : 1 : testData.skip = false;
4262 : 1 : suites.get(suiteDesc).push(testData);
4263 : 1 :
4264 : 1 : // TEST ### - Rational preInc() ... invalid test#1
4265 : 1 : testData = {};
4266 [ + ]: 1 : testData.method = () => {
4267 : 1 : let r = new rational_addon.Rational(3, 2);
4268 : 1 : assert.throws(
4269 [ + ]: 1 : () => {
4270 : 1 : r.preInc(1, 2);
4271 : 1 : },
4272 [ + ]: 1 : (err) => {
4273 : 1 : assert(err instanceof TypeError, `rational_addon.preInc(1, 2)`);
4274 : 1 : assert.strictEqual(
4275 : 1 : err.message, `Rational: invalid number of arguments`,
4276 : 1 : `rational_addon.preInc(1, 2)`
4277 : 1 : );
4278 : 1 : return true;
4279 : 1 : }
4280 : 1 : );
4281 : 1 :
4282 : 1 : r = new rational_module.Rational(3, 2);
4283 : 1 : assert.throws(
4284 [ + ]: 1 : () => {
4285 : 1 : r.preInc(1, 2);
4286 : 1 : },
4287 [ + ]: 1 : (err) => {
4288 : 1 : assert(err instanceof TypeError, `rational_module.preInc(1, 2)`);
4289 : 1 : assert.strictEqual(
4290 : 1 : err.message, `Rational: invalid number of arguments`,
4291 : 1 : `rational_module.preInc(1, 2)`
4292 : 1 : );
4293 : 1 : return true;
4294 : 1 : }
4295 : 1 : );
4296 : 1 : };
4297 : 1 : testData.desc = 'Rational preInc() ... invalid test#1';
4298 : 1 :
4299 : 1 : testData.skip = false;
4300 : 1 : suites.get(suiteDesc).push(testData);
4301 : 1 :
4302 : 1 : // TEST SUITE #14 - Rational preDec() function
4303 : 1 : suiteDesc = 'Rational preDec() function';
4304 : 1 : suites.set(suiteDesc, []);
4305 : 1 :
4306 : 1 : // TEST ### - Rational preDec() ... valid test#1
4307 : 1 : testData = {};
4308 [ + ]: 1 : testData.method = () => {
4309 : 1 : let r = new rational_addon.Rational(3, 2);
4310 : 1 : let s = r.preDec();
4311 : 1 :
4312 : 1 : assert.strictEqual(r.getNumerator(), 1);
4313 : 1 : assert.strictEqual(r.getDenominator(), 2);
4314 : 1 :
4315 : 1 : assert.strictEqual(s.getNumerator(), 1);
4316 : 1 : assert.strictEqual(s.getDenominator(), 2);
4317 : 1 : assert(r === s);
4318 : 1 :
4319 : 1 : r = new rational_module.Rational(3, 2);
4320 : 1 : s = r.preDec();
4321 : 1 :
4322 : 1 : assert.strictEqual(r.getNumerator(), 1);
4323 : 1 : assert.strictEqual(r.getDenominator(), 2);
4324 : 1 :
4325 : 1 : assert.strictEqual(s.getNumerator(), 1);
4326 : 1 : assert.strictEqual(s.getDenominator(), 2);
4327 : 1 : assert(r === s);
4328 : 1 : };
4329 : 1 : testData.desc = 'Rational preDec() ... valid test#1';
4330 : 1 :
4331 : 1 : testData.skip = false;
4332 : 1 : suites.get(suiteDesc).push(testData);
4333 : 1 :
4334 : 1 : // TEST ### - Rational preDec() ... valid test#2
4335 : 1 : testData = {};
4336 [ + ]: 1 : testData.method = () => {
4337 : 1 : let r = new rational_addon.Rational();
4338 : 1 : let s = r.preDec();
4339 : 1 :
4340 : 1 : assert.strictEqual(r.getNumerator(), -1);
4341 : 1 : assert.strictEqual(r.getDenominator(), 1);
4342 : 1 :
4343 : 1 : assert.strictEqual(s.getNumerator(), -1);
4344 : 1 : assert.strictEqual(s.getDenominator(), 1);
4345 : 1 : assert(r === s);
4346 : 1 :
4347 : 1 : r = new rational_module.Rational();
4348 : 1 : s = r.preDec();
4349 : 1 :
4350 : 1 : assert.strictEqual(r.getNumerator(), -1);
4351 : 1 : assert.strictEqual(r.getDenominator(), 1);
4352 : 1 :
4353 : 1 : assert.strictEqual(s.getNumerator(), -1);
4354 : 1 : assert.strictEqual(s.getDenominator(), 1);
4355 : 1 : assert(r === s);
4356 : 1 : };
4357 : 1 : testData.desc = 'Rational preDec() ... valid test#2';
4358 : 1 :
4359 : 1 : testData.skip = false;
4360 : 1 : suites.get(suiteDesc).push(testData);
4361 : 1 :
4362 : 1 : // TEST ### - Rational preDec() ... valid test#3
4363 : 1 : testData = {};
4364 [ + ]: 1 : testData.method = () => {
4365 : 1 : let r = new rational_addon.Rational(-2);
4366 : 1 : let s = r.preDec();
4367 : 1 :
4368 : 1 : assert.strictEqual(r.getNumerator(), -3);
4369 : 1 : assert.strictEqual(r.getDenominator(), 1);
4370 : 1 :
4371 : 1 : assert.strictEqual(s.getNumerator(), -3);
4372 : 1 : assert.strictEqual(s.getDenominator(), 1);
4373 : 1 : assert(r === s);
4374 : 1 :
4375 : 1 : r = new rational_module.Rational(-2);
4376 : 1 : s = r.preDec();
4377 : 1 :
4378 : 1 : assert.strictEqual(r.getNumerator(), -3);
4379 : 1 : assert.strictEqual(r.getDenominator(), 1);
4380 : 1 :
4381 : 1 : assert.strictEqual(s.getNumerator(), -3);
4382 : 1 : assert.strictEqual(s.getDenominator(), 1);
4383 : 1 : assert(r === s);
4384 : 1 : };
4385 : 1 : testData.desc = 'Rational preDec() ... valid test#3';
4386 : 1 :
4387 : 1 : testData.skip = false;
4388 : 1 : suites.get(suiteDesc).push(testData);
4389 : 1 :
4390 : 1 : // TEST ### - Rational preDec() ... invalid test#1
4391 : 1 : testData = {};
4392 [ + ]: 1 : testData.method = () => {
4393 : 1 : let r = new rational_addon.Rational(3, 2);
4394 : 1 : assert.throws(
4395 [ + ]: 1 : () => {
4396 : 1 : r.preDec(1, 2);
4397 : 1 : },
4398 [ + ]: 1 : (err) => {
4399 : 1 : assert(err instanceof TypeError, `rational_addon.preDec(1, 2)`);
4400 : 1 : assert.strictEqual(
4401 : 1 : err.message, `Rational: invalid number of arguments`,
4402 : 1 : `rational_addon.preDec(1, 2)`
4403 : 1 : );
4404 : 1 : return true;
4405 : 1 : }
4406 : 1 : );
4407 : 1 :
4408 : 1 : r = new rational_module.Rational(3, 2);
4409 : 1 : assert.throws(
4410 [ + ]: 1 : () => {
4411 : 1 : r.preDec(1, 2);
4412 : 1 : },
4413 [ + ]: 1 : (err) => {
4414 : 1 : assert(err instanceof TypeError, `rational_module.preDec(1, 2)`);
4415 : 1 : assert.strictEqual(
4416 : 1 : err.message, `Rational: invalid number of arguments`,
4417 : 1 : `rational_module.preDec(1, 2)`
4418 : 1 : );
4419 : 1 : return true;
4420 : 1 : }
4421 : 1 : );
4422 : 1 : };
4423 : 1 : testData.desc = 'Rational preDec() ... invalid test#1';
4424 : 1 :
4425 : 1 : testData.skip = false;
4426 : 1 : suites.get(suiteDesc).push(testData);
4427 : 1 :
4428 : 1 : // TEST SUITE #15 - Rational postInc() function
4429 : 1 : suiteDesc = 'Rational postInc() function';
4430 : 1 : suites.set(suiteDesc, []);
4431 : 1 :
4432 : 1 : // TEST ### - Rational postInc() ... valid test#1
4433 : 1 : testData = {};
4434 [ + ]: 1 : testData.method = () => {
4435 : 1 : let r = new rational_addon.Rational(3, 2);
4436 : 1 : let s = r.postInc();
4437 : 1 :
4438 : 1 : assert.strictEqual(r.getNumerator(), 5);
4439 : 1 : assert.strictEqual(r.getDenominator(), 2);
4440 : 1 :
4441 : 1 : assert.strictEqual(s.getNumerator(), 3);
4442 : 1 : assert.strictEqual(s.getDenominator(), 2);
4443 : 1 : assert(r !== s);
4444 : 1 :
4445 : 1 : r = new rational_module.Rational(3, 2);
4446 : 1 : s = r.postInc();
4447 : 1 :
4448 : 1 : assert.strictEqual(r.getNumerator(), 5);
4449 : 1 : assert.strictEqual(r.getDenominator(), 2);
4450 : 1 :
4451 : 1 : assert.strictEqual(s.getNumerator(), 3);
4452 : 1 : assert.strictEqual(s.getDenominator(), 2);
4453 : 1 : assert(r !== s);
4454 : 1 : };
4455 : 1 : testData.desc = 'Rational postInc() ... valid test#1';
4456 : 1 :
4457 : 1 : testData.skip = false;
4458 : 1 : suites.get(suiteDesc).push(testData);
4459 : 1 :
4460 : 1 : // TEST ### - Rational postInc() ... valid test#2
4461 : 1 : testData = {};
4462 [ + ]: 1 : testData.method = () => {
4463 : 1 : let r = new rational_addon.Rational(-1);
4464 : 1 : let s = r.postInc();
4465 : 1 :
4466 : 1 : assert.strictEqual(r.getNumerator(), 0);
4467 : 1 : assert.strictEqual(r.getDenominator(), 1);
4468 : 1 :
4469 : 1 : assert.strictEqual(s.getNumerator(), -1);
4470 : 1 : assert.strictEqual(s.getDenominator(), 1);
4471 : 1 : assert(r !== s);
4472 : 1 :
4473 : 1 : r = new rational_module.Rational(-1);
4474 : 1 : s = r.postInc();
4475 : 1 :
4476 : 1 : assert.strictEqual(r.getNumerator(), 0);
4477 : 1 : assert.strictEqual(r.getDenominator(), 1);
4478 : 1 :
4479 : 1 : assert.strictEqual(s.getNumerator(), -1);
4480 : 1 : assert.strictEqual(s.getDenominator(), 1);
4481 : 1 : assert(r !== s);
4482 : 1 : };
4483 : 1 : testData.desc = 'Rational postInc() ... valid test#2';
4484 : 1 :
4485 : 1 : testData.skip = false;
4486 : 1 : suites.get(suiteDesc).push(testData);
4487 : 1 :
4488 : 1 : // TEST ### - Rational postInc() ... valid test#3
4489 : 1 : testData = {};
4490 [ + ]: 1 : testData.method = () => {
4491 : 1 : let r = new rational_addon.Rational(-2);
4492 : 1 : let s = r.postInc();
4493 : 1 :
4494 : 1 : assert.strictEqual(r.getNumerator(), -1);
4495 : 1 : assert.strictEqual(r.getDenominator(), 1);
4496 : 1 :
4497 : 1 : assert.strictEqual(s.getNumerator(), -2);
4498 : 1 : assert.strictEqual(s.getDenominator(), 1);
4499 : 1 : assert(r !== s);
4500 : 1 :
4501 : 1 : r = new rational_module.Rational(-2);
4502 : 1 : s = r.postInc();
4503 : 1 :
4504 : 1 : assert.strictEqual(r.getNumerator(), -1);
4505 : 1 : assert.strictEqual(r.getDenominator(), 1);
4506 : 1 :
4507 : 1 : assert.strictEqual(s.getNumerator(), -2);
4508 : 1 : assert.strictEqual(s.getDenominator(), 1);
4509 : 1 : assert(r !== s);
4510 : 1 : };
4511 : 1 : testData.desc = 'Rational postInc() ... valid test#3';
4512 : 1 :
4513 : 1 : testData.skip = false;
4514 : 1 : suites.get(suiteDesc).push(testData);
4515 : 1 :
4516 : 1 : // TEST ### - Rational postInc() ... invalid test#1
4517 : 1 : testData = {};
4518 [ + ]: 1 : testData.method = () => {
4519 : 1 : let r = new rational_addon.Rational(3, 2);
4520 : 1 : assert.throws(
4521 [ + ]: 1 : () => {
4522 : 1 : r.postInc(1, 2);
4523 : 1 : },
4524 [ + ]: 1 : (err) => {
4525 : 1 : assert(err instanceof TypeError, `rational_addon.postInc(1, 2)`);
4526 : 1 : assert.strictEqual(
4527 : 1 : err.message, `Rational: invalid number of arguments`,
4528 : 1 : `rational_addon.postInc(1, 2)`
4529 : 1 : );
4530 : 1 : return true;
4531 : 1 : }
4532 : 1 : );
4533 : 1 :
4534 : 1 : r = new rational_module.Rational(3, 2);
4535 : 1 : assert.throws(
4536 [ + ]: 1 : () => {
4537 : 1 : r.postInc(1, 2);
4538 : 1 : },
4539 [ + ]: 1 : (err) => {
4540 : 1 : assert(err instanceof TypeError, `rational_module.postInc(1, 2)`);
4541 : 1 : assert.strictEqual(
4542 : 1 : err.message, `Rational: invalid number of arguments`,
4543 : 1 : `rational_module.postInc(1, 2)`
4544 : 1 : );
4545 : 1 : return true;
4546 : 1 : }
4547 : 1 : );
4548 : 1 : };
4549 : 1 : testData.desc = 'Rational postInc() ... invalid test#1';
4550 : 1 :
4551 : 1 : testData.skip = false;
4552 : 1 : suites.get(suiteDesc).push(testData);
4553 : 1 :
4554 : 1 : // TEST SUITE #16 - Rational postDec() function
4555 : 1 : suiteDesc = 'Rational postDec() function';
4556 : 1 : suites.set(suiteDesc, []);
4557 : 1 :
4558 : 1 : // TEST ### - Rational postDec() ... valid test#1
4559 : 1 : testData = {};
4560 [ + ]: 1 : testData.method = () => {
4561 : 1 : let r = new rational_addon.Rational(3, 2);
4562 : 1 : let s = r.postDec();
4563 : 1 :
4564 : 1 : assert.strictEqual(r.getNumerator(), 1);
4565 : 1 : assert.strictEqual(r.getDenominator(), 2);
4566 : 1 :
4567 : 1 : assert.strictEqual(s.getNumerator(), 3);
4568 : 1 : assert.strictEqual(s.getDenominator(), 2);
4569 : 1 : assert(r !== s);
4570 : 1 :
4571 : 1 : r = new rational_module.Rational(3, 2);
4572 : 1 : s = r.postDec();
4573 : 1 :
4574 : 1 : assert.strictEqual(r.getNumerator(), 1);
4575 : 1 : assert.strictEqual(r.getDenominator(), 2);
4576 : 1 :
4577 : 1 : assert.strictEqual(s.getNumerator(), 3);
4578 : 1 : assert.strictEqual(s.getDenominator(), 2);
4579 : 1 : assert(r !== s);
4580 : 1 : };
4581 : 1 : testData.desc = 'Rational postDec() ... valid test#1';
4582 : 1 :
4583 : 1 : testData.skip = false;
4584 : 1 : suites.get(suiteDesc).push(testData);
4585 : 1 :
4586 : 1 : // TEST ### - Rational postDec() ... valid test#2
4587 : 1 : testData = {};
4588 [ + ]: 1 : testData.method = () => {
4589 : 1 : let r = new rational_addon.Rational();
4590 : 1 : let s = r.postDec();
4591 : 1 :
4592 : 1 : assert.strictEqual(r.getNumerator(), -1);
4593 : 1 : assert.strictEqual(r.getDenominator(), 1);
4594 : 1 :
4595 : 1 : assert.strictEqual(s.getNumerator(), 0);
4596 : 1 : assert.strictEqual(s.getDenominator(), 1);
4597 : 1 : assert(r !== s);
4598 : 1 :
4599 : 1 : r = new rational_module.Rational();
4600 : 1 : s = r.postDec();
4601 : 1 :
4602 : 1 : assert.strictEqual(r.getNumerator(), -1);
4603 : 1 : assert.strictEqual(r.getDenominator(), 1);
4604 : 1 :
4605 : 1 : assert.strictEqual(s.getNumerator(), 0);
4606 : 1 : assert.strictEqual(s.getDenominator(), 1);
4607 : 1 : assert(r !== s);
4608 : 1 : };
4609 : 1 : testData.desc = 'Rational postDec() ... valid test#2';
4610 : 1 :
4611 : 1 : testData.skip = false;
4612 : 1 : suites.get(suiteDesc).push(testData);
4613 : 1 :
4614 : 1 : // TEST ### - Rational postDec() ... valid test#3
4615 : 1 : testData = {};
4616 [ + ]: 1 : testData.method = () => {
4617 : 1 : let r = new rational_addon.Rational(-2);
4618 : 1 : let s = r.postDec();
4619 : 1 :
4620 : 1 : assert.strictEqual(r.getNumerator(), -3);
4621 : 1 : assert.strictEqual(r.getDenominator(), 1);
4622 : 1 :
4623 : 1 : assert.strictEqual(s.getNumerator(), -2);
4624 : 1 : assert.strictEqual(s.getDenominator(), 1);
4625 : 1 : assert(r !== s);
4626 : 1 :
4627 : 1 : r = new rational_module.Rational(-2);
4628 : 1 : s = r.postDec();
4629 : 1 :
4630 : 1 : assert.strictEqual(r.getNumerator(), -3);
4631 : 1 : assert.strictEqual(r.getDenominator(), 1);
4632 : 1 :
4633 : 1 : assert.strictEqual(s.getNumerator(), -2);
4634 : 1 : assert.strictEqual(s.getDenominator(), 1);
4635 : 1 : assert(r !== s);
4636 : 1 : };
4637 : 1 : testData.desc = 'Rational postDec() ... valid test#3';
4638 : 1 :
4639 : 1 : testData.skip = false;
4640 : 1 : suites.get(suiteDesc).push(testData);
4641 : 1 :
4642 : 1 : // TEST ### - Rational postDec() ... invalid test#1
4643 : 1 : testData = {};
4644 [ + ]: 1 : testData.method = () => {
4645 : 1 : let r = new rational_addon.Rational(3, 2);
4646 : 1 : assert.throws(
4647 [ + ]: 1 : () => {
4648 : 1 : r.postDec(1, 2);
4649 : 1 : },
4650 [ + ]: 1 : (err) => {
4651 : 1 : assert(err instanceof TypeError, `rational_addon.postDec(1, 2)`);
4652 : 1 : assert.strictEqual(
4653 : 1 : err.message, `Rational: invalid number of arguments`,
4654 : 1 : `rational_addon.postDec(1, 2)`
4655 : 1 : );
4656 : 1 : return true;
4657 : 1 : }
4658 : 1 : );
4659 : 1 :
4660 : 1 : r = new rational_module.Rational(3, 2);
4661 : 1 : assert.throws(
4662 [ + ]: 1 : () => {
4663 : 1 : r.postDec(1, 2);
4664 : 1 : },
4665 [ + ]: 1 : (err) => {
4666 : 1 : assert(err instanceof TypeError, `rational_module.postDec(1, 2)`);
4667 : 1 : assert.strictEqual(
4668 : 1 : err.message, `Rational: invalid number of arguments`,
4669 : 1 : `rational_module.postDec(1, 2)`
4670 : 1 : );
4671 : 1 : return true;
4672 : 1 : }
4673 : 1 : );
4674 : 1 : };
4675 : 1 : testData.desc = 'Rational postDec() ... invalid test#1';
4676 : 1 :
4677 : 1 : testData.skip = false;
4678 : 1 : suites.get(suiteDesc).push(testData);
4679 : 1 :
4680 : 1 : // TEST SUITE #17 - Rational selfAbs() function
4681 : 1 : suiteDesc = 'Rational selfAbs() function';
4682 : 1 : suites.set(suiteDesc, []);
4683 : 1 :
4684 : 1 : // TEST ### - Rational selfAbs() ... valid test#1
4685 : 1 : testData = {};
4686 [ + ]: 1 : testData.method = () => {
4687 : 1 : let r = new rational_addon.Rational(-3, 2);
4688 : 1 : let s = r.selfAbs();
4689 : 1 :
4690 : 1 : assert.strictEqual(r.getNumerator(), 3);
4691 : 1 : assert.strictEqual(r.getDenominator(), 2);
4692 : 1 : assert(r === s);
4693 : 1 :
4694 : 1 : r = new rational_module.Rational(-3, 2);
4695 : 1 : s = r.selfAbs();
4696 : 1 :
4697 : 1 : assert.strictEqual(r.getNumerator(), 3);
4698 : 1 : assert.strictEqual(r.getDenominator(), 2);
4699 : 1 : assert(r === s);
4700 : 1 : };
4701 : 1 : testData.desc = 'Rational selfAbs() ... valid test#1';
4702 : 1 :
4703 : 1 : testData.skip = false;
4704 : 1 : suites.get(suiteDesc).push(testData);
4705 : 1 :
4706 : 1 : // TEST ### - Rational selfAbs() ... valid test#2
4707 : 1 : testData = {};
4708 [ + ]: 1 : testData.method = () => {
4709 : 1 : let r = new rational_addon.Rational(3, 2);
4710 : 1 : let s = r.selfAbs();
4711 : 1 :
4712 : 1 : assert.strictEqual(r.getNumerator(), 3);
4713 : 1 : assert.strictEqual(r.getDenominator(), 2);
4714 : 1 : assert(r === s);
4715 : 1 :
4716 : 1 : r = new rational_module.Rational(3, 2);
4717 : 1 : s = r.selfAbs();
4718 : 1 :
4719 : 1 : assert.strictEqual(r.getNumerator(), 3);
4720 : 1 : assert.strictEqual(r.getDenominator(), 2);
4721 : 1 : assert(r === s);
4722 : 1 : };
4723 : 1 : testData.desc = 'Rational selfAbs() ... valid test#2';
4724 : 1 :
4725 : 1 : testData.skip = false;
4726 : 1 : suites.get(suiteDesc).push(testData);
4727 : 1 :
4728 : 1 : // TEST ### - Rational selfAbs() ... invalid test#1
4729 : 1 : testData = {};
4730 [ + ]: 1 : testData.method = () => {
4731 : 1 : let r = new rational_addon.Rational(3, 2);
4732 : 1 : assert.throws(
4733 [ + ]: 1 : () => {
4734 : 1 : r.selfAbs(1, 2);
4735 : 1 : },
4736 [ + ]: 1 : (err) => {
4737 : 1 : assert(err instanceof TypeError, `rational_addon.selfAbs(1, 2)`);
4738 : 1 : assert.strictEqual(
4739 : 1 : err.message, `Rational: invalid number of arguments`,
4740 : 1 : `rational_addon.selfAbs(1, 2)`
4741 : 1 : );
4742 : 1 : return true;
4743 : 1 : }
4744 : 1 : );
4745 : 1 :
4746 : 1 : r = new rational_module.Rational(3, 2);
4747 : 1 : assert.throws(
4748 [ + ]: 1 : () => {
4749 : 1 : r.selfAbs(1, 2);
4750 : 1 : },
4751 [ + ]: 1 : (err) => {
4752 : 1 : assert(err instanceof TypeError, `rational_module.selfAbs(1, 2)`);
4753 : 1 : assert.strictEqual(
4754 : 1 : err.message, `Rational: invalid number of arguments`,
4755 : 1 : `rational_module.selfAbs(1, 2)`
4756 : 1 : );
4757 : 1 : return true;
4758 : 1 : }
4759 : 1 : );
4760 : 1 : };
4761 : 1 : testData.desc = 'Rational selfAbs() ... invalid test#1';
4762 : 1 :
4763 : 1 : testData.skip = false;
4764 : 1 : suites.get(suiteDesc).push(testData);
4765 : 1 :
4766 : 1 : // TEST SUITE #18 - Rational abs() function
4767 : 1 : suiteDesc = 'Rational abs() function';
4768 : 1 : suites.set(suiteDesc, []);
4769 : 1 :
4770 : 1 : // TEST ### - Rational abs() ... valid test#1
4771 : 1 : testData = {};
4772 [ + ]: 1 : testData.method = () => {
4773 : 1 : let r = new rational_addon.Rational(-3, 2);
4774 : 1 : let s = r.abs();
4775 : 1 :
4776 : 1 : assert.strictEqual(r.getNumerator(), -3);
4777 : 1 : assert.strictEqual(r.getDenominator(), 2);
4778 : 1 :
4779 : 1 : assert.strictEqual(s.getNumerator(), 3);
4780 : 1 : assert.strictEqual(s.getDenominator(), 2);
4781 : 1 :
4782 : 1 : assert(r !== s);
4783 : 1 :
4784 : 1 : r = new rational_module.Rational(-3, 2);
4785 : 1 : s = r.abs();
4786 : 1 :
4787 : 1 : assert.strictEqual(r.getNumerator(), -3);
4788 : 1 : assert.strictEqual(r.getDenominator(), 2);
4789 : 1 :
4790 : 1 : assert.strictEqual(s.getNumerator(), 3);
4791 : 1 : assert.strictEqual(s.getDenominator(), 2);
4792 : 1 :
4793 : 1 : assert(r !== s);
4794 : 1 : };
4795 : 1 : testData.desc = 'Rational abs() ... valid test#1';
4796 : 1 :
4797 : 1 : testData.skip = false;
4798 : 1 : suites.get(suiteDesc).push(testData);
4799 : 1 :
4800 : 1 : // TEST ### - Rational abs() ... valid test#2
4801 : 1 : testData = {};
4802 [ + ]: 1 : testData.method = () => {
4803 : 1 : let r = new rational_addon.Rational(3, 2);
4804 : 1 : let s = r.abs();
4805 : 1 :
4806 : 1 : assert.strictEqual(r.getNumerator(), 3);
4807 : 1 : assert.strictEqual(r.getDenominator(), 2);
4808 : 1 :
4809 : 1 : assert.strictEqual(s.getNumerator(), 3);
4810 : 1 : assert.strictEqual(s.getDenominator(), 2);
4811 : 1 :
4812 : 1 : assert(r !== s);
4813 : 1 :
4814 : 1 : r = new rational_module.Rational(3, 2);
4815 : 1 : s = r.abs();
4816 : 1 :
4817 : 1 : assert.strictEqual(r.getNumerator(), 3);
4818 : 1 : assert.strictEqual(r.getDenominator(), 2);
4819 : 1 :
4820 : 1 : assert.strictEqual(s.getNumerator(), 3);
4821 : 1 : assert.strictEqual(s.getDenominator(), 2);
4822 : 1 :
4823 : 1 : assert(r !== s);
4824 : 1 : };
4825 : 1 : testData.desc = 'Rational abs() ... valid test#2';
4826 : 1 :
4827 : 1 : testData.skip = false;
4828 : 1 : suites.get(suiteDesc).push(testData);
4829 : 1 :
4830 : 1 : // TEST ### - Rational abs() ... invalid test#1
4831 : 1 : testData = {};
4832 [ + ]: 1 : testData.method = () => {
4833 : 1 : let r = new rational_addon.Rational(3, 2);
4834 : 1 : assert.throws(
4835 [ + ]: 1 : () => {
4836 : 1 : r.abs(1, 2);
4837 : 1 : },
4838 [ + ]: 1 : (err) => {
4839 : 1 : assert(err instanceof TypeError, `rational_addon.abs(1, 2)`);
4840 : 1 : assert.strictEqual(
4841 : 1 : err.message, `Rational: invalid number of arguments`,
4842 : 1 : `rational_addon.abs(1, 2)`
4843 : 1 : );
4844 : 1 : return true;
4845 : 1 : }
4846 : 1 : );
4847 : 1 :
4848 : 1 : r = new rational_module.Rational(3, 2);
4849 : 1 : assert.throws(
4850 [ + ]: 1 : () => {
4851 : 1 : r.abs(1, 2);
4852 : 1 : },
4853 [ + ]: 1 : (err) => {
4854 : 1 : assert(err instanceof TypeError, `rational_module.abs(1, 2)`);
4855 : 1 : assert.strictEqual(
4856 : 1 : err.message, `Rational: invalid number of arguments`,
4857 : 1 : `rational_module.abs(1, 2)`
4858 : 1 : );
4859 : 1 : return true;
4860 : 1 : }
4861 : 1 : );
4862 : 1 : };
4863 : 1 : testData.desc = 'Rational abs() ... invalid test#1';
4864 : 1 :
4865 : 1 : testData.skip = false;
4866 : 1 : suites.get(suiteDesc).push(testData);
4867 : 1 :
4868 : 1 : // TEST SUITE #19 - Rational selfNeg() function
4869 : 1 : suiteDesc = 'Rational selfNeg() function';
4870 : 1 : suites.set(suiteDesc, []);
4871 : 1 :
4872 : 1 : // TEST ### - Rational selfNeg() ... valid test#1
4873 : 1 : testData = {};
4874 [ + ]: 1 : testData.method = () => {
4875 : 1 : let r = new rational_addon.Rational(-3, 2);
4876 : 1 : let s = r.selfNeg();
4877 : 1 :
4878 : 1 : assert.strictEqual(r.getNumerator(), 3);
4879 : 1 : assert.strictEqual(r.getDenominator(), 2);
4880 : 1 : assert(r === s);
4881 : 1 :
4882 : 1 : r = new rational_module.Rational(-3, 2);
4883 : 1 : s = r.selfNeg();
4884 : 1 :
4885 : 1 : assert.strictEqual(r.getNumerator(), 3);
4886 : 1 : assert.strictEqual(r.getDenominator(), 2);
4887 : 1 : assert(r === s);
4888 : 1 : };
4889 : 1 : testData.desc = 'Rational selfNeg() ... valid test#1';
4890 : 1 :
4891 : 1 : testData.skip = false;
4892 : 1 : suites.get(suiteDesc).push(testData);
4893 : 1 :
4894 : 1 : // TEST ### - Rational selfNeg() ... valid test#2
4895 : 1 : testData = {};
4896 [ + ]: 1 : testData.method = () => {
4897 : 1 : let r = new rational_addon.Rational(3, 2);
4898 : 1 : let s = r.selfNeg();
4899 : 1 :
4900 : 1 : assert.strictEqual(r.getNumerator(), -3);
4901 : 1 : assert.strictEqual(r.getDenominator(), 2);
4902 : 1 : assert(r === s);
4903 : 1 :
4904 : 1 : r = new rational_module.Rational(3, 2);
4905 : 1 : s = r.selfNeg();
4906 : 1 :
4907 : 1 : assert.strictEqual(r.getNumerator(), -3);
4908 : 1 : assert.strictEqual(r.getDenominator(), 2);
4909 : 1 : assert(r === s);
4910 : 1 : };
4911 : 1 : testData.desc = 'Rational selfNeg() ... valid test#2';
4912 : 1 :
4913 : 1 : testData.skip = false;
4914 : 1 : suites.get(suiteDesc).push(testData);
4915 : 1 :
4916 : 1 : // TEST ### - Rational selfNeg() ... invalid test#1
4917 : 1 : testData = {};
4918 [ + ]: 1 : testData.method = () => {
4919 : 1 : let r = new rational_addon.Rational(3, 2);
4920 : 1 : assert.throws(
4921 [ + ]: 1 : () => {
4922 : 1 : r.selfNeg(1, 2);
4923 : 1 : },
4924 [ + ]: 1 : (err) => {
4925 : 1 : assert(err instanceof TypeError, `rational_addon.selfNeg(1, 2)`);
4926 : 1 : assert.strictEqual(
4927 : 1 : err.message, `Rational: invalid number of arguments`,
4928 : 1 : `rational_addon.selfNeg(1, 2)`
4929 : 1 : );
4930 : 1 : return true;
4931 : 1 : }
4932 : 1 : );
4933 : 1 :
4934 : 1 : r = new rational_module.Rational(3, 2);
4935 : 1 : assert.throws(
4936 [ + ]: 1 : () => {
4937 : 1 : r.selfNeg(1, 2);
4938 : 1 : },
4939 [ + ]: 1 : (err) => {
4940 : 1 : assert(err instanceof TypeError, `rational_module.selfNeg(1, 2)`);
4941 : 1 : assert.strictEqual(
4942 : 1 : err.message, `Rational: invalid number of arguments`,
4943 : 1 : `rational_module.selfNeg(1, 2)`
4944 : 1 : );
4945 : 1 : return true;
4946 : 1 : }
4947 : 1 : );
4948 : 1 : };
4949 : 1 : testData.desc = 'Rational selfNeg() ... invalid test#1';
4950 : 1 :
4951 : 1 : testData.skip = false;
4952 : 1 : suites.get(suiteDesc).push(testData);
4953 : 1 :
4954 : 1 : // TEST SUITE #20 - Rational neg() function
4955 : 1 : suiteDesc = 'Rational neg() function';
4956 : 1 : suites.set(suiteDesc, []);
4957 : 1 :
4958 : 1 : // TEST ### - Rational neg() ... valid test#1
4959 : 1 : testData = {};
4960 [ + ]: 1 : testData.method = () => {
4961 : 1 : let r = new rational_addon.Rational(-3, 2);
4962 : 1 : let s = r.neg();
4963 : 1 :
4964 : 1 : assert.strictEqual(r.getNumerator(), -3);
4965 : 1 : assert.strictEqual(r.getDenominator(), 2);
4966 : 1 :
4967 : 1 : assert.strictEqual(s.getNumerator(), 3);
4968 : 1 : assert.strictEqual(s.getDenominator(), 2);
4969 : 1 :
4970 : 1 : assert(r !== s);
4971 : 1 :
4972 : 1 : r = new rational_module.Rational(-3, 2);
4973 : 1 : s = r.neg();
4974 : 1 :
4975 : 1 : assert.strictEqual(r.getNumerator(), -3);
4976 : 1 : assert.strictEqual(r.getDenominator(), 2);
4977 : 1 :
4978 : 1 : assert.strictEqual(s.getNumerator(), 3);
4979 : 1 : assert.strictEqual(s.getDenominator(), 2);
4980 : 1 :
4981 : 1 : assert(r !== s);
4982 : 1 : };
4983 : 1 : testData.desc = 'Rational neg() ... valid test#1';
4984 : 1 :
4985 : 1 : testData.skip = false;
4986 : 1 : suites.get(suiteDesc).push(testData);
4987 : 1 :
4988 : 1 : // TEST ### - Rational neg() ... valid test#2
4989 : 1 : testData = {};
4990 [ + ]: 1 : testData.method = () => {
4991 : 1 : let r = new rational_addon.Rational(3, 2);
4992 : 1 : let s = r.neg();
4993 : 1 :
4994 : 1 : assert.strictEqual(r.getNumerator(), 3);
4995 : 1 : assert.strictEqual(r.getDenominator(), 2);
4996 : 1 :
4997 : 1 : assert.strictEqual(s.getNumerator(), -3);
4998 : 1 : assert.strictEqual(s.getDenominator(), 2);
4999 : 1 :
5000 : 1 : assert(r !== s);
5001 : 1 :
5002 : 1 : r = new rational_module.Rational(3, 2);
5003 : 1 : s = r.neg();
5004 : 1 :
5005 : 1 : assert.strictEqual(r.getNumerator(), 3);
5006 : 1 : assert.strictEqual(r.getDenominator(), 2);
5007 : 1 :
5008 : 1 : assert.strictEqual(s.getNumerator(), -3);
5009 : 1 : assert.strictEqual(s.getDenominator(), 2);
5010 : 1 :
5011 : 1 : assert(r !== s);
5012 : 1 : };
5013 : 1 : testData.desc = 'Rational neg() ... valid test#2';
5014 : 1 :
5015 : 1 : testData.skip = false;
5016 : 1 : suites.get(suiteDesc).push(testData);
5017 : 1 :
5018 : 1 : // TEST ### - Rational neg() ... invalid test#1
5019 : 1 : testData = {};
5020 [ + ]: 1 : testData.method = () => {
5021 : 1 : let r = new rational_addon.Rational(3, 2);
5022 : 1 : assert.throws(
5023 [ + ]: 1 : () => {
5024 : 1 : r.neg(1, 2);
5025 : 1 : },
5026 [ + ]: 1 : (err) => {
5027 : 1 : assert(err instanceof TypeError, `rational_addon.neg(1, 2)`);
5028 : 1 : assert.strictEqual(
5029 : 1 : err.message, `Rational: invalid number of arguments`,
5030 : 1 : `rational_addon.neg(1, 2)`
5031 : 1 : );
5032 : 1 : return true;
5033 : 1 : }
5034 : 1 : );
5035 : 1 :
5036 : 1 : r = new rational_module.Rational(3, 2);
5037 : 1 : assert.throws(
5038 [ + ]: 1 : () => {
5039 : 1 : r.neg(1, 2);
5040 : 1 : },
5041 [ + ]: 1 : (err) => {
5042 : 1 : assert(err instanceof TypeError, `rational_module.neg(1, 2)`);
5043 : 1 : assert.strictEqual(
5044 : 1 : err.message, `Rational: invalid number of arguments`,
5045 : 1 : `rational_module.neg(1, 2)`
5046 : 1 : );
5047 : 1 : return true;
5048 : 1 : }
5049 : 1 : );
5050 : 1 : };
5051 : 1 : testData.desc = 'Rational neg() ... invalid test#1';
5052 : 1 :
5053 : 1 : testData.skip = false;
5054 : 1 : suites.get(suiteDesc).push(testData);
5055 : 1 :
5056 : 1 : // TEST SUITE #21 - Rational not() function
5057 : 1 : suiteDesc = 'Rational not() function';
5058 : 1 : suites.set(suiteDesc, []);
5059 : 1 :
5060 : 1 : // TEST ### - Rational not() ... valid test#1
5061 : 1 : testData = {};
5062 [ + ]: 1 : testData.method = () => {
5063 : 1 : let r = new rational_addon.Rational(-3, 2);
5064 : 1 :
5065 : 1 : assert.strictEqual(r.not(), false);
5066 : 1 : assert.strictEqual(r.getNumerator(), -3);
5067 : 1 : assert.strictEqual(r.getDenominator(), 2);
5068 : 1 :
5069 : 1 : r = new rational_module.Rational(-3, 2);
5070 : 1 :
5071 : 1 : assert.strictEqual(r.not(), false);
5072 : 1 : assert.strictEqual(r.getNumerator(), -3);
5073 : 1 : assert.strictEqual(r.getDenominator(), 2);
5074 : 1 : };
5075 : 1 : testData.desc = 'Rational not() ... valid test#1';
5076 : 1 :
5077 : 1 : testData.skip = false;
5078 : 1 : suites.get(suiteDesc).push(testData);
5079 : 1 :
5080 : 1 : // TEST ### - Rational not() ... valid test#2
5081 : 1 : testData = {};
5082 [ + ]: 1 : testData.method = () => {
5083 : 1 : let r = new rational_addon.Rational();
5084 : 1 :
5085 : 1 : assert.strictEqual(r.not(), true);
5086 : 1 : assert.strictEqual(r.getNumerator(), 0);
5087 : 1 : assert.strictEqual(r.getDenominator(), 1);
5088 : 1 :
5089 : 1 : r = new rational_module.Rational();
5090 : 1 :
5091 : 1 : assert.strictEqual(r.not(), true);
5092 : 1 : assert.strictEqual(r.getNumerator(), 0);
5093 : 1 : assert.strictEqual(r.getDenominator(), 1);
5094 : 1 : };
5095 : 1 : testData.desc = 'Rational not() ... valid test#2';
5096 : 1 :
5097 : 1 : testData.skip = false;
5098 : 1 : suites.get(suiteDesc).push(testData);
5099 : 1 :
5100 : 1 : // TEST ### - Rational not() ... invalid test#1
5101 : 1 : testData = {};
5102 [ + ]: 1 : testData.method = () => {
5103 : 1 : let r = new rational_addon.Rational(3, 2);
5104 : 1 : assert.throws(
5105 [ + ]: 1 : () => {
5106 : 1 : r.not(1, 2);
5107 : 1 : },
5108 [ + ]: 1 : (err) => {
5109 : 1 : assert(err instanceof TypeError, `rational_addon.not(1, 2)`);
5110 : 1 : assert.strictEqual(
5111 : 1 : err.message, `Rational: invalid number of arguments`,
5112 : 1 : `rational_addon.not(1, 2)`
5113 : 1 : );
5114 : 1 : return true;
5115 : 1 : }
5116 : 1 : );
5117 : 1 :
5118 : 1 : r = new rational_module.Rational(3, 2);
5119 : 1 : assert.throws(
5120 [ + ]: 1 : () => {
5121 : 1 : r.not(1, 2);
5122 : 1 : },
5123 [ + ]: 1 : (err) => {
5124 : 1 : assert(err instanceof TypeError, `rational_module.not(1, 2)`);
5125 : 1 : assert.strictEqual(
5126 : 1 : err.message, `Rational: invalid number of arguments`,
5127 : 1 : `rational_module.not(1, 2)`
5128 : 1 : );
5129 : 1 : return true;
5130 : 1 : }
5131 : 1 : );
5132 : 1 : };
5133 : 1 : testData.desc = 'Rational not() ... invalid test#1';
5134 : 1 :
5135 : 1 : testData.skip = false;
5136 : 1 : suites.get(suiteDesc).push(testData);
5137 : 1 :
5138 : 1 : // TEST SUITE #22 - Rational bool() function
5139 : 1 : suiteDesc = 'Rational bool() function';
5140 : 1 : suites.set(suiteDesc, []);
5141 : 1 :
5142 : 1 : // TEST ### - Rational bool() ... valid test#1
5143 : 1 : testData = {};
5144 [ + ]: 1 : testData.method = () => {
5145 : 1 : let r = new rational_addon.Rational(-3, 2);
5146 : 1 :
5147 : 1 : assert.strictEqual(r.bool(), true);
5148 : 1 : assert.strictEqual(r.getNumerator(), -3);
5149 : 1 : assert.strictEqual(r.getDenominator(), 2);
5150 : 1 :
5151 : 1 : r = new rational_module.Rational(-3, 2);
5152 : 1 :
5153 : 1 : assert.strictEqual(r.bool(), true);
5154 : 1 : assert.strictEqual(r.getNumerator(), -3);
5155 : 1 : assert.strictEqual(r.getDenominator(), 2);
5156 : 1 : };
5157 : 1 : testData.desc = 'Rational bool() ... valid test#1';
5158 : 1 :
5159 : 1 : testData.skip = false;
5160 : 1 : suites.get(suiteDesc).push(testData);
5161 : 1 :
5162 : 1 : // TEST ### - Rational bool() ... valid test#2
5163 : 1 : testData = {};
5164 [ + ]: 1 : testData.method = () => {
5165 : 1 : let r = new rational_addon.Rational();
5166 : 1 :
5167 : 1 : assert.strictEqual(r.bool(), false);
5168 : 1 : assert.strictEqual(r.getNumerator(), 0);
5169 : 1 : assert.strictEqual(r.getDenominator(), 1);
5170 : 1 :
5171 : 1 : r = new rational_module.Rational();
5172 : 1 :
5173 : 1 : assert.strictEqual(r.bool(), false);
5174 : 1 : assert.strictEqual(r.getNumerator(), 0);
5175 : 1 : assert.strictEqual(r.getDenominator(), 1);
5176 : 1 : };
5177 : 1 : testData.desc = 'Rational bool() ... valid test#2';
5178 : 1 :
5179 : 1 : testData.skip = false;
5180 : 1 : suites.get(suiteDesc).push(testData);
5181 : 1 :
5182 : 1 : // TEST ### - Rational bool() ... invalid test#1
5183 : 1 : testData = {};
5184 [ + ]: 1 : testData.method = () => {
5185 : 1 : let r = new rational_addon.Rational(3, 2);
5186 : 1 : assert.throws(
5187 [ + ]: 1 : () => {
5188 : 1 : r.bool(1, 2);
5189 : 1 : },
5190 [ + ]: 1 : (err) => {
5191 : 1 : assert(err instanceof TypeError, `rational_addon.bool(1, 2)`);
5192 : 1 : assert.strictEqual(
5193 : 1 : err.message, `Rational: invalid number of arguments`,
5194 : 1 : `rational_addon.bool(1, 2)`
5195 : 1 : );
5196 : 1 : return true;
5197 : 1 : }
5198 : 1 : );
5199 : 1 :
5200 : 1 : r = new rational_module.Rational(3, 2);
5201 : 1 : assert.throws(
5202 [ + ]: 1 : () => {
5203 : 1 : r.bool(1, 2);
5204 : 1 : },
5205 [ + ]: 1 : (err) => {
5206 : 1 : assert(err instanceof TypeError, `rational_module.bool(1, 2)`);
5207 : 1 : assert.strictEqual(
5208 : 1 : err.message, `Rational: invalid number of arguments`,
5209 : 1 : `rational_module.bool(1, 2)`
5210 : 1 : );
5211 : 1 : return true;
5212 : 1 : }
5213 : 1 : );
5214 : 1 : };
5215 : 1 : testData.desc = 'Rational bool() ... invalid test#1';
5216 : 1 :
5217 : 1 : testData.skip = false;
5218 : 1 : suites.get(suiteDesc).push(testData);
5219 : 1 :
5220 : 1 : // TEST SUITE #23 - Rational lessThan() function
5221 : 1 : suiteDesc = 'Rational lessThan() function';
5222 : 1 : suites.set(suiteDesc, []);
5223 : 1 :
5224 : 1 : // TEST ### - Rational lessThan() ... valid test#1
5225 : 1 : testData = {};
5226 [ + ]: 1 : testData.method = () => {
5227 : 1 : let r = new rational_addon.Rational(-3, 2);
5228 : 1 : let s = new rational_addon.Rational(-1, 2);
5229 : 1 :
5230 : 1 : assert.strictEqual(r.lessThan(s), true);
5231 : 1 : assert.strictEqual(s.lessThan(r), false);
5232 : 1 :
5233 : 1 : assert.strictEqual(r.getNumerator(), -3);
5234 : 1 : assert.strictEqual(r.getDenominator(), 2);
5235 : 1 :
5236 : 1 : r = new rational_module.Rational(-3, 2);
5237 : 1 : s = new rational_module.Rational(-1, 2);
5238 : 1 :
5239 : 1 : assert.strictEqual(r.lessThan(s), true);
5240 : 1 : assert.strictEqual(s.lessThan(r), false);
5241 : 1 :
5242 : 1 : assert.strictEqual(r.getNumerator(), -3);
5243 : 1 : assert.strictEqual(r.getDenominator(), 2);
5244 : 1 : };
5245 : 1 : testData.desc = 'Rational lessThan() ... valid test#1';
5246 : 1 :
5247 : 1 : testData.skip = false;
5248 : 1 : suites.get(suiteDesc).push(testData);
5249 : 1 :
5250 : 1 : // TEST ### - Rational lessThan() ... valid test#2
5251 : 1 : testData = {};
5252 [ + ]: 1 : testData.method = () => {
5253 : 1 : let r = new rational_addon.Rational();
5254 : 1 : let s = new rational_addon.Rational(-1, 2);
5255 : 1 :
5256 : 1 : assert.strictEqual(r.lessThan(s), false);
5257 : 1 : assert.strictEqual(s.lessThan(r), true);
5258 : 1 :
5259 : 1 : assert.strictEqual(r.getNumerator(), 0);
5260 : 1 : assert.strictEqual(r.getDenominator(), 1);
5261 : 1 :
5262 : 1 : r = new rational_module.Rational();
5263 : 1 : s = new rational_module.Rational(-1, 2);
5264 : 1 :
5265 : 1 : assert.strictEqual(r.lessThan(s), false);
5266 : 1 : assert.strictEqual(s.lessThan(r), true);
5267 : 1 :
5268 : 1 : assert.strictEqual(r.getNumerator(), 0);
5269 : 1 : assert.strictEqual(r.getDenominator(), 1);
5270 : 1 : };
5271 : 1 : testData.desc = 'Rational lessThan() ... valid test#2';
5272 : 1 :
5273 : 1 : testData.skip = false;
5274 : 1 : suites.get(suiteDesc).push(testData);
5275 : 1 :
5276 : 1 : // TEST ### - Rational lessThan() ... valid test#3
5277 : 1 : testData = {};
5278 [ + ]: 1 : testData.method = () => {
5279 : 1 : let r = new rational_addon.Rational();
5280 : 1 : let s = new rational_addon.Rational(-1, 2);
5281 : 1 :
5282 : 1 : assert.strictEqual(r.lessThan('-1'), false);
5283 : 1 : assert.strictEqual(s.lessThan('0'), true);
5284 : 1 :
5285 : 1 : assert.strictEqual(r.getNumerator(), 0);
5286 : 1 : assert.strictEqual(r.getDenominator(), 1);
5287 : 1 :
5288 : 1 : r = new rational_module.Rational();
5289 : 1 : s = new rational_module.Rational(-1, 2);
5290 : 1 :
5291 : 1 : assert.strictEqual(r.lessThan('-1'), false);
5292 : 1 : assert.strictEqual(s.lessThan('0'), true);
5293 : 1 :
5294 : 1 : assert.strictEqual(r.getNumerator(), 0);
5295 : 1 : assert.strictEqual(r.getDenominator(), 1);
5296 : 1 : };
5297 : 1 : testData.desc = 'Rational lessThan() ... valid test#3';
5298 : 1 :
5299 : 1 : testData.skip = false;
5300 : 1 : suites.get(suiteDesc).push(testData);
5301 : 1 :
5302 : 1 : // TEST ### - Rational lessThan() ... invalid test#1
5303 : 1 : testData = {};
5304 [ + ]: 1 : testData.method = () => {
5305 : 1 : let r = new rational_addon.Rational(3, 2);
5306 : 1 : assert.throws(
5307 [ + ]: 1 : () => {
5308 : 1 : r.lessThan();
5309 : 1 : },
5310 [ + ]: 1 : (err) => {
5311 : 1 : assert(err instanceof TypeError, `rational_addon.lessThan()`);
5312 : 1 : assert.strictEqual(
5313 : 1 : err.message, `Rational: invalid number of arguments`,
5314 : 1 : `rational_addon.lessThan()`
5315 : 1 : );
5316 : 1 : return true;
5317 : 1 : }
5318 : 1 : );
5319 : 1 :
5320 : 1 : r = new rational_module.Rational(3, 2);
5321 : 1 : assert.throws(
5322 [ + ]: 1 : () => {
5323 : 1 : r.lessThan();
5324 : 1 : },
5325 [ + ]: 1 : (err) => {
5326 : 1 : assert(err instanceof TypeError, `rational_module.lessThan(1, 2)`);
5327 : 1 : assert.strictEqual(
5328 : 1 : err.message, `Rational: invalid number of arguments`,
5329 : 1 : `rational_module.lessThan()`
5330 : 1 : );
5331 : 1 : return true;
5332 : 1 : }
5333 : 1 : );
5334 : 1 : };
5335 : 1 : testData.desc = 'Rational lessThan() ... invalid test#1';
5336 : 1 :
5337 : 1 : testData.skip = false;
5338 : 1 : suites.get(suiteDesc).push(testData);
5339 : 1 :
5340 : 1 : // TEST ### - Rational lessThan() ... invalid test#2
5341 : 1 : testData = {};
5342 [ + ]: 1 : testData.method = () => {
5343 : 1 : let r = new rational_addon.Rational(3, 2);
5344 : 1 : assert.throws(
5345 [ + ]: 1 : () => {
5346 : 1 : r.lessThan(1, 2);
5347 : 1 : },
5348 [ + ]: 1 : (err) => {
5349 : 1 : assert(err instanceof TypeError, `rational_addon.lessThan(1, 2)`);
5350 : 1 : assert.strictEqual(
5351 : 1 : err.message, `Rational: invalid number of arguments`,
5352 : 1 : `rational_addon.lessThan(1, 2)`
5353 : 1 : );
5354 : 1 : return true;
5355 : 1 : }
5356 : 1 : );
5357 : 1 :
5358 : 1 : r = new rational_module.Rational(3, 2);
5359 : 1 : assert.throws(
5360 [ + ]: 1 : () => {
5361 : 1 : r.lessThan(1, 2);
5362 : 1 : },
5363 [ + ]: 1 : (err) => {
5364 : 1 : assert(err instanceof TypeError, `rational_module.lessThan(1, 2)`);
5365 : 1 : assert.strictEqual(
5366 : 1 : err.message, `Rational: invalid number of arguments`,
5367 : 1 : `rational_module.lessThan(1, 2)`
5368 : 1 : );
5369 : 1 : return true;
5370 : 1 : }
5371 : 1 : );
5372 : 1 : };
5373 : 1 : testData.desc = 'Rational lessThan() ... invalid test#2';
5374 : 1 :
5375 : 1 : testData.skip = false;
5376 : 1 : suites.get(suiteDesc).push(testData);
5377 : 1 :
5378 : 1 : // TEST ### - Rational lessThan() ... invalid test#3
5379 : 1 : testData = {};
5380 [ + ]: 1 : testData.method = () => {
5381 : 1 : let r = new rational_addon.Rational(3, 2);
5382 : 1 : assert.throws(
5383 [ + ]: 1 : () => {
5384 : 1 : r.lessThan({});
5385 : 1 : },
5386 [ + ]: 1 : (err) => {
5387 : 1 : assert(err instanceof TypeError, `rational_addon.lessThan({})`);
5388 : 1 : assert.strictEqual(
5389 : 1 : err.message, `Rational: invalid argument`,
5390 : 1 : `rational_addon.lessThan({})`
5391 : 1 : );
5392 : 1 : return true;
5393 : 1 : }
5394 : 1 : );
5395 : 1 :
5396 : 1 : r = new rational_module.Rational(3, 2);
5397 : 1 : assert.throws(
5398 [ + ]: 1 : () => {
5399 : 1 : r.lessThan({});
5400 : 1 : },
5401 [ + ]: 1 : (err) => {
5402 : 1 : assert(err instanceof TypeError, `rational_module.lessThan({})`);
5403 : 1 : assert.strictEqual(
5404 : 1 : err.message, `Rational: invalid argument`,
5405 : 1 : `rational_module.lessThan({})`
5406 : 1 : );
5407 : 1 : return true;
5408 : 1 : }
5409 : 1 : );
5410 : 1 : };
5411 : 1 : testData.desc = 'Rational lessThan() ... invalid test#3';
5412 : 1 :
5413 : 1 : testData.skip = false;
5414 : 1 : suites.get(suiteDesc).push(testData);
5415 : 1 :
5416 : 1 : // TEST ### - Rational lessThan() ... invalid test#4
5417 : 1 : testData = {};
5418 [ + ]: 1 : testData.method = () => {
5419 : 1 : let r = new rational_addon.Rational(3, 2);
5420 : 1 : assert.throws(
5421 [ + ]: 1 : () => {
5422 : 1 : r.lessThan(2n);
5423 : 1 : },
5424 [ + ]: 1 : (err) => {
5425 : 1 : assert(err instanceof TypeError, `rational_addon.lessThan(2n)`);
5426 : 1 : assert.strictEqual(
5427 : 1 : err.message, `Rational: BigInt type is not accepted`,
5428 : 1 : `rational_addon.lessThan(2n)`
5429 : 1 : );
5430 : 1 : return true;
5431 : 1 : }
5432 : 1 : );
5433 : 1 :
5434 : 1 : r = new rational_module.Rational(3, 2);
5435 : 1 : assert.throws(
5436 [ + ]: 1 : () => {
5437 : 1 : r.lessThan(2n);
5438 : 1 : },
5439 [ + ]: 1 : (err) => {
5440 : 1 : assert(err instanceof TypeError, `rational_module.lessThan(2n)`);
5441 : 1 : assert.strictEqual(
5442 : 1 : err.message, `Rational: BigInt type is not accepted`,
5443 : 1 : `rational_module.lessThan(2n)`
5444 : 1 : );
5445 : 1 : return true;
5446 : 1 : }
5447 : 1 : );
5448 : 1 : };
5449 : 1 : testData.desc = 'Rational lessThan() ... invalid test#4';
5450 : 1 :
5451 : 1 : testData.skip = false;
5452 : 1 : suites.get(suiteDesc).push(testData);
5453 : 1 :
5454 : 1 : // TEST ### - Rational lessThan() ... invalid test#5
5455 : 1 : testData = {};
5456 [ + ]: 1 : testData.method = () => {
5457 : 1 : let r = new rational_addon.Rational(3, 2);
5458 : 1 : assert.throws(
5459 [ + ]: 1 : () => {
5460 : 1 : r.lessThan(NaN);
5461 : 1 : },
5462 [ + ]: 1 : (err) => {
5463 : 1 : assert(err instanceof TypeError, `rational_addon.lessThan(NaN)`);
5464 : 1 : assert.strictEqual(
5465 : 1 : err.message, `Rational: invalid argument`,
5466 : 1 : `rational_addon.lessThan(NaN)`
5467 : 1 : );
5468 : 1 : return true;
5469 : 1 : }
5470 : 1 : );
5471 : 1 :
5472 : 1 : r = new rational_module.Rational(3, 2);
5473 : 1 : assert.throws(
5474 [ + ]: 1 : () => {
5475 : 1 : r.lessThan(NaN);
5476 : 1 : },
5477 [ + ]: 1 : (err) => {
5478 : 1 : assert(err instanceof TypeError, `rational_module.lessThan(NaN)`);
5479 : 1 : assert.strictEqual(
5480 : 1 : err.message, `Rational: invalid argument`,
5481 : 1 : `rational_module.lessThan(NaN)`
5482 : 1 : );
5483 : 1 : return true;
5484 : 1 : }
5485 : 1 : );
5486 : 1 : };
5487 : 1 : testData.desc = 'Rational lessThan() ... invalid test#5';
5488 : 1 :
5489 : 1 : testData.skip = false;
5490 : 1 : suites.get(suiteDesc).push(testData);
5491 : 1 :
5492 : 1 : // TEST ### - Rational lessThan() ... invalid test#6
5493 : 1 : testData = {};
5494 [ + ]: 1 : testData.method = () => {
5495 : 1 : let r = new rational_addon.Rational(3, 2);
5496 : 1 : assert.throws(
5497 [ + ]: 1 : () => {
5498 : 1 : r.lessThan('xxx');
5499 : 1 : },
5500 [ + ]: 1 : (err) => {
5501 : 1 : assert(err instanceof TypeError, `rational_addon.lessThan('xxx')`);
5502 : 1 : assert.strictEqual(
5503 : 1 : err.message, `Rational: invalid argument`,
5504 : 1 : `rational_addon.lessThan('xxx')`
5505 : 1 : );
5506 : 1 : return true;
5507 : 1 : }
5508 : 1 : );
5509 : 1 :
5510 : 1 : r = new rational_module.Rational(3, 2);
5511 : 1 : assert.throws(
5512 [ + ]: 1 : () => {
5513 : 1 : r.lessThan('xxx');
5514 : 1 : },
5515 [ + ]: 1 : (err) => {
5516 : 1 : assert(err instanceof TypeError, `rational_module.lessThan('xxx')`);
5517 : 1 : assert.strictEqual(
5518 : 1 : err.message, `Rational: invalid argument`,
5519 : 1 : `rational_module.lessThan('xxx')`
5520 : 1 : );
5521 : 1 : return true;
5522 : 1 : }
5523 : 1 : );
5524 : 1 : };
5525 : 1 : testData.desc = 'Rational lessThan() ... invalid test#6';
5526 : 1 :
5527 : 1 : testData.skip = false;
5528 : 1 : suites.get(suiteDesc).push(testData);
5529 : 1 :
5530 : 1 : // TEST SUITE #24 - Rational greaterThan() function
5531 : 1 : suiteDesc = 'Rational greaterThan() function';
5532 : 1 : suites.set(suiteDesc, []);
5533 : 1 :
5534 : 1 : // TEST ### - Rational greaterThan() ... valid test#1
5535 : 1 : testData = {};
5536 [ + ]: 1 : testData.method = () => {
5537 : 1 : let r = new rational_addon.Rational(-3, 2);
5538 : 1 : let s = new rational_addon.Rational(-1, 2);
5539 : 1 :
5540 : 1 : assert.strictEqual(r.greaterThan(s), false);
5541 : 1 : assert.strictEqual(s.greaterThan(r), true);
5542 : 1 :
5543 : 1 : assert.strictEqual(r.getNumerator(), -3);
5544 : 1 : assert.strictEqual(r.getDenominator(), 2);
5545 : 1 :
5546 : 1 : r = new rational_module.Rational(-3, 2);
5547 : 1 : s = new rational_module.Rational(-1, 2);
5548 : 1 :
5549 : 1 : assert.strictEqual(r.greaterThan(s), false);
5550 : 1 : assert.strictEqual(s.greaterThan(r), true);
5551 : 1 :
5552 : 1 : assert.strictEqual(r.getNumerator(), -3);
5553 : 1 : assert.strictEqual(r.getDenominator(), 2);
5554 : 1 : };
5555 : 1 : testData.desc = 'Rational greaterThan() ... valid test#1';
5556 : 1 :
5557 : 1 : testData.skip = false;
5558 : 1 : suites.get(suiteDesc).push(testData);
5559 : 1 :
5560 : 1 : // TEST ### - Rational greaterThan() ... valid test#2
5561 : 1 : testData = {};
5562 [ + ]: 1 : testData.method = () => {
5563 : 1 : let r = new rational_addon.Rational();
5564 : 1 : let s = new rational_addon.Rational(-1, 2);
5565 : 1 :
5566 : 1 : assert.strictEqual(r.greaterThan(s), true);
5567 : 1 : assert.strictEqual(s.greaterThan(r), false);
5568 : 1 :
5569 : 1 : assert.strictEqual(r.getNumerator(), 0);
5570 : 1 : assert.strictEqual(r.getDenominator(), 1);
5571 : 1 :
5572 : 1 : r = new rational_module.Rational();
5573 : 1 : s = new rational_module.Rational(-1, 2);
5574 : 1 :
5575 : 1 : assert.strictEqual(r.greaterThan(s), true);
5576 : 1 : assert.strictEqual(s.greaterThan(r), false);
5577 : 1 :
5578 : 1 : assert.strictEqual(r.getNumerator(), 0);
5579 : 1 : assert.strictEqual(r.getDenominator(), 1);
5580 : 1 : };
5581 : 1 : testData.desc = 'Rational greaterThan() ... valid test#2';
5582 : 1 :
5583 : 1 : testData.skip = false;
5584 : 1 : suites.get(suiteDesc).push(testData);
5585 : 1 :
5586 : 1 : // TEST ### - Rational greaterThan() ... valid test#3
5587 : 1 : testData = {};
5588 [ + ]: 1 : testData.method = () => {
5589 : 1 : let r = new rational_addon.Rational();
5590 : 1 : let s = new rational_addon.Rational(-1, 2);
5591 : 1 :
5592 : 1 : assert.strictEqual(r.greaterThan(-1), true);
5593 : 1 : assert.strictEqual(s.greaterThan(0), false);
5594 : 1 :
5595 : 1 : assert.strictEqual(r.getNumerator(), 0);
5596 : 1 : assert.strictEqual(r.getDenominator(), 1);
5597 : 1 :
5598 : 1 : r = new rational_module.Rational();
5599 : 1 : s = new rational_module.Rational(-1, 2);
5600 : 1 :
5601 : 1 : assert.strictEqual(r.greaterThan(-1), true);
5602 : 1 : assert.strictEqual(s.greaterThan(0), false);
5603 : 1 :
5604 : 1 : assert.strictEqual(r.getNumerator(), 0);
5605 : 1 : assert.strictEqual(r.getDenominator(), 1);
5606 : 1 : };
5607 : 1 : testData.desc = 'Rational greaterThan() ... valid test#3';
5608 : 1 :
5609 : 1 : testData.skip = false;
5610 : 1 : suites.get(suiteDesc).push(testData);
5611 : 1 :
5612 : 1 : // TEST ### - Rational greaterThan() ... invalid test#1
5613 : 1 : testData = {};
5614 [ + ]: 1 : testData.method = () => {
5615 : 1 : let r = new rational_addon.Rational(3, 2);
5616 : 1 : assert.throws(
5617 [ + ]: 1 : () => {
5618 : 1 : r.greaterThan();
5619 : 1 : },
5620 [ + ]: 1 : (err) => {
5621 : 1 : assert(err instanceof TypeError, `rational_addon.greaterThan()`);
5622 : 1 : assert.strictEqual(
5623 : 1 : err.message, `Rational: invalid number of arguments`,
5624 : 1 : `rational_addon.greaterThan()`
5625 : 1 : );
5626 : 1 : return true;
5627 : 1 : }
5628 : 1 : );
5629 : 1 :
5630 : 1 : r = new rational_module.Rational(3, 2);
5631 : 1 : assert.throws(
5632 [ + ]: 1 : () => {
5633 : 1 : r.greaterThan();
5634 : 1 : },
5635 [ + ]: 1 : (err) => {
5636 : 1 : assert(err instanceof TypeError, `rational_module.greaterThan(1, 2)`);
5637 : 1 : assert.strictEqual(
5638 : 1 : err.message, `Rational: invalid number of arguments`,
5639 : 1 : `rational_module.greaterThan()`
5640 : 1 : );
5641 : 1 : return true;
5642 : 1 : }
5643 : 1 : );
5644 : 1 : };
5645 : 1 : testData.desc = 'Rational greaterThan() ... invalid test#1';
5646 : 1 :
5647 : 1 : testData.skip = false;
5648 : 1 : suites.get(suiteDesc).push(testData);
5649 : 1 :
5650 : 1 : // TEST ### - Rational greaterThan() ... invalid test#2
5651 : 1 : testData = {};
5652 [ + ]: 1 : testData.method = () => {
5653 : 1 : let r = new rational_addon.Rational(3, 2);
5654 : 1 : assert.throws(
5655 [ + ]: 1 : () => {
5656 : 1 : r.greaterThan(1, 2);
5657 : 1 : },
5658 [ + ]: 1 : (err) => {
5659 : 1 : assert(err instanceof TypeError, `rational_addon.greaterThan(1, 2)`);
5660 : 1 : assert.strictEqual(
5661 : 1 : err.message, `Rational: invalid number of arguments`,
5662 : 1 : `rational_addon.greaterThan(1, 2)`
5663 : 1 : );
5664 : 1 : return true;
5665 : 1 : }
5666 : 1 : );
5667 : 1 :
5668 : 1 : r = new rational_module.Rational(3, 2);
5669 : 1 : assert.throws(
5670 [ + ]: 1 : () => {
5671 : 1 : r.greaterThan(1, 2);
5672 : 1 : },
5673 [ + ]: 1 : (err) => {
5674 : 1 : assert(err instanceof TypeError, `rational_module.greaterThan(1, 2)`);
5675 : 1 : assert.strictEqual(
5676 : 1 : err.message, `Rational: invalid number of arguments`,
5677 : 1 : `rational_module.greaterThan(1, 2)`
5678 : 1 : );
5679 : 1 : return true;
5680 : 1 : }
5681 : 1 : );
5682 : 1 : };
5683 : 1 : testData.desc = 'Rational greaterThan() ... invalid test#2';
5684 : 1 :
5685 : 1 : testData.skip = false;
5686 : 1 : suites.get(suiteDesc).push(testData);
5687 : 1 :
5688 : 1 : // TEST ### - Rational greaterThan() ... invalid test#3
5689 : 1 : testData = {};
5690 [ + ]: 1 : testData.method = () => {
5691 : 1 : let r = new rational_addon.Rational(3, 2);
5692 : 1 : assert.throws(
5693 [ + ]: 1 : () => {
5694 : 1 : r.greaterThan({});
5695 : 1 : },
5696 [ + ]: 1 : (err) => {
5697 : 1 : assert(err instanceof TypeError, `rational_addon.greaterThan({})`);
5698 : 1 : assert.strictEqual(
5699 : 1 : err.message, `Rational: invalid argument`,
5700 : 1 : `rational_addon.greaterThan({})`
5701 : 1 : );
5702 : 1 : return true;
5703 : 1 : }
5704 : 1 : );
5705 : 1 :
5706 : 1 : r = new rational_module.Rational(3, 2);
5707 : 1 : assert.throws(
5708 [ + ]: 1 : () => {
5709 : 1 : r.greaterThan({});
5710 : 1 : },
5711 [ + ]: 1 : (err) => {
5712 : 1 : assert(err instanceof TypeError, `rational_module.greaterThan({})`);
5713 : 1 : assert.strictEqual(
5714 : 1 : err.message, `Rational: invalid argument`,
5715 : 1 : `rational_module.greaterThan({})`
5716 : 1 : );
5717 : 1 : return true;
5718 : 1 : }
5719 : 1 : );
5720 : 1 : };
5721 : 1 : testData.desc = 'Rational greaterThan() ... invalid test#3';
5722 : 1 :
5723 : 1 : testData.skip = false;
5724 : 1 : suites.get(suiteDesc).push(testData);
5725 : 1 :
5726 : 1 : // TEST ### - Rational greaterThan() ... invalid test#4
5727 : 1 : testData = {};
5728 [ + ]: 1 : testData.method = () => {
5729 : 1 : let r = new rational_addon.Rational(3, 2);
5730 : 1 : assert.throws(
5731 [ + ]: 1 : () => {
5732 : 1 : r.greaterThan(2n);
5733 : 1 : },
5734 [ + ]: 1 : (err) => {
5735 : 1 : assert(err instanceof TypeError, `rational_addon.greaterThan(2n)`);
5736 : 1 : assert.strictEqual(
5737 : 1 : err.message, `Rational: BigInt type is not accepted`,
5738 : 1 : `rational_addon.greaterThan(2n)`
5739 : 1 : );
5740 : 1 : return true;
5741 : 1 : }
5742 : 1 : );
5743 : 1 :
5744 : 1 : r = new rational_module.Rational(3, 2);
5745 : 1 : assert.throws(
5746 [ + ]: 1 : () => {
5747 : 1 : r.greaterThan(2n);
5748 : 1 : },
5749 [ + ]: 1 : (err) => {
5750 : 1 : assert(err instanceof TypeError, `rational_module.greaterThan(2n)`);
5751 : 1 : assert.strictEqual(
5752 : 1 : err.message, `Rational: BigInt type is not accepted`,
5753 : 1 : `rational_module.greaterThan(2n)`
5754 : 1 : );
5755 : 1 : return true;
5756 : 1 : }
5757 : 1 : );
5758 : 1 : };
5759 : 1 : testData.desc = 'Rational greaterThan() ... invalid test#4';
5760 : 1 :
5761 : 1 : testData.skip = false;
5762 : 1 : suites.get(suiteDesc).push(testData);
5763 : 1 :
5764 : 1 : // TEST ### - Rational greaterThan() ... invalid test#5
5765 : 1 : testData = {};
5766 [ + ]: 1 : testData.method = () => {
5767 : 1 : let r = new rational_addon.Rational(3, 2);
5768 : 1 : assert.throws(
5769 [ + ]: 1 : () => {
5770 : 1 : r.greaterThan(NaN);
5771 : 1 : },
5772 [ + ]: 1 : (err) => {
5773 : 1 : assert(err instanceof TypeError, `rational_addon.greaterThan(NaN)`);
5774 : 1 : assert.strictEqual(
5775 : 1 : err.message, `Rational: invalid argument`,
5776 : 1 : `rational_addon.greaterThan(NaN)`
5777 : 1 : );
5778 : 1 : return true;
5779 : 1 : }
5780 : 1 : );
5781 : 1 :
5782 : 1 : r = new rational_module.Rational(3, 2);
5783 : 1 : assert.throws(
5784 [ + ]: 1 : () => {
5785 : 1 : r.greaterThan(NaN);
5786 : 1 : },
5787 [ + ]: 1 : (err) => {
5788 : 1 : assert(err instanceof TypeError, `rational_module.greaterThan(NaN)`);
5789 : 1 : assert.strictEqual(
5790 : 1 : err.message, `Rational: invalid argument`,
5791 : 1 : `rational_module.greaterThan(NaN)`
5792 : 1 : );
5793 : 1 : return true;
5794 : 1 : }
5795 : 1 : );
5796 : 1 : };
5797 : 1 : testData.desc = 'Rational greaterThan() ... invalid test#5';
5798 : 1 :
5799 : 1 : testData.skip = false;
5800 : 1 : suites.get(suiteDesc).push(testData);
5801 : 1 :
5802 : 1 : // TEST ### - Rational greaterThan() ... invalid test#6
5803 : 1 : testData = {};
5804 [ + ]: 1 : testData.method = () => {
5805 : 1 : let r = new rational_addon.Rational(3, 2);
5806 : 1 : assert.throws(
5807 [ + ]: 1 : () => {
5808 : 1 : r.greaterThan('xxx');
5809 : 1 : },
5810 [ + ]: 1 : (err) => {
5811 : 1 : assert(err instanceof TypeError, `rational_addon.greaterThan('xxx')`);
5812 : 1 : assert.strictEqual(
5813 : 1 : err.message, `Rational: invalid argument`,
5814 : 1 : `rational_addon.greaterThan('xxx')`
5815 : 1 : );
5816 : 1 : return true;
5817 : 1 : }
5818 : 1 : );
5819 : 1 :
5820 : 1 : r = new rational_module.Rational(3, 2);
5821 : 1 : assert.throws(
5822 [ + ]: 1 : () => {
5823 : 1 : r.greaterThan('xxx');
5824 : 1 : },
5825 [ + ]: 1 : (err) => {
5826 : 1 : assert(err instanceof TypeError, `rational_module.greaterThan('xxx')`);
5827 : 1 : assert.strictEqual(
5828 : 1 : err.message, `Rational: invalid argument`,
5829 : 1 : `rational_module.greaterThan('xxx')`
5830 : 1 : );
5831 : 1 : return true;
5832 : 1 : }
5833 : 1 : );
5834 : 1 : };
5835 : 1 : testData.desc = 'Rational greaterThan() ... invalid test#6';
5836 : 1 :
5837 : 1 : testData.skip = false;
5838 : 1 : suites.get(suiteDesc).push(testData);
5839 : 1 :
5840 : 1 : // TEST SUITE #25 - Rational equalTo() function
5841 : 1 : suiteDesc = 'Rational equalTo() function';
5842 : 1 : suites.set(suiteDesc, []);
5843 : 1 :
5844 : 1 : // TEST ### - Rational equalTo() ... valid test#1
5845 : 1 : testData = {};
5846 [ + ]: 1 : testData.method = () => {
5847 : 1 : let r = new rational_addon.Rational(-3, 2);
5848 : 1 : let s = new rational_addon.Rational(-1, 2);
5849 : 1 :
5850 : 1 : assert.strictEqual(r.equalTo(s), false);
5851 : 1 : assert.strictEqual(s.equalTo(r), false);
5852 : 1 :
5853 : 1 : assert.strictEqual(r.getNumerator(), -3);
5854 : 1 : assert.strictEqual(r.getDenominator(), 2);
5855 : 1 :
5856 : 1 : r = new rational_module.Rational(-3, 2);
5857 : 1 : s = new rational_module.Rational(-1, 2);
5858 : 1 :
5859 : 1 : assert.strictEqual(r.equalTo(s), false);
5860 : 1 : assert.strictEqual(s.equalTo(r), false);
5861 : 1 :
5862 : 1 : assert.strictEqual(r.getNumerator(), -3);
5863 : 1 : assert.strictEqual(r.getDenominator(), 2);
5864 : 1 : };
5865 : 1 : testData.desc = 'Rational equalTo() ... valid test#1';
5866 : 1 :
5867 : 1 : testData.skip = false;
5868 : 1 : suites.get(suiteDesc).push(testData);
5869 : 1 :
5870 : 1 : // TEST ### - Rational equalTo() ... valid test#2
5871 : 1 : testData = {};
5872 [ + ]: 1 : testData.method = () => {
5873 : 1 : let r = new rational_addon.Rational();
5874 : 1 : let s = new rational_addon.Rational();
5875 : 1 :
5876 : 1 : assert.strictEqual(r.equalTo(s), true);
5877 : 1 : assert.strictEqual(s.equalTo(r), true);
5878 : 1 :
5879 : 1 : assert.strictEqual(r.getNumerator(), 0);
5880 : 1 : assert.strictEqual(r.getDenominator(), 1);
5881 : 1 :
5882 : 1 : r = new rational_module.Rational();
5883 : 1 : s = new rational_module.Rational();
5884 : 1 :
5885 : 1 : assert.strictEqual(r.equalTo(s), true);
5886 : 1 : assert.strictEqual(s.equalTo(r), true);
5887 : 1 :
5888 : 1 : assert.strictEqual(r.getNumerator(), 0);
5889 : 1 : assert.strictEqual(r.getDenominator(), 1);
5890 : 1 : };
5891 : 1 : testData.desc = 'Rational equalTo() ... valid test#2';
5892 : 1 :
5893 : 1 : testData.skip = false;
5894 : 1 : suites.get(suiteDesc).push(testData);
5895 : 1 :
5896 : 1 : // TEST ### - Rational equalTo() ... valid test#3
5897 : 1 : testData = {};
5898 [ + ]: 1 : testData.method = () => {
5899 : 1 : let r = new rational_addon.Rational();
5900 : 1 : let s = new rational_addon.Rational(-2, 1);
5901 : 1 :
5902 : 1 : assert.strictEqual(r.equalTo(0), true);
5903 : 1 : assert.strictEqual(s.equalTo(-2), true);
5904 : 1 :
5905 : 1 : assert.strictEqual(r.getNumerator(), 0);
5906 : 1 : assert.strictEqual(r.getDenominator(), 1);
5907 : 1 :
5908 : 1 : r = new rational_module.Rational();
5909 : 1 : s = new rational_module.Rational(-2, 1);
5910 : 1 :
5911 : 1 : assert.strictEqual(r.equalTo(0), true);
5912 : 1 : assert.strictEqual(s.equalTo(-2), true);
5913 : 1 :
5914 : 1 : assert.strictEqual(r.getNumerator(), 0);
5915 : 1 : assert.strictEqual(r.getDenominator(), 1);
5916 : 1 : };
5917 : 1 : testData.desc = 'Rational equalTo() ... valid test#3';
5918 : 1 :
5919 : 1 : testData.skip = false;
5920 : 1 : suites.get(suiteDesc).push(testData);
5921 : 1 :
5922 : 1 : // TEST ### - Rational equalTo() ... invalid test#1
5923 : 1 : testData = {};
5924 [ + ]: 1 : testData.method = () => {
5925 : 1 : let r = new rational_addon.Rational(3, 2);
5926 : 1 : assert.throws(
5927 [ + ]: 1 : () => {
5928 : 1 : r.equalTo();
5929 : 1 : },
5930 [ + ]: 1 : (err) => {
5931 : 1 : assert(err instanceof TypeError, `rational_addon.equalTo()`);
5932 : 1 : assert.strictEqual(
5933 : 1 : err.message, `Rational: invalid number of arguments`,
5934 : 1 : `rational_addon.equalTo()`
5935 : 1 : );
5936 : 1 : return true;
5937 : 1 : }
5938 : 1 : );
5939 : 1 :
5940 : 1 : r = new rational_module.Rational(3, 2);
5941 : 1 : assert.throws(
5942 [ + ]: 1 : () => {
5943 : 1 : r.equalTo();
5944 : 1 : },
5945 [ + ]: 1 : (err) => {
5946 : 1 : assert(err instanceof TypeError, `rational_module.equalTo(1, 2)`);
5947 : 1 : assert.strictEqual(
5948 : 1 : err.message, `Rational: invalid number of arguments`,
5949 : 1 : `rational_module.equalTo()`
5950 : 1 : );
5951 : 1 : return true;
5952 : 1 : }
5953 : 1 : );
5954 : 1 : };
5955 : 1 : testData.desc = 'Rational equalTo() ... invalid test#1';
5956 : 1 :
5957 : 1 : testData.skip = false;
5958 : 1 : suites.get(suiteDesc).push(testData);
5959 : 1 :
5960 : 1 : // TEST ### - Rational equalTo() ... invalid test#2
5961 : 1 : testData = {};
5962 [ + ]: 1 : testData.method = () => {
5963 : 1 : let r = new rational_addon.Rational(3, 2);
5964 : 1 : assert.throws(
5965 [ + ]: 1 : () => {
5966 : 1 : r.equalTo(1, 2);
5967 : 1 : },
5968 [ + ]: 1 : (err) => {
5969 : 1 : assert(err instanceof TypeError, `rational_addon.equalTo(1, 2)`);
5970 : 1 : assert.strictEqual(
5971 : 1 : err.message, `Rational: invalid number of arguments`,
5972 : 1 : `rational_addon.equalTo(1, 2)`
5973 : 1 : );
5974 : 1 : return true;
5975 : 1 : }
5976 : 1 : );
5977 : 1 :
5978 : 1 : r = new rational_module.Rational(3, 2);
5979 : 1 : assert.throws(
5980 [ + ]: 1 : () => {
5981 : 1 : r.equalTo(1, 2);
5982 : 1 : },
5983 [ + ]: 1 : (err) => {
5984 : 1 : assert(err instanceof TypeError, `rational_module.equalTo(1, 2)`);
5985 : 1 : assert.strictEqual(
5986 : 1 : err.message, `Rational: invalid number of arguments`,
5987 : 1 : `rational_module.equalTo(1, 2)`
5988 : 1 : );
5989 : 1 : return true;
5990 : 1 : }
5991 : 1 : );
5992 : 1 : };
5993 : 1 : testData.desc = 'Rational equalTo() ... invalid test#2';
5994 : 1 :
5995 : 1 : testData.skip = false;
5996 : 1 : suites.get(suiteDesc).push(testData);
5997 : 1 :
5998 : 1 : // TEST ### - Rational equalTo() ... invalid test#3
5999 : 1 : testData = {};
6000 [ + ]: 1 : testData.method = () => {
6001 : 1 : let r = new rational_addon.Rational(3, 2);
6002 : 1 : assert.throws(
6003 [ + ]: 1 : () => {
6004 : 1 : r.equalTo({});
6005 : 1 : },
6006 [ + ]: 1 : (err) => {
6007 : 1 : assert(err instanceof TypeError, `rational_addon.equalTo({})`);
6008 : 1 : assert.strictEqual(
6009 : 1 : err.message, `Rational: invalid argument`,
6010 : 1 : `rational_addon.equalTo({})`
6011 : 1 : );
6012 : 1 : return true;
6013 : 1 : }
6014 : 1 : );
6015 : 1 :
6016 : 1 : r = new rational_module.Rational(3, 2);
6017 : 1 : assert.throws(
6018 [ + ]: 1 : () => {
6019 : 1 : r.equalTo({});
6020 : 1 : },
6021 [ + ]: 1 : (err) => {
6022 : 1 : assert(err instanceof TypeError, `rational_module.equalTo({})`);
6023 : 1 : assert.strictEqual(
6024 : 1 : err.message, `Rational: invalid argument`,
6025 : 1 : `rational_module.equalTo({})`
6026 : 1 : );
6027 : 1 : return true;
6028 : 1 : }
6029 : 1 : );
6030 : 1 : };
6031 : 1 : testData.desc = 'Rational equalTo() ... invalid test#3';
6032 : 1 :
6033 : 1 : testData.skip = false;
6034 : 1 : suites.get(suiteDesc).push(testData);
6035 : 1 :
6036 : 1 : // TEST ### - Rational equalTo() ... invalid test#4
6037 : 1 : testData = {};
6038 [ + ]: 1 : testData.method = () => {
6039 : 1 : let r = new rational_addon.Rational(3, 2);
6040 : 1 : assert.throws(
6041 [ + ]: 1 : () => {
6042 : 1 : r.equalTo(2n);
6043 : 1 : },
6044 [ + ]: 1 : (err) => {
6045 : 1 : assert(err instanceof TypeError, `rational_addon.equalTo(2n)`);
6046 : 1 : assert.strictEqual(
6047 : 1 : err.message, `Rational: BigInt type is not accepted`,
6048 : 1 : `rational_addon.equalTo(2n)`
6049 : 1 : );
6050 : 1 : return true;
6051 : 1 : }
6052 : 1 : );
6053 : 1 :
6054 : 1 : r = new rational_module.Rational(3, 2);
6055 : 1 : assert.throws(
6056 [ + ]: 1 : () => {
6057 : 1 : r.equalTo(2n);
6058 : 1 : },
6059 [ + ]: 1 : (err) => {
6060 : 1 : assert(err instanceof TypeError, `rational_module.equalTo(2n)`);
6061 : 1 : assert.strictEqual(
6062 : 1 : err.message, `Rational: BigInt type is not accepted`,
6063 : 1 : `rational_module.equalTo(2n)`
6064 : 1 : );
6065 : 1 : return true;
6066 : 1 : }
6067 : 1 : );
6068 : 1 : };
6069 : 1 : testData.desc = 'Rational equalTo() ... invalid test#4';
6070 : 1 :
6071 : 1 : testData.skip = false;
6072 : 1 : suites.get(suiteDesc).push(testData);
6073 : 1 :
6074 : 1 : // TEST ### - Rational equalTo() ... invalid test#5
6075 : 1 : testData = {};
6076 [ + ]: 1 : testData.method = () => {
6077 : 1 : let r = new rational_addon.Rational(3, 2);
6078 : 1 : assert.throws(
6079 [ + ]: 1 : () => {
6080 : 1 : r.equalTo(NaN);
6081 : 1 : },
6082 [ + ]: 1 : (err) => {
6083 : 1 : assert(err instanceof TypeError, `rational_addon.equalTo(NaN)`);
6084 : 1 : assert.strictEqual(
6085 : 1 : err.message, `Rational: invalid argument`,
6086 : 1 : `rational_addon.equalTo(NaN)`
6087 : 1 : );
6088 : 1 : return true;
6089 : 1 : }
6090 : 1 : );
6091 : 1 :
6092 : 1 : r = new rational_module.Rational(3, 2);
6093 : 1 : assert.throws(
6094 [ + ]: 1 : () => {
6095 : 1 : r.equalTo(NaN);
6096 : 1 : },
6097 [ + ]: 1 : (err) => {
6098 : 1 : assert(err instanceof TypeError, `rational_module.equalTo(NaN)`);
6099 : 1 : assert.strictEqual(
6100 : 1 : err.message, `Rational: invalid argument`,
6101 : 1 : `rational_module.equalTo(NaN)`
6102 : 1 : );
6103 : 1 : return true;
6104 : 1 : }
6105 : 1 : );
6106 : 1 : };
6107 : 1 : testData.desc = 'Rational equalTo() ... invalid test#5';
6108 : 1 :
6109 : 1 : testData.skip = false;
6110 : 1 : suites.get(suiteDesc).push(testData);
6111 : 1 :
6112 : 1 : // TEST ### - Rational equalTo() ... invalid test#6
6113 : 1 : testData = {};
6114 [ + ]: 1 : testData.method = () => {
6115 : 1 : let r = new rational_addon.Rational(3, 2);
6116 : 1 : assert.throws(
6117 [ + ]: 1 : () => {
6118 : 1 : r.equalTo('xxx');
6119 : 1 : },
6120 [ + ]: 1 : (err) => {
6121 : 1 : assert(err instanceof TypeError, `rational_addon.equalTo('xxx')`);
6122 : 1 : assert.strictEqual(
6123 : 1 : err.message, `Rational: invalid argument`,
6124 : 1 : `rational_addon.equalTo('xxx')`
6125 : 1 : );
6126 : 1 : return true;
6127 : 1 : }
6128 : 1 : );
6129 : 1 :
6130 : 1 : r = new rational_module.Rational(3, 2);
6131 : 1 : assert.throws(
6132 [ + ]: 1 : () => {
6133 : 1 : r.equalTo('xxx');
6134 : 1 : },
6135 [ + ]: 1 : (err) => {
6136 : 1 : assert(err instanceof TypeError, `rational_module.equalTo('xxx')`);
6137 : 1 : assert.strictEqual(
6138 : 1 : err.message, `Rational: invalid argument`,
6139 : 1 : `rational_module.equalTo('xxx')`
6140 : 1 : );
6141 : 1 : return true;
6142 : 1 : }
6143 : 1 : );
6144 : 1 : };
6145 : 1 : testData.desc = 'Rational equalTo() ... invalid test#6';
6146 : 1 :
6147 : 1 : testData.skip = false;
6148 : 1 : suites.get(suiteDesc).push(testData);
6149 : 1 :
6150 : 1 : // TEST SUITE #26 - Rational notEqualTo() function
6151 : 1 : suiteDesc = 'Rational notEqualTo() function';
6152 : 1 : suites.set(suiteDesc, []);
6153 : 1 :
6154 : 1 : // TEST ### - Rational notEqualTo() ... valid test#1
6155 : 1 : testData = {};
6156 [ + ]: 1 : testData.method = () => {
6157 : 1 : let r = new rational_addon.Rational(-3, 2);
6158 : 1 : let s = new rational_addon.Rational(-1, 2);
6159 : 1 :
6160 : 1 : assert.strictEqual(r.notEqualTo(s), true);
6161 : 1 : assert.strictEqual(s.notEqualTo(r), true);
6162 : 1 :
6163 : 1 : assert.strictEqual(r.getNumerator(), -3);
6164 : 1 : assert.strictEqual(r.getDenominator(), 2);
6165 : 1 :
6166 : 1 : r = new rational_module.Rational(-3, 2);
6167 : 1 : s = new rational_module.Rational(-1, 2);
6168 : 1 :
6169 : 1 : assert.strictEqual(r.notEqualTo(s), true);
6170 : 1 : assert.strictEqual(s.notEqualTo(r), true);
6171 : 1 :
6172 : 1 : assert.strictEqual(r.getNumerator(), -3);
6173 : 1 : assert.strictEqual(r.getDenominator(), 2);
6174 : 1 : };
6175 : 1 : testData.desc = 'Rational notEqualTo() ... valid test#1';
6176 : 1 :
6177 : 1 : testData.skip = false;
6178 : 1 : suites.get(suiteDesc).push(testData);
6179 : 1 :
6180 : 1 : // TEST ### - Rational notEqualTo() ... valid test#2
6181 : 1 : testData = {};
6182 [ + ]: 1 : testData.method = () => {
6183 : 1 : let r = new rational_addon.Rational();
6184 : 1 : let s = new rational_addon.Rational();
6185 : 1 :
6186 : 1 : assert.strictEqual(r.notEqualTo(s), false);
6187 : 1 : assert.strictEqual(s.notEqualTo(r), false);
6188 : 1 :
6189 : 1 : assert.strictEqual(r.getNumerator(), 0);
6190 : 1 : assert.strictEqual(r.getDenominator(), 1);
6191 : 1 :
6192 : 1 : r = new rational_module.Rational();
6193 : 1 : s = new rational_module.Rational();
6194 : 1 :
6195 : 1 : assert.strictEqual(r.notEqualTo(s), false);
6196 : 1 : assert.strictEqual(s.notEqualTo(r), false);
6197 : 1 :
6198 : 1 : assert.strictEqual(r.getNumerator(), 0);
6199 : 1 : assert.strictEqual(r.getDenominator(), 1);
6200 : 1 : };
6201 : 1 : testData.desc = 'Rational notEqualTo() ... valid test#2';
6202 : 1 :
6203 : 1 : testData.skip = false;
6204 : 1 : suites.get(suiteDesc).push(testData);
6205 : 1 :
6206 : 1 : // TEST ### - Rational notEqualTo() ... valid test#3
6207 : 1 : testData = {};
6208 [ + ]: 1 : testData.method = () => {
6209 : 1 : let r = new rational_addon.Rational();
6210 : 1 : let s = new rational_addon.Rational(-2, 1);
6211 : 1 :
6212 : 1 : assert.strictEqual(r.notEqualTo(0), false);
6213 : 1 : assert.strictEqual(s.notEqualTo(-2), false);
6214 : 1 :
6215 : 1 : assert.strictEqual(r.getNumerator(), 0);
6216 : 1 : assert.strictEqual(r.getDenominator(), 1);
6217 : 1 :
6218 : 1 : r = new rational_module.Rational();
6219 : 1 : s = new rational_module.Rational(-2, 1);
6220 : 1 :
6221 : 1 : assert.strictEqual(r.notEqualTo(0), false);
6222 : 1 : assert.strictEqual(s.notEqualTo(-2), false);
6223 : 1 :
6224 : 1 : assert.strictEqual(r.getNumerator(), 0);
6225 : 1 : assert.strictEqual(r.getDenominator(), 1);
6226 : 1 : };
6227 : 1 : testData.desc = 'Rational notEqualTo() ... valid test#3';
6228 : 1 :
6229 : 1 : testData.skip = false;
6230 : 1 : suites.get(suiteDesc).push(testData);
6231 : 1 :
6232 : 1 : // TEST ### - Rational notEqualTo() ... invalid test#1
6233 : 1 : testData = {};
6234 [ + ]: 1 : testData.method = () => {
6235 : 1 : let r = new rational_addon.Rational(3, 2);
6236 : 1 : assert.throws(
6237 [ + ]: 1 : () => {
6238 : 1 : r.notEqualTo();
6239 : 1 : },
6240 [ + ]: 1 : (err) => {
6241 : 1 : assert(err instanceof TypeError, `rational_addon.notEqualTo()`);
6242 : 1 : assert.strictEqual(
6243 : 1 : err.message, `Rational: invalid number of arguments`,
6244 : 1 : `rational_addon.notEqualTo()`
6245 : 1 : );
6246 : 1 : return true;
6247 : 1 : }
6248 : 1 : );
6249 : 1 :
6250 : 1 : r = new rational_module.Rational(3, 2);
6251 : 1 : assert.throws(
6252 [ + ]: 1 : () => {
6253 : 1 : r.notEqualTo();
6254 : 1 : },
6255 [ + ]: 1 : (err) => {
6256 : 1 : assert(err instanceof TypeError, `rational_module.notEqualTo(1, 2)`);
6257 : 1 : assert.strictEqual(
6258 : 1 : err.message, `Rational: invalid number of arguments`,
6259 : 1 : `rational_module.notEqualTo()`
6260 : 1 : );
6261 : 1 : return true;
6262 : 1 : }
6263 : 1 : );
6264 : 1 : };
6265 : 1 : testData.desc = 'Rational notEqualTo() ... invalid test#1';
6266 : 1 :
6267 : 1 : testData.skip = false;
6268 : 1 : suites.get(suiteDesc).push(testData);
6269 : 1 :
6270 : 1 : // TEST ### - Rational notEqualTo() ... invalid test#2
6271 : 1 : testData = {};
6272 [ + ]: 1 : testData.method = () => {
6273 : 1 : let r = new rational_addon.Rational(3, 2);
6274 : 1 : assert.throws(
6275 [ + ]: 1 : () => {
6276 : 1 : r.notEqualTo(1, 2);
6277 : 1 : },
6278 [ + ]: 1 : (err) => {
6279 : 1 : assert(err instanceof TypeError, `rational_addon.notEqualTo(1, 2)`);
6280 : 1 : assert.strictEqual(
6281 : 1 : err.message, `Rational: invalid number of arguments`,
6282 : 1 : `rational_addon.notEqualTo(1, 2)`
6283 : 1 : );
6284 : 1 : return true;
6285 : 1 : }
6286 : 1 : );
6287 : 1 :
6288 : 1 : r = new rational_module.Rational(3, 2);
6289 : 1 : assert.throws(
6290 [ + ]: 1 : () => {
6291 : 1 : r.notEqualTo(1, 2);
6292 : 1 : },
6293 [ + ]: 1 : (err) => {
6294 : 1 : assert(err instanceof TypeError, `rational_module.notEqualTo(1, 2)`);
6295 : 1 : assert.strictEqual(
6296 : 1 : err.message, `Rational: invalid number of arguments`,
6297 : 1 : `rational_module.notEqualTo(1, 2)`
6298 : 1 : );
6299 : 1 : return true;
6300 : 1 : }
6301 : 1 : );
6302 : 1 : };
6303 : 1 : testData.desc = 'Rational notEqualTo() ... invalid test#2';
6304 : 1 :
6305 : 1 : testData.skip = false;
6306 : 1 : suites.get(suiteDesc).push(testData);
6307 : 1 :
6308 : 1 : // TEST ### - Rational notEqualTo() ... invalid test#3
6309 : 1 : testData = {};
6310 [ + ]: 1 : testData.method = () => {
6311 : 1 : let r = new rational_addon.Rational(3, 2);
6312 : 1 : assert.throws(
6313 [ + ]: 1 : () => {
6314 : 1 : r.notEqualTo({});
6315 : 1 : },
6316 [ + ]: 1 : (err) => {
6317 : 1 : assert(err instanceof TypeError, `rational_addon.notEqualTo({})`);
6318 : 1 : assert.strictEqual(
6319 : 1 : err.message, `Rational: invalid argument`,
6320 : 1 : `rational_addon.notEqualTo({})`
6321 : 1 : );
6322 : 1 : return true;
6323 : 1 : }
6324 : 1 : );
6325 : 1 :
6326 : 1 : r = new rational_module.Rational(3, 2);
6327 : 1 : assert.throws(
6328 [ + ]: 1 : () => {
6329 : 1 : r.notEqualTo({});
6330 : 1 : },
6331 [ + ]: 1 : (err) => {
6332 : 1 : assert(err instanceof TypeError, `rational_module.notEqualTo({})`);
6333 : 1 : assert.strictEqual(
6334 : 1 : err.message, `Rational: invalid argument`,
6335 : 1 : `rational_module.notEqualTo({})`
6336 : 1 : );
6337 : 1 : return true;
6338 : 1 : }
6339 : 1 : );
6340 : 1 : };
6341 : 1 : testData.desc = 'Rational notEqualTo() ... invalid test#3';
6342 : 1 :
6343 : 1 : testData.skip = false;
6344 : 1 : suites.get(suiteDesc).push(testData);
6345 : 1 :
6346 : 1 : // TEST ### - Rational notEqualTo() ... invalid test#4
6347 : 1 : testData = {};
6348 [ + ]: 1 : testData.method = () => {
6349 : 1 : let r = new rational_addon.Rational(3, 2);
6350 : 1 : assert.throws(
6351 [ + ]: 1 : () => {
6352 : 1 : r.notEqualTo(2n);
6353 : 1 : },
6354 [ + ]: 1 : (err) => {
6355 : 1 : assert(err instanceof TypeError, `rational_addon.notEqualTo(2n)`);
6356 : 1 : assert.strictEqual(
6357 : 1 : err.message, `Rational: BigInt type is not accepted`,
6358 : 1 : `rational_addon.notEqualTo(2n)`
6359 : 1 : );
6360 : 1 : return true;
6361 : 1 : }
6362 : 1 : );
6363 : 1 :
6364 : 1 : r = new rational_module.Rational(3, 2);
6365 : 1 : assert.throws(
6366 [ + ]: 1 : () => {
6367 : 1 : r.notEqualTo(2n);
6368 : 1 : },
6369 [ + ]: 1 : (err) => {
6370 : 1 : assert(err instanceof TypeError, `rational_module.notEqualTo(2n)`);
6371 : 1 : assert.strictEqual(
6372 : 1 : err.message, `Rational: BigInt type is not accepted`,
6373 : 1 : `rational_module.notEqualTo(2n)`
6374 : 1 : );
6375 : 1 : return true;
6376 : 1 : }
6377 : 1 : );
6378 : 1 : };
6379 : 1 : testData.desc = 'Rational notEqualTo() ... invalid test#4';
6380 : 1 :
6381 : 1 : testData.skip = false;
6382 : 1 : suites.get(suiteDesc).push(testData);
6383 : 1 :
6384 : 1 : // TEST ### - Rational notEqualTo() ... invalid test#5
6385 : 1 : testData = {};
6386 [ + ]: 1 : testData.method = () => {
6387 : 1 : let r = new rational_addon.Rational(3, 2);
6388 : 1 : assert.throws(
6389 [ + ]: 1 : () => {
6390 : 1 : r.notEqualTo(NaN);
6391 : 1 : },
6392 [ + ]: 1 : (err) => {
6393 : 1 : assert(err instanceof TypeError, `rational_addon.notEqualTo(NaN)`);
6394 : 1 : assert.strictEqual(
6395 : 1 : err.message, `Rational: invalid argument`,
6396 : 1 : `rational_addon.notEqualTo(NaN)`
6397 : 1 : );
6398 : 1 : return true;
6399 : 1 : }
6400 : 1 : );
6401 : 1 :
6402 : 1 : r = new rational_module.Rational(3, 2);
6403 : 1 : assert.throws(
6404 [ + ]: 1 : () => {
6405 : 1 : r.notEqualTo(NaN);
6406 : 1 : },
6407 [ + ]: 1 : (err) => {
6408 : 1 : assert(err instanceof TypeError, `rational_module.notEqualTo(NaN)`);
6409 : 1 : assert.strictEqual(
6410 : 1 : err.message, `Rational: invalid argument`,
6411 : 1 : `rational_module.notEqualTo(NaN)`
6412 : 1 : );
6413 : 1 : return true;
6414 : 1 : }
6415 : 1 : );
6416 : 1 : };
6417 : 1 : testData.desc = 'Rational notEqualTo() ... invalid test#5';
6418 : 1 :
6419 : 1 : testData.skip = false;
6420 : 1 : suites.get(suiteDesc).push(testData);
6421 : 1 :
6422 : 1 : // TEST ### - Rational notEqualTo() ... invalid test#6
6423 : 1 : testData = {};
6424 [ + ]: 1 : testData.method = () => {
6425 : 1 : let r = new rational_addon.Rational(3, 2);
6426 : 1 : assert.throws(
6427 [ + ]: 1 : () => {
6428 : 1 : r.notEqualTo('xxx');
6429 : 1 : },
6430 [ + ]: 1 : (err) => {
6431 : 1 : assert(err instanceof TypeError, `rational_addon.notEqualTo('xxx')`);
6432 : 1 : assert.strictEqual(
6433 : 1 : err.message, `Rational: invalid argument`,
6434 : 1 : `rational_addon.notEqualTo('xxx')`
6435 : 1 : );
6436 : 1 : return true;
6437 : 1 : }
6438 : 1 : );
6439 : 1 :
6440 : 1 : r = new rational_module.Rational(3, 2);
6441 : 1 : assert.throws(
6442 [ + ]: 1 : () => {
6443 : 1 : r.notEqualTo('xxx');
6444 : 1 : },
6445 [ + ]: 1 : (err) => {
6446 : 1 : assert(err instanceof TypeError, `rational_module.notEqualTo('xxx')`);
6447 : 1 : assert.strictEqual(
6448 : 1 : err.message, `Rational: invalid argument`,
6449 : 1 : `rational_module.notEqualTo('xxx')`
6450 : 1 : );
6451 : 1 : return true;
6452 : 1 : }
6453 : 1 : );
6454 : 1 : };
6455 : 1 : testData.desc = 'Rational notEqualTo() ... invalid test#6';
6456 : 1 :
6457 : 1 : testData.skip = false;
6458 : 1 : suites.get(suiteDesc).push(testData);
6459 : 1 :
6460 : 1 : // TEST SUITE #27 - Rational valueOf() function
6461 : 1 : suiteDesc = 'Rational valueOf() function';
6462 : 1 : suites.set(suiteDesc, []);
6463 : 1 :
6464 : 1 : // TEST ### - Rational valueOf() ... valid test#1
6465 : 1 : testData = {};
6466 [ + ]: 1 : testData.method = () => {
6467 : 1 : assert.strictEqual(new rational_addon.Rational(-3, 2).valueOf(), -1.5);
6468 : 1 : assert.strictEqual(new rational_addon.Rational(-1, 2).valueOf(), -0.5);
6469 : 1 : assert.strictEqual(new rational_addon.Rational().valueOf(), 0);
6470 : 1 : assert.strictEqual(new rational_addon.Rational(3, 2).valueOf(), 1.5);
6471 : 1 :
6472 : 1 : assert.strictEqual(new rational_addon.Rational() - 1, -1);
6473 : 1 : assert.strictEqual(new rational_addon.Rational(3, 2) + 4, 5.5);
6474 : 1 :
6475 : 1 : assert.strictEqual(new rational_module.Rational(-3, 2).valueOf(), -1.5);
6476 : 1 : assert.strictEqual(new rational_module.Rational(-1, 2).valueOf(), -0.5);
6477 : 1 : assert.strictEqual(new rational_module.Rational().valueOf(), 0);
6478 : 1 : assert.strictEqual(new rational_module.Rational(3, 2).valueOf(), 1.5);
6479 : 1 :
6480 : 1 : assert.strictEqual(new rational_module.Rational() - 1, -1);
6481 : 1 : assert.strictEqual(new rational_module.Rational(3, 2) + 4, 5.5);
6482 : 1 : };
6483 : 1 : testData.desc = 'Rational valueOf() ... valid test#1';
6484 : 1 :
6485 : 1 : testData.skip = false;
6486 : 1 : suites.get(suiteDesc).push(testData);
6487 : 1 :
6488 : 1 : // TEST ### - Rational valueOf() ... invalid test#1
6489 : 1 : testData = {};
6490 [ + ]: 1 : testData.method = () => {
6491 : 1 : let r = new rational_addon.Rational(3, 2);
6492 : 1 : assert.throws(
6493 [ + ]: 1 : () => {
6494 : 1 : r.valueOf(1, 2);
6495 : 1 : },
6496 [ + ]: 1 : (err) => {
6497 : 1 : assert(err instanceof TypeError, `rational_addon.valueOf(1, 2)`);
6498 : 1 : assert.strictEqual(
6499 : 1 : err.message, `Rational: invalid number of arguments`,
6500 : 1 : `rational_addon.valueOf(1, 2)`
6501 : 1 : );
6502 : 1 : return true;
6503 : 1 : }
6504 : 1 : );
6505 : 1 :
6506 : 1 : r = new rational_module.Rational(3, 2);
6507 : 1 : assert.throws(
6508 [ + ]: 1 : () => {
6509 : 1 : r.valueOf(1, 2);
6510 : 1 : },
6511 [ + ]: 1 : (err) => {
6512 : 1 : assert(err instanceof TypeError, `rational_module.valueOf(1, 2)`);
6513 : 1 : assert.strictEqual(
6514 : 1 : err.message, `Rational: invalid number of arguments`,
6515 : 1 : `rational_module.valueOf(1, 2)`
6516 : 1 : );
6517 : 1 : return true;
6518 : 1 : }
6519 : 1 : );
6520 : 1 : };
6521 : 1 : testData.desc = 'Rational valueOf() ... invalid test#1';
6522 : 1 :
6523 : 1 : testData.skip = false;
6524 : 1 : suites.get(suiteDesc).push(testData);
6525 : 1 :
6526 : 1 : // TEST SUITE #28 - Rational toString() function
6527 : 1 : suiteDesc = 'Rational toString() function';
6528 : 1 : suites.set(suiteDesc, []);
6529 : 1 :
6530 : 1 : // TEST ### - Rational toString() ... valid test#1
6531 : 1 : testData = {};
6532 [ + ]: 1 : testData.method = () => {
6533 : 1 :
6534 : 1 : assert.strictEqual(`${new rational_addon.Rational(-3, 2)}`, '-3/2');
6535 : 1 : assert.strictEqual(`${new rational_addon.Rational(-1, 2)}`, '-1/2');
6536 : 1 : assert.strictEqual(`${new rational_addon.Rational()}`, '0/1');
6537 : 1 : assert.strictEqual(`${new rational_addon.Rational(3, 2)}`, '3/2');
6538 : 1 :
6539 : 1 : assert.strictEqual(`${new rational_module.Rational(-3, 2)}`, '-3/2');
6540 : 1 : assert.strictEqual(`${new rational_module.Rational(-1, 2)}`, '-1/2');
6541 : 1 : assert.strictEqual(`${new rational_module.Rational()}`, '0/1');
6542 : 1 : assert.strictEqual(`${new rational_module.Rational(3, 2)}`, '3/2');
6543 : 1 : };
6544 : 1 : testData.desc = 'Rational toString() ... valid test#1';
6545 : 1 :
6546 : 1 : testData.skip = false;
6547 : 1 : suites.get(suiteDesc).push(testData);
6548 : 1 :
6549 : 1 : // TEST ### - Rational toString() ... invalid test#1
6550 : 1 : testData = {};
6551 [ + ]: 1 : testData.method = () => {
6552 : 1 : let r = new rational_addon.Rational(3, 2);
6553 : 1 : assert.throws(
6554 [ + ]: 1 : () => {
6555 : 1 : r.toString(1, 2);
6556 : 1 : },
6557 [ + ]: 1 : (err) => {
6558 : 1 : assert(err instanceof TypeError, `rational_addon.toString(1, 2)`);
6559 : 1 : assert.strictEqual(
6560 : 1 : err.message, `Rational: invalid number of arguments`,
6561 : 1 : `rational_addon.toString(1, 2)`
6562 : 1 : );
6563 : 1 : return true;
6564 : 1 : }
6565 : 1 : );
6566 : 1 :
6567 : 1 : r = new rational_module.Rational(3, 2);
6568 : 1 : assert.throws(
6569 [ + ]: 1 : () => {
6570 : 1 : r.toString(1, 2);
6571 : 1 : },
6572 [ + ]: 1 : (err) => {
6573 : 1 : assert(err instanceof TypeError, `rational_module.toString(1, 2)`);
6574 : 1 : assert.strictEqual(
6575 : 1 : err.message, `Rational: invalid number of arguments`,
6576 : 1 : `rational_module.toString(1, 2)`
6577 : 1 : );
6578 : 1 : return true;
6579 : 1 : }
6580 : 1 : );
6581 : 1 : };
6582 : 1 : testData.desc = 'Rational toString() ... invalid test#1';
6583 : 1 :
6584 : 1 : testData.skip = false;
6585 : 1 : suites.get(suiteDesc).push(testData);
6586 : 1 : }
6587 : 1 :
6588 : 1 : /**
6589 : 1 : * @func nodeRunner
6590 : 1 : * @param {object} runner - The node core module 'node:test' object.
6591 : 1 : * @desc Carry out the loaded tests using node test runner.
6592 : 1 : */
6593 [ + ]: 1 : function nodeRunner(runner){
6594 : 1 :
6595 [ + ]: 1 : for(let [suiteDesc, suiteTests] of suites){
6596 [ + ]: 28 : runner.suite(suiteDesc, () => {
6597 [ + ]: 28 : for(let cmdObj of suiteTests){
6598 [ + ]: 200 : runner.test(cmdObj.desc, {skip: cmdObj.skip}, async () => {
6599 : 200 : await makeTest(cmdObj);
6600 : 200 : });
6601 : 200 : }
6602 : 28 : });
6603 : 28 : }
6604 : 1 : }
6605 : 1 : /* node:coverage disable */
6606 : :
6607 : : /**
6608 : : * @func defRunner
6609 : : * @desc Carry out the loaded tests using this developed test runner.
6610 : : */
6611 : : function defRunner(){
6612 : :
6613 : : cmdOptions.verbose && process.on('exit', () => {
6614 : : console.log();
6615 : : console.log('▶ tests', --testCount);
6616 : : console.log('▶ suites', suites.size);
6617 : : console.log('▶ pass', passCount);
6618 : : console.log('▶ fail', failCount);
6619 : : console.log('▶ cancelled', cancelCount);
6620 : : console.log('▶ skipped', skipCount);
6621 : : console.log('▶ todo', todoCount);
6622 : : console.log('▶ duration_ms', Math.round(Date.now() - startTime));
6623 : : });
6624 : :
6625 : : cmdOptions.verbose && console.error();
6626 : : for(let [suiteDesc, suiteTests] of suites)
6627 : : for(let cmdObj of suiteTests)
6628 : : if(!cmdObj.skip){
6629 : : (async () => {
6630 : : await makeTest(cmdObj);
6631 : : })();
6632 : : }
6633 : :
6634 : : cmdOptions.verbose && console.log();
6635 : : }
6636 : : /* node:coverage enable */
6637 : 1 :
6638 : 1 : /**
6639 : 1 : * @func makeTest
6640 : 1 : * async
6641 : 1 : * @param {object} obj - The test data object.
6642 : 1 : * @desc Carry out a single test.
6643 : 1 : */
6644 [ + ]: 200 : async function makeTest(obj){
6645 : 200 :
6646 : 200 : const testID = testCount++;
6647 : 200 :
6648 : 200 : let preMsg = `Test#${(testID).toString().padStart(3, '0')} ... `;
6649 : 200 : let postMsg = preMsg;
6650 : 200 :
6651 : 200 : preMsg += `Initiate ... ${obj.desc}`;
6652 [ - ]: 200 : cmdOptions.verbose && console.error(preMsg);
6653 : 200 :
6654 : 200 : if(!cmdOptions.verbose){
6655 : 200 : obj.method();
6656 [ - ]: 200 : } /* node:coverage disable */
6657 : : else{
6658 : : try{
6659 : : obj.method();
6660 : : passCount++;
6661 : :
6662 : : postMsg += `Success ... ${obj.desc}`;
6663 : : cmdOptions.verbose && console.error(postMsg);
6664 : : }
6665 : : catch(e){
6666 : : failCount++;
6667 : :
6668 : : postMsg += `Failure ... ${obj.desc}`;
6669 : : cmdOptions.verbose && console.error(postMsg);
6670 : : }
6671 : : } /* node:coverage enable */
6672 : 200 : }
|