@@ -2,22 +2,73 @@ const test = require('node:test');
2
2
const assert = require ( 'assert' ) ;
3
3
const { MyClass, Student } = require ( './main' ) ;
4
4
5
+ // 測試 MyClass 的 addStudent 方法
5
6
test ( "Test MyClass's addStudent" , ( ) => {
6
- // TODO
7
- throw new Error ( "Test not implemented" ) ;
7
+ const myClass = new MyClass ( ) ;
8
+ const student = new Student ( ) ;
9
+
10
+ // 新增正確的 Student 物件
11
+ let index = myClass . addStudent ( student ) ;
12
+ assert . strictEqual ( index , 0 ) ;
13
+ assert . strictEqual ( myClass . students . length , 1 ) ;
14
+
15
+ // 嘗試新增非 Student 物件
16
+ index = myClass . addStudent ( { } ) ;
17
+ assert . strictEqual ( index , - 1 ) ;
18
+ assert . strictEqual ( myClass . students . length , 1 ) ; // 確保長度未變
8
19
} ) ;
9
20
21
+ // 測試 MyClass 的 getStudentById 方法
10
22
test ( "Test MyClass's getStudentById" , ( ) => {
11
- // TODO
12
- throw new Error ( "Test not implemented" ) ;
23
+ const myClass = new MyClass ( ) ;
24
+ const student1 = new Student ( ) ;
25
+ student1 . setName ( "Alice" ) ;
26
+
27
+ const student2 = new Student ( ) ;
28
+ student2 . setName ( "Bob" ) ;
29
+
30
+ myClass . addStudent ( student1 ) ;
31
+ myClass . addStudent ( student2 ) ;
32
+
33
+ // 測試有效 ID
34
+ let result = myClass . getStudentById ( 0 ) ;
35
+ assert . strictEqual ( result . getName ( ) , "Alice" ) ;
36
+
37
+ result = myClass . getStudentById ( 1 ) ;
38
+ assert . strictEqual ( result . getName ( ) , "Bob" ) ;
39
+
40
+ // 測試無效 ID
41
+ result = myClass . getStudentById ( - 1 ) ;
42
+ assert . strictEqual ( result , null ) ;
43
+
44
+ result = myClass . getStudentById ( 10 ) ;
45
+ assert . strictEqual ( result , null ) ;
13
46
} ) ;
14
47
48
+ // 測試 Student 的 setName 方法
15
49
test ( "Test Student's setName" , ( ) => {
16
- // TODO
17
- throw new Error ( "Test not implemented" ) ;
50
+ const student = new Student ( ) ;
51
+
52
+ // 設定正確的名字
53
+ student . setName ( "Charlie" ) ;
54
+ assert . strictEqual ( student . getName ( ) , "Charlie" ) ;
55
+
56
+ // 設定無效的名字(非字串)
57
+ student . setName ( 12345 ) ;
58
+ assert . strictEqual ( student . getName ( ) , "Charlie" ) ; // 名字應該不變
59
+
60
+ student . setName ( null ) ;
61
+ assert . strictEqual ( student . getName ( ) , "Charlie" ) ; // 名字應該不變
18
62
} ) ;
19
63
64
+ // 測試 Student 的 getName 方法
20
65
test ( "Test Student's getName" , ( ) => {
21
- // TODO
22
- throw new Error ( "Test not implemented" ) ;
23
- } ) ;
66
+ const student = new Student ( ) ;
67
+
68
+ // 初始 name 應該是空字串
69
+ assert . strictEqual ( student . getName ( ) , "" ) ;
70
+
71
+ // 設定名稱後應該正確返回
72
+ student . setName ( "David" ) ;
73
+ assert . strictEqual ( student . getName ( ) , "David" ) ;
74
+ } ) ;
0 commit comments