Skip to content

Commit 6c32128

Browse files
authored
Merge pull request #350 from KentYang123/lab3
[LAB3] 512558014
2 parents bcf524c + 044330b commit 6c32128

File tree

1 file changed

+52
-1
lines changed

1 file changed

+52
-1
lines changed

lab3/main_test.js

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,55 @@ const { describe, it } = require('node:test');
22
const assert = require('assert');
33
const { Calculator } = require('./main');
44

5-
// TODO: write your tests here
5+
// 定義測試套件,對 Calculator 類進行測試
6+
describe('Calculator', () => {
7+
// 對 exp 方法進行測試
8+
describe('exp', () => {
9+
// 測試用例
10+
it('should return the correct result for valid input', () => {
11+
const calculator = new Calculator();
12+
assert.strictEqual(calculator.exp(0), 1);
13+
assert.strictEqual(calculator.exp(1), Math.exp(1));
14+
assert.strictEqual(calculator.exp(2), Math.exp(2));
15+
assert.strictEqual(calculator.exp(-1), Math.exp(-1));
16+
});
17+
18+
it('should throw an error for invalid input', () => {
19+
const calculator = new Calculator();
20+
assert.throws(() => calculator.exp('abc'), Error);
21+
assert.throws(() => calculator.exp(NaN), Error);
22+
assert.throws(() => calculator.exp(Infinity), Error);
23+
});
24+
25+
it('should throw an error for overflow', () => {
26+
const calculator = new Calculator();
27+
assert.throws(() => calculator.exp(1000), Error);
28+
29+
});
30+
});
31+
// 對 log 方法進行測試
32+
describe('log', () => {
33+
// 測試用例
34+
it('should return the correct result for valid input', () => {
35+
const calculator = new Calculator();
36+
assert.strictEqual(calculator.log(1), 0);
37+
assert.strictEqual(calculator.log(Math.exp(1)), 1);
38+
assert.strictEqual(calculator.log(Math.exp(2)), 2);
39+
assert.strictEqual(calculator.log(Math.exp(-1)), -1);
40+
});
41+
42+
it('should throw an error for invalid input', () => {
43+
const calculator = new Calculator();
44+
assert.throws(() => calculator.log('abc'), Error);
45+
assert.throws(() => calculator.log(NaN), Error);
46+
assert.throws(() => calculator.log(-1), Error);
47+
assert.throws(() => calculator.log(0), Error);
48+
});
49+
50+
it('should throw an error for math domain errors', () => {
51+
const calculator = new Calculator();
52+
assert.throws(() => calculator.log(-1), Error);
53+
assert.throws(() => calculator.log(0), Error);
54+
});
55+
});
56+
});

0 commit comments

Comments
 (0)