Skip to content

[LAB1] 511559023 #4

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Mar 13, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 40 additions & 13 deletions lab1/main_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,49 @@ const test = require('node:test');
const assert = require('assert');
const { MyClass, Student } = require('./main');

test("Test MyClass's addStudent", () => {
// TODO
throw new Error("Test not implemented");
// 測試 MyClass 的 addStudent 方法
test("Test MyClass's addStudent", async (t) => {
const myClass = new MyClass();
const student = new Student();
student.setName("John Doe");

const addedStudentId = myClass.addStudent(student);
assert.strictEqual(addedStudentId, 0, "應該將學生加入並返回正確的索引");

const nonStudent = {}; // 模擬非 Student 實例
const nonStudentId = myClass.addStudent(nonStudent);
assert.strictEqual(nonStudentId, -1, "非 Student 實例不應該被添加");
});

test("Test MyClass's getStudentById", () => {
// TODO
throw new Error("Test not implemented");
// 測試 MyClass 的 getStudentById 方法
test("Test MyClass's getStudentById", async (t) => {
const myClass = new MyClass();
const student = new Student();
student.setName("Jane Doe");
myClass.addStudent(student);

const retrievedStudent = myClass.getStudentById(0);
assert.strictEqual(retrievedStudent.getName(), "Jane Doe", "應該返回正確的學生名稱");

const invalidStudent = myClass.getStudentById(-1);
assert.strictEqual(invalidStudent, null, "無效索引應該返回 null");
});

test("Test Student's setName", () => {
// TODO
throw new Error("Test not implemented");
// 測試 Student 的 setName 方法
test("Test Student's setName", async (t) => {
const student = new Student();
student.setName("John Smith");
assert.strictEqual(student.name, "John Smith", "setName 應該正確設置學生名稱");

student.setName(123); // 嘗試用非字符串設置名稱
assert.notStrictEqual(student.name, 123, "setName 應該忽略非字符串值");
});

test("Test Student's getName", () => {
// TODO
throw new Error("Test not implemented");
});
// 測試 Student 的 getName 方法
test("Test Student's getName", async (t) => {
const student = new Student();
assert.strictEqual(student.getName(), '', "未設置名稱時應返回空字符串");

student.setName("Doe Jane");
assert.strictEqual(student.getName(), "Doe Jane", "getName 應返回設置的學生名稱");
});