@@ -2,22 +2,73 @@ const test = require('node:test');
22const assert = require ( 'assert' ) ;
33const { MyClass, Student } = require ( './main' ) ;
44
5+ // 測試 MyClass 的 addStudent 方法
56test ( "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 ) ; // 確保長度未變
819} ) ;
920
21+ // 測試 MyClass 的 getStudentById 方法
1022test ( "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 ) ;
1346} ) ;
1447
48+ // 測試 Student 的 setName 方法
1549test ( "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" ) ; // 名字應該不變
1862} ) ;
1963
64+ // 測試 Student 的 getName 方法
2065test ( "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