Skip to content

Commit 1e1ddd6

Browse files
committed
lab3 v1.0
1 parent acb6693 commit 1e1ddd6

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

lab3/main_test.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,66 @@ const assert = require('assert');
33
const { Calculator } = require('./main');
44

55
// TODO: write your tests here
6+
describe('Calculate', (t) =>{
7+
const calculator = new Calculator();
8+
9+
it('test exp() functionality', () => {
10+
const testcases = [
11+
{ param: Infinity, expected: Error, msg: 'unsupported operand type'},
12+
{ param: -Infinity, expected: Error, msg: 'unsupported operand type'},
13+
{ param: NaN, expected: Error, msg: 'unsupported operand type'},
14+
{ param: 'abc', expected: Error, msg: 'unsupported operand type'},
15+
{ param: true, expected: Error, msg: 'unsupported operand type'},
16+
{ param: null, expected: Error, msg: 'unsupported operand type'},
17+
{ param: undefined, expected: Error, msg: 'unsupported operand type'},
18+
{ param: {}, expected: Error, msg: 'unsupported operand type'},
19+
20+
{ param: Number.MAX_VALUE, expected: Error, msg: 'overflow' },
21+
22+
{ param: 42, expected: Math.exp(42)},
23+
{ param: 3.14, expected: Math.exp(3.14)},
24+
{ param: 0, expected: Math.exp(0)}
25+
];
26+
for (const tc of testcases) {
27+
if (tc.expected === Error) {
28+
assert.throws(() => {
29+
calculator.exp(tc.param);
30+
},
31+
{
32+
name: 'Error',
33+
message: tc.msg
34+
});
35+
} else {
36+
assert.strictEqual(calculator.exp(tc.param), tc.expected);
37+
}
38+
}
39+
});
40+
it('test log() functionality', () => {
41+
const testcases = [
42+
{ param: Infinity, expected: Error, msg: 'unsupported operand type'},
43+
{ param: -Infinity, expected: Error, msg: 'unsupported operand type'},
44+
{ param: true, expected: Error, msg: 'unsupported operand type'},
45+
{ param: 'abc', expected: Error, msg: 'unsupported operand type'},
46+
47+
{ param: 0, expected: Error, msg: "math domain error (1)" },
48+
{ param: -1, expected: Error, msg: 'math domain error (2)'},
49+
50+
{ param: 42, expected: Math.log(42)},
51+
{ param: 3.14, expected: Math.log(3.14)},
52+
];
53+
54+
for (const tc of testcases) {
55+
if(tc.expected === Error){
56+
assert.throws(() =>{
57+
calculator.log(tc.param);
58+
},{
59+
name: 'Error',
60+
message: tc.msg
61+
});
62+
}else{
63+
assert.strictEqual(calculator.log(tc.param), tc.expected);
64+
}
65+
}
66+
});
67+
68+
});

0 commit comments

Comments
 (0)