@@ -2,4 +2,55 @@ const { describe, it } = require('node:test');
2
2
const assert = require ( 'assert' ) ;
3
3
const { Calculator } = require ( './main' ) ;
4
4
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