From 6cc3dcb14811b2eb97c7ee9e4b157456693fd52b Mon Sep 17 00:00:00 2001 From: as10748569 Date: Sun, 10 Mar 2024 02:14:13 +0800 Subject: [PATCH 1/9] Fix failing tests in main_test.js --- lab1/main_test.js | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/lab1/main_test.js b/lab1/main_test.js index 74a716b4..fc8941b7 100644 --- a/lab1/main_test.js +++ b/lab1/main_test.js @@ -4,20 +4,38 @@ const { MyClass, Student } = require('./main'); test("Test MyClass's addStudent", () => { // TODO - throw new Error("Test not implemented"); + const myClass = new MyClass(); + const student = new Student("John"); + myClass.addStudent(student); + assert.strictEqual(myClass.students.length, 1); + assert.strictEqual(myClass.students[0], student); + //throw new Error("Test not implemented"); }); test("Test MyClass's getStudentById", () => { // TODO - throw new Error("Test not implemented"); + const myClass = new MyClass(); + const student1 = new Student("John"); + const student2 = new Student("Alice"); + const student3 = new Student("Bob"); + myClass.addStudent(student1); + myClass.addStudent(student2); + myClass.addStudent(student3); + const foundStudent = myClass.getStudentById(student2.id); + assert.strictEqual(foundStudent, student2); + //throw new Error("Test not implemented"); }); test("Test Student's setName", () => { // TODO - throw new Error("Test not implemented"); + const student = new Student("John"); + student.setName("Alice"); + assert.strictEqual(student.getName(), "Alice"); }); test("Test Student's getName", () => { // TODO - throw new Error("Test not implemented"); -}); \ No newline at end of file + const student = new Student("John"); + assert.strictEqual(student.getName(), "John"); + //throw new Error("Test not implemented"); +}); From e8229fccb0c157e20f5fb8ee8a3a6a2cd6842b77 Mon Sep 17 00:00:00 2001 From: as10748569 Date: Sun, 10 Mar 2024 03:15:18 +0800 Subject: [PATCH 2/9] Fix failing tests in main_test.js --- lab1/main_test.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lab1/main_test.js b/lab1/main_test.js index fc8941b7..6ac3b9b4 100644 --- a/lab1/main_test.js +++ b/lab1/main_test.js @@ -16,8 +16,8 @@ test("Test MyClass's getStudentById", () => { // TODO const myClass = new MyClass(); const student1 = new Student("John"); - const student2 = new Student("Alice"); - const student3 = new Student("Bob"); + const student2 = new Student("Jane"); + const student3 = new Student("Doe"); myClass.addStudent(student1); myClass.addStudent(student2); myClass.addStudent(student3); @@ -29,8 +29,8 @@ test("Test MyClass's getStudentById", () => { test("Test Student's setName", () => { // TODO const student = new Student("John"); - student.setName("Alice"); - assert.strictEqual(student.getName(), "Alice"); + student.setName("Smith"); + assert.strictEqual(student.getName(), "Smith"); }); test("Test Student's getName", () => { From 51b2df15b18798f125572539ba425280b54786a8 Mon Sep 17 00:00:00 2001 From: as10748569 Date: Sun, 10 Mar 2024 04:47:03 +0800 Subject: [PATCH 3/9] Fix failing tests in main.js --- lab1/main.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/lab1/main.js b/lab1/main.js index c9aed9f0..fb2a9052 100644 --- a/lab1/main.js +++ b/lab1/main.js @@ -42,14 +42,14 @@ class Student { } } -// const myClass = new MyClass(); -// const names = ['John', 'Jane', 'Doe', 'Smith']; -// names.forEach(name => { -// const student = new Student(); -// student.setName(name); -// const newStudentId = myClass.addStudent(student); -// const newStudentName = myClass.getStudentById(newStudentId).getName(); -// console.log('[+] Added student with id: %d, name: %s', newStudentId, newStudentName); -// }); - -module.exports = { MyClass, Student }; \ No newline at end of file + const myClass = new MyClass(); +const names = ['John', 'Jane', 'Doe', 'Smith']; +names.forEach(name => { + const student = new Student(); + student.setName(name); + const newStudentId = myClass.addStudent(student); + const newStudentName = myClass.getStudentById(newStudentId).getName(); + console.log('[+] Added student with id: %d, name: %s', newStudentId, newStudentName); + }); + +module.exports = { MyClass, Student }; From c2ce0d4ab74dac77be61970d136c728cab851410 Mon Sep 17 00:00:00 2001 From: as10748569 Date: Sun, 10 Mar 2024 10:18:26 +0800 Subject: [PATCH 4/9] Fix failing tests in main.js --- lab1/main_test.js | 73 ++++++++++++++++++++++++++++++----------------- 1 file changed, 47 insertions(+), 26 deletions(-) diff --git a/lab1/main_test.js b/lab1/main_test.js index 6ac3b9b4..b7c30166 100644 --- a/lab1/main_test.js +++ b/lab1/main_test.js @@ -3,39 +3,60 @@ const assert = require('assert'); const { MyClass, Student } = require('./main'); test("Test MyClass's addStudent", () => { - // TODO - const myClass = new MyClass(); - const student = new Student("John"); - myClass.addStudent(student); - assert.strictEqual(myClass.students.length, 1); - assert.strictEqual(myClass.students[0], student); - //throw new Error("Test not implemented"); + const myClass = new MyClass(); + const student = new Student(); + + // Test adding a student + myClass.addStudent(student); + assert.strictEqual(myClass.students.length, 1); + assert.strictEqual(myClass.students[0], student); + + // Test adding multiple students + const student2 = new Student(); + const student3 = new Student(); + myClass.addStudent(student2); + myClass.addStudent(student3); + assert.strictEqual(myClass.students.length, 3); }); test("Test MyClass's getStudentById", () => { - // TODO - const myClass = new MyClass(); - const student1 = new Student("John"); - const student2 = new Student("Jane"); - const student3 = new Student("Doe"); - myClass.addStudent(student1); - myClass.addStudent(student2); - myClass.addStudent(student3); - const foundStudent = myClass.getStudentById(student2.id); - assert.strictEqual(foundStudent, student2); - //throw new Error("Test not implemented"); + const myClass = new MyClass(); + const student1 = new Student(); + const student2 = new Student(); + const student3 = new Student(); + myClass.addStudent(student1); + myClass.addStudent(student2); + myClass.addStudent(student3); + + // Test getting a student by ID + const foundStudent = myClass.getStudentById(1); + assert.strictEqual(foundStudent, student2); + + // Test getting a non-existing student by ID + const nonExistingStudent = myClass.getStudentById(5); + assert.strictEqual(nonExistingStudent, null); }); test("Test Student's setName", () => { - // TODO - const student = new Student("John"); - student.setName("Smith"); - assert.strictEqual(student.getName(), "Smith"); + const student = new Student(); + + // Test setting a valid name + student.setName("John"); + assert.strictEqual(student.getName(), "John"); + + // Test setting an invalid name + student.setName(123); // Passing a number instead of a string + assert.strictEqual(student.getName(), ""); // Name should remain unchanged }); test("Test Student's getName", () => { - // TODO - const student = new Student("John"); - assert.strictEqual(student.getName(), "John"); - //throw new Error("Test not implemented"); + const student = new Student(); + + // Test getting name when name is set + student.setName("John"); + assert.strictEqual(student.getName(), "John"); + + // Test getting name when name is not set + assert.strictEqual(student.getName(), ""); // Should return an empty string }); + From 24f6d06432a3fcc145c3d65155298254435c5c36 Mon Sep 17 00:00:00 2001 From: as10748569 <162456216+as10748569@users.noreply.github.com> Date: Wed, 13 Mar 2024 06:45:29 +0800 Subject: [PATCH 5/9] Update main_test.js --- lab1/main_test.js | 73 +++++++++++++++++------------------------------ 1 file changed, 26 insertions(+), 47 deletions(-) diff --git a/lab1/main_test.js b/lab1/main_test.js index b7c30166..6ac3b9b4 100644 --- a/lab1/main_test.js +++ b/lab1/main_test.js @@ -3,60 +3,39 @@ const assert = require('assert'); const { MyClass, Student } = require('./main'); test("Test MyClass's addStudent", () => { - const myClass = new MyClass(); - const student = new Student(); - - // Test adding a student - myClass.addStudent(student); - assert.strictEqual(myClass.students.length, 1); - assert.strictEqual(myClass.students[0], student); - - // Test adding multiple students - const student2 = new Student(); - const student3 = new Student(); - myClass.addStudent(student2); - myClass.addStudent(student3); - assert.strictEqual(myClass.students.length, 3); + // TODO + const myClass = new MyClass(); + const student = new Student("John"); + myClass.addStudent(student); + assert.strictEqual(myClass.students.length, 1); + assert.strictEqual(myClass.students[0], student); + //throw new Error("Test not implemented"); }); test("Test MyClass's getStudentById", () => { - const myClass = new MyClass(); - const student1 = new Student(); - const student2 = new Student(); - const student3 = new Student(); - myClass.addStudent(student1); - myClass.addStudent(student2); - myClass.addStudent(student3); - - // Test getting a student by ID - const foundStudent = myClass.getStudentById(1); - assert.strictEqual(foundStudent, student2); - - // Test getting a non-existing student by ID - const nonExistingStudent = myClass.getStudentById(5); - assert.strictEqual(nonExistingStudent, null); + // TODO + const myClass = new MyClass(); + const student1 = new Student("John"); + const student2 = new Student("Jane"); + const student3 = new Student("Doe"); + myClass.addStudent(student1); + myClass.addStudent(student2); + myClass.addStudent(student3); + const foundStudent = myClass.getStudentById(student2.id); + assert.strictEqual(foundStudent, student2); + //throw new Error("Test not implemented"); }); test("Test Student's setName", () => { - const student = new Student(); - - // Test setting a valid name - student.setName("John"); - assert.strictEqual(student.getName(), "John"); - - // Test setting an invalid name - student.setName(123); // Passing a number instead of a string - assert.strictEqual(student.getName(), ""); // Name should remain unchanged + // TODO + const student = new Student("John"); + student.setName("Smith"); + assert.strictEqual(student.getName(), "Smith"); }); test("Test Student's getName", () => { - const student = new Student(); - - // Test getting name when name is set - student.setName("John"); - assert.strictEqual(student.getName(), "John"); - - // Test getting name when name is not set - assert.strictEqual(student.getName(), ""); // Should return an empty string + // TODO + const student = new Student("John"); + assert.strictEqual(student.getName(), "John"); + //throw new Error("Test not implemented"); }); - From e9aad931fd0119408626c854d46b471553403e1b Mon Sep 17 00:00:00 2001 From: as10748569 <162456216+as10748569@users.noreply.github.com> Date: Wed, 13 Mar 2024 07:13:15 +0800 Subject: [PATCH 6/9] Update main_test.js --- lab1/main_test.js | 62 ++++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/lab1/main_test.js b/lab1/main_test.js index 6ac3b9b4..6dadf435 100644 --- a/lab1/main_test.js +++ b/lab1/main_test.js @@ -2,40 +2,42 @@ const test = require('node:test'); const assert = require('assert'); const { MyClass, Student } = require('./main'); -test("Test MyClass's addStudent", () => { - // TODO - const myClass = new MyClass(); - const student = new Student("John"); - myClass.addStudent(student); - assert.strictEqual(myClass.students.length, 1); - assert.strictEqual(myClass.students[0], student); - //throw new Error("Test not implemented"); +test("Test MyClass's addStudent method", async (t) => { + const myClass = new MyClass(); + const student = new Student(); + student.setName("John"); + const index = myClass.addStudent(student); + assert.strictEqual(index, 0); }); -test("Test MyClass's getStudentById", () => { - // TODO - const myClass = new MyClass(); - const student1 = new Student("John"); - const student2 = new Student("Jane"); - const student3 = new Student("Doe"); - myClass.addStudent(student1); - myClass.addStudent(student2); - myClass.addStudent(student3); - const foundStudent = myClass.getStudentById(student2.id); - assert.strictEqual(foundStudent, student2); - //throw new Error("Test not implemented"); +test("Test MyClass's getStudentById method", async (t) => { + const myClass = new MyClass(); + const student = new Student(); + student.setName("Jane"); + const index = myClass.addStudent(student); + const fetchedStudent = myClass.getStudentById(index); + assert.strictEqual(fetchedStudent.getName(), "Jane"); }); -test("Test Student's setName", () => { - // TODO - const student = new Student("John"); - student.setName("Smith"); - assert.strictEqual(student.getName(), "Smith"); +test("Test Student's setName and getName methods", async (t) => { + const student = new Student(); + student.setName("Doe"); + assert.strictEqual(student.getName(), "Doe"); }); -test("Test Student's getName", () => { - // TODO - const student = new Student("John"); - assert.strictEqual(student.getName(), "John"); - //throw new Error("Test not implemented"); +test("Test handling non-Student instance in addStudent", async (t) => { + const myClass = new MyClass(); + const notAStudent = {}; + const index = myClass.addStudent(notAStudent); + assert.strictEqual(index, -1); +}); + +test("Test getStudentById with invalid id", async (t) => { + const myClass = new MyClass(); + const student = new Student(); + student.setName("Smith"); + myClass.addStudent(student); + const invalidId = -1; + const fetchedStudent = myClass.getStudentById(invalidId); + assert.strictEqual(fetchedStudent, null); }); From dcd705461b710ac1e5bca524e0e76d55b38f6f63 Mon Sep 17 00:00:00 2001 From: as10748569 <162456216+as10748569@users.noreply.github.com> Date: Wed, 13 Mar 2024 07:23:46 +0800 Subject: [PATCH 7/9] Update main.js --- lab1/main.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lab1/main.js b/lab1/main.js index fb2a9052..ce672501 100644 --- a/lab1/main.js +++ b/lab1/main.js @@ -42,14 +42,14 @@ class Student { } } - const myClass = new MyClass(); -const names = ['John', 'Jane', 'Doe', 'Smith']; -names.forEach(name => { - const student = new Student(); - student.setName(name); - const newStudentId = myClass.addStudent(student); - const newStudentName = myClass.getStudentById(newStudentId).getName(); - console.log('[+] Added student with id: %d, name: %s', newStudentId, newStudentName); - }); + //const myClass = new MyClass(); +//const names = ['John', 'Jane', 'Doe', 'Smith']; +//names.forEach(name => { + // const student = new Student(); + //student.setName(name); + // const newStudentId = myClass.addStudent(student); + //const newStudentName = myClass.getStudentById(newStudentId).getName(); + // console.log('[+] Added student with id: %d, name: %s', newStudentId, newStudentName); +// }); module.exports = { MyClass, Student }; From 7a26e967de834cf836df851b61f702ef870c840f Mon Sep 17 00:00:00 2001 From: as10748569 <162456216+as10748569@users.noreply.github.com> Date: Wed, 13 Mar 2024 08:02:17 +0800 Subject: [PATCH 8/9] Update main_test.js --- lab1/main_test.js | 35 ++++++++++++----------------------- 1 file changed, 12 insertions(+), 23 deletions(-) diff --git a/lab1/main_test.js b/lab1/main_test.js index 6dadf435..a7f4d986 100644 --- a/lab1/main_test.js +++ b/lab1/main_test.js @@ -2,42 +2,31 @@ const test = require('node:test'); const assert = require('assert'); const { MyClass, Student } = require('./main'); -test("Test MyClass's addStudent method", async (t) => { +test("Test MyClass's addStudent", async (t) => { const myClass = new MyClass(); const student = new Student(); - student.setName("John"); + student.setName("Test Student"); const index = myClass.addStudent(student); - assert.strictEqual(index, 0); + assert.strictEqual(index, 0, "addStudent should return index 0 for the first student"); }); -test("Test MyClass's getStudentById method", async (t) => { +test("Test MyClass's getStudentById", async (t) => { const myClass = new MyClass(); const student = new Student(); - student.setName("Jane"); + student.setName("Test Student"); const index = myClass.addStudent(student); const fetchedStudent = myClass.getStudentById(index); - assert.strictEqual(fetchedStudent.getName(), "Jane"); + assert.strictEqual(fetchedStudent.getName(), "Test Student", "getStudentById should return the correct student by id"); }); -test("Test Student's setName and getName methods", async (t) => { +test("Test Student's setName", async (t) => { const student = new Student(); - student.setName("Doe"); - assert.strictEqual(student.getName(), "Doe"); + student.setName("Another Student"); + assert.strictEqual(student.getName(), "Another Student", "setName should successfully set the student's name"); }); -test("Test handling non-Student instance in addStudent", async (t) => { - const myClass = new MyClass(); - const notAStudent = {}; - const index = myClass.addStudent(notAStudent); - assert.strictEqual(index, -1); -}); - -test("Test getStudentById with invalid id", async (t) => { - const myClass = new MyClass(); +test("Test Student's getName", async (t) => { const student = new Student(); - student.setName("Smith"); - myClass.addStudent(student); - const invalidId = -1; - const fetchedStudent = myClass.getStudentById(invalidId); - assert.strictEqual(fetchedStudent, null); + student.setName("Another Test Student"); + assert.strictEqual(student.getName(), "Another Test Student", "getName should return the name of the student"); }); From b148ebc828d9436d3bc8f6c30e565d03632c6754 Mon Sep 17 00:00:00 2001 From: as10748569 <162456216+as10748569@users.noreply.github.com> Date: Wed, 13 Mar 2024 08:17:23 +0800 Subject: [PATCH 9/9] Update main_test.js --- lab1/main_test.js | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/lab1/main_test.js b/lab1/main_test.js index a7f4d986..6963c7ba 100644 --- a/lab1/main_test.js +++ b/lab1/main_test.js @@ -2,31 +2,40 @@ const test = require('node:test'); const assert = require('assert'); const { MyClass, Student } = require('./main'); -test("Test MyClass's addStudent", async (t) => { +test("Test MyClass's addStudent", () => { const myClass = new MyClass(); const student = new Student(); - student.setName("Test Student"); + student.setName("John"); const index = myClass.addStudent(student); assert.strictEqual(index, 0, "addStudent should return index 0 for the first student"); + const notAStudent = {}; + const indexForNotAStudent = myClass.addStudent(notAStudent); + assert.strictEqual(indexForNotAStudent, -1, "addStudent should return -1 when adding a non-Student instance"); }); -test("Test MyClass's getStudentById", async (t) => { +test("Test MyClass's getStudentById", () => { const myClass = new MyClass(); const student = new Student(); - student.setName("Test Student"); + student.setName("Jane"); const index = myClass.addStudent(student); const fetchedStudent = myClass.getStudentById(index); - assert.strictEqual(fetchedStudent.getName(), "Test Student", "getStudentById should return the correct student by id"); + assert.strictEqual(fetchedStudent.getName(), "Jane", "getStudentById should retrieve the student with the correct name"); + const invalidFetchedStudent = myClass.getStudentById(-1); + assert.strictEqual(invalidFetchedStudent, null, "getStudentById should return null for an invalid id"); }); -test("Test Student's setName", async (t) => { +test("Test Student's setName", () => { const student = new Student(); - student.setName("Another Student"); - assert.strictEqual(student.getName(), "Another Student", "setName should successfully set the student's name"); + student.setName("Doe"); + assert.strictEqual(student.name, "Doe", "setName should correctly set the student's name"); + student.setName(123); + assert.strictEqual(student.name, "Doe", "setName should not set name when the input is not a string"); }); -test("Test Student's getName", async (t) => { +test("Test Student's getName", () => { const student = new Student(); - student.setName("Another Test Student"); - assert.strictEqual(student.getName(), "Another Test Student", "getName should return the name of the student"); + student.setName("Smith"); + assert.strictEqual(student.getName(), "Smith", "getName should return the correct name"); + const newStudent = new Student(); + assert.strictEqual(newStudent.getName(), '', "getName should return an empty string for a student without a name"); });