Skip to content

Commit 65be176

Browse files
authored
Merge pull request #73 from Chun-Ching-Hsu/313554033
[LAB1] 313554033
2 parents ccb89f4 + 132d82e commit 65be176

File tree

1 file changed

+60
-9
lines changed

1 file changed

+60
-9
lines changed

lab1/main_test.js

Lines changed: 60 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,73 @@ const test = require('node:test');
22
const assert = require('assert');
33
const { MyClass, Student } = require('./main');
44

5+
// 測試 MyClass 的 addStudent 方法
56
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); // 確保長度未變
819
});
920

21+
// 測試 MyClass 的 getStudentById 方法
1022
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);
1346
});
1447

48+
// 測試 Student 的 setName 方法
1549
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"); // 名字應該不變
1862
});
1963

64+
// 測試 Student 的 getName 方法
2065
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

Comments
 (0)