Skip to content

Commit

Permalink
Add more testcases
Browse files Browse the repository at this point in the history
  • Loading branch information
nguyiyang committed Nov 4, 2021
1 parent 6a2743e commit e50748e
Show file tree
Hide file tree
Showing 14 changed files with 202 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public AddGroupCommand parse(String args) throws ParseException {
throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddGroupCommand.MESSAGE_USAGE));
}

GroupNumber groupNumber = ParserUtil.parseGroupName(argMultimap.getValue(PREFIX_GROUPNUMBER).get());
GroupNumber groupNumber = ParserUtil.parseGroupNumber(argMultimap.getValue(PREFIX_GROUPNUMBER).get());
ClassCode classCode = ParserUtil.parseClassCode(argMultimap.getValue(PREFIX_CLASSCODE).get());
GroupType groupType = ParserUtil.parseGroupType(argMultimap.getValue(PREFIX_TYPE).get());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public AddStudentToGroupCommand parse(String args) throws ParseException {
MESSAGE_INVALID_COMMAND_FORMAT, AddStudentToGroupCommand.MESSAGE_USAGE));
}

GroupNumber groupNumber = ParserUtil.parseGroupName(argMultimap.getValue(PREFIX_GROUPNUMBER).get());
GroupNumber groupNumber = ParserUtil.parseGroupNumber(argMultimap.getValue(PREFIX_GROUPNUMBER).get());
ClassCode classCode = ParserUtil.parseClassCode(argMultimap.getValue(PREFIX_CLASSCODE).get());
GroupType groupType = ParserUtil.parseGroupType(argMultimap.getValue(PREFIX_TYPE).get());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public DeleteGroupCommand parse(String args) throws ParseException {
throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteGroupCommand.MESSAGE_USAGE));
}

GroupNumber groupNumber = ParserUtil.parseGroupName(argMultimap.getValue(PREFIX_GROUPNUMBER).get());
GroupNumber groupNumber = ParserUtil.parseGroupNumber(argMultimap.getValue(PREFIX_GROUPNUMBER).get());
ClassCode classCode = ParserUtil.parseClassCode(argMultimap.getValue(PREFIX_CLASSCODE).get());
GroupType groupType = ParserUtil.parseGroupType(argMultimap.getValue(PREFIX_TYPE).get());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public DeleteStudentFromGroupCommand parse(String args) throws ParseException {
MESSAGE_INVALID_COMMAND_FORMAT, DeleteStudentFromGroupCommand.MESSAGE_USAGE));
}

GroupNumber groupNumber = ParserUtil.parseGroupName(argMultimap.getValue(PREFIX_GROUPNUMBER).get());
GroupNumber groupNumber = ParserUtil.parseGroupNumber(argMultimap.getValue(PREFIX_GROUPNUMBER).get());
ClassCode classCode = ParserUtil.parseClassCode(argMultimap.getValue(PREFIX_CLASSCODE).get());
GroupType groupType = ParserUtil.parseGroupType(argMultimap.getValue(PREFIX_TYPE).get());

Expand Down
15 changes: 8 additions & 7 deletions src/main/java/seedu/address/logic/parser/ParserUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -154,13 +154,13 @@ public static Schedule parseSchedule(String schedule) throws ParseException {
* Leading and trailing whitespaces will be trimmed.
* @throws ParseException if the given {@code schedule} is invalid.
*/
public static GroupNumber parseGroupName(String groupName) throws ParseException {
requireNonNull(groupName);
String trimmedGroupName = groupName.trim();
if (!GroupNumber.isValidGroupNumber(groupName)) {
public static GroupNumber parseGroupNumber(String groupNumber) throws ParseException {
requireNonNull(groupNumber);
String trimmedGroupNumber = groupNumber.trim();
if (!GroupNumber.isValidGroupNumber(trimmedGroupNumber)) {
throw new ParseException(GroupNumber.MESSAGE_CONSTRAINTS);
}
return new GroupNumber(trimmedGroupName);
return new GroupNumber(trimmedGroupNumber);
}

/**
Expand All @@ -170,10 +170,11 @@ public static GroupNumber parseGroupName(String groupName) throws ParseException
*/
public static GroupType parseGroupType(String groupType) throws ParseException {
requireNonNull(groupType);
if (!GroupType.isValidGroupType(groupType)) {
String trimmedGroupType = groupType.trim();
if (!GroupType.isValidGroupType(trimmedGroupType)) {
throw new ParseException(GroupType.MESSAGE_CONSTRAINTS);
}
return new GroupType(groupType.toUpperCase());
return new GroupType(trimmedGroupType.toUpperCase());
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public ViewGroupCommand parse(String args) throws ParseException {
throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddGroupCommand.MESSAGE_USAGE));
}

GroupNumber groupNumber = ParserUtil.parseGroupName(argMultimap.getValue(PREFIX_GROUPNUMBER).get());
GroupNumber groupNumber = ParserUtil.parseGroupNumber(argMultimap.getValue(PREFIX_GROUPNUMBER).get());
ClassCode classCode = ParserUtil.parseClassCode(argMultimap.getValue(PREFIX_CLASSCODE).get());
GroupType groupType = ParserUtil.parseGroupType(argMultimap.getValue(PREFIX_TYPE).get());

Expand Down
1 change: 0 additions & 1 deletion src/main/java/seedu/address/model/Classmate.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import seedu.address.model.tutorialclass.TutorialClass;
import seedu.address.model.tutorialclass.UniqueTutorialClassList;
import seedu.address.model.tutorialgroup.TutorialGroup;
import seedu.address.model.tutorialgroup.UniqueTutorialGroupList;

/**
* Wraps all data at the address-book level
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
import java.util.Objects;
import java.util.Set;

import javafx.beans.Observable;
import javafx.collections.ObservableList;
import seedu.address.model.student.ClassCode;
import seedu.address.model.tag.Tag;
import seedu.address.model.tutorialgroup.TutorialGroup;
Expand Down Expand Up @@ -84,9 +86,8 @@ public UniqueTutorialGroupList getTutorialGroups() {
*
* @return List of tutorial groups
*/
public List<TutorialGroup> getTutorialGroupsAsList() {
ArrayList<TutorialGroup> result = new ArrayList<>(tutorialGroups.getInternalList());
return result;
public ObservableList<TutorialGroup> getTutorialGroupsAsList() {
return tutorialGroups.asUnmodifiableObservableList();
}

public Set<Tag> getTags() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ public static boolean isValidGroupType(String test) {
return test.matches(VALIDATION_REGEX);
}

private Integer parseGroupType(String groupType) {
public static Integer parseGroupType(String groupType) {
assert groupType.length() == 3;
return parseInt(groupType.substring(2));
}

Expand Down

This file was deleted.

52 changes: 52 additions & 0 deletions src/test/java/seedu/address/logic/parser/ParserUtilTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,26 @@
import seedu.address.model.student.Name;
import seedu.address.model.student.Phone;
import seedu.address.model.tag.Tag;
import seedu.address.model.tutorialgroup.GroupNumber;
import seedu.address.model.tutorialgroup.GroupType;

public class ParserUtilTest {
private static final String INVALID_NAME = "R@chel";
private static final String INVALID_PHONE = "+651234";
private static final String INVALID_ADDRESS = " ";
private static final String INVALID_EMAIL = "example.com";
private static final String INVALID_TAG = "#friend";
private static final String INVALID_GROUP_NUMBER = "a";
private static final String INVALID_GROUP_TYPE = "OP3";

private static final String VALID_NAME = "Rachel Walker";
private static final String VALID_PHONE = "123456";
private static final String VALID_ADDRESS = "123 Main Street #0505";
private static final String VALID_EMAIL = "[email protected]";
private static final String VALID_TAG_1 = "friend";
private static final String VALID_TAG_2 = "neighbour";
private static final String VALID_GROUP_NUMBER = "1";
private static final String VALID_GROUP_TYPE = "OP1";

private static final String WHITESPACE = " \t\r\n";

Expand Down Expand Up @@ -193,4 +199,50 @@ public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {

assertEquals(expectedTagSet, actualTagSet);
}

@Test
public void parseGroupNumber_null_throwsNullPointerException() {
assertThrows(NullPointerException.class, () -> ParserUtil.parseGroupNumber((String) null));
}

@Test
public void parseGroupNumber_invalidValue_throwsParseException() {
assertThrows(ParseException.class, () -> ParserUtil.parseGroupNumber(INVALID_GROUP_NUMBER));
}

@Test
public void parseGroupNumber_validValueWithoutWhitespace_returnsGroupNumber() throws Exception {
GroupNumber expectedGroupNumber = new GroupNumber(VALID_GROUP_NUMBER);
assertEquals(expectedGroupNumber, ParserUtil.parseGroupNumber(VALID_GROUP_NUMBER));
}

@Test
public void parseGroupNumber_validValueWithWhitespace_returnsTrimmedGroupNumber() throws Exception {
String groupNumberWithWhitespace = WHITESPACE + VALID_GROUP_NUMBER + WHITESPACE;
GroupNumber expectedGroupNumber = new GroupNumber(VALID_GROUP_NUMBER);
assertEquals(expectedGroupNumber, ParserUtil.parseGroupNumber(groupNumberWithWhitespace));
}

@Test
public void parseGroupType_null_throwsNullPointerException() {
assertThrows(NullPointerException.class, () -> ParserUtil.parseGroupType((String) null));
}

@Test
public void parseGroupType_invalidValue_throwsParseException() {
assertThrows(ParseException.class, () -> ParserUtil.parseGroupType(INVALID_GROUP_TYPE));
}

@Test
public void parseGroupType_validValueWithoutWhitespace_returnsGroupType() throws Exception {
GroupType expectedGroupType = new GroupType(VALID_GROUP_TYPE);
assertEquals(expectedGroupType, ParserUtil.parseGroupType(VALID_GROUP_TYPE));
}

@Test
public void parseGroupType_validValueWithWhitespace_returnsTrimmedGroupType() throws Exception {
String groupTypeWithWhitespace = WHITESPACE + VALID_GROUP_TYPE + WHITESPACE;
GroupType expectedGroupType = new GroupType(VALID_GROUP_TYPE);
assertEquals(expectedGroupType, ParserUtil.parseGroupType(groupTypeWithWhitespace));
}
}
38 changes: 33 additions & 5 deletions src/test/java/seedu/address/model/ClassmateTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,14 @@
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;
import static seedu.address.logic.commands.CommandTestUtil.VALID_CLASSCODE_G02;
import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;
import static seedu.address.testutil.Assert.assertThrows;
import static seedu.address.testutil.TypicalStudents.ALICE;
import static seedu.address.testutil.TypicalStudents.getTypicalClassmate;
import static seedu.address.testutil.TypicalTutorialClasses.G01;
import static seedu.address.testutil.TypicalTutorialClasses.G02;
import static seedu.address.testutil.TypicalTutorialGroups.TUT_01;

import java.util.ArrayList;
import java.util.Arrays;
Expand All @@ -24,6 +28,7 @@
import seedu.address.model.tutorialclass.TutorialClass;
import seedu.address.model.tutorialgroup.TutorialGroup;
import seedu.address.testutil.StudentBuilder;
import seedu.address.testutil.TutorialGroupBuilder;

public class ClassmateTest {

Expand Down Expand Up @@ -52,7 +57,7 @@ public void resetData_withDuplicateStudents_throwsDuplicateStudentException() {
//TODO: Add sample tutorialClasses to tests. Replace new ArrayList in newData constructor line.
Student alice = new StudentBuilder(ALICE).build();
List<Student> newStudents = Arrays.asList(ALICE, alice);
ClassmateStub newData = new ClassmateStub(newStudents, new ArrayList<>(), new ArrayList<>());
ClassmateStub newData = new ClassmateStub(newStudents, new ArrayList<>());

assertThrows(DuplicateStudentException.class, () -> classmate.resetData(newData));
}
Expand Down Expand Up @@ -86,19 +91,42 @@ public void getStudentList_modifyList_throwsUnsupportedOperationException() {
assertThrows(UnsupportedOperationException.class, () -> classmate.getStudentList().remove(0));
}

@Test
public void hasTutorialGroup_nullTutorialGroup_throwsNullPointerException() {
assertThrows(NullPointerException.class, () -> classmate.hasTutorialGroup(null));
}

@Test
public void hasTutorialGroup_tutorialGroupNotInClassmate_returnsFalse() {
classmate.addTutorialClass(G01);
assertFalse(classmate.hasTutorialGroup(TUT_01));
}

@Test
public void hasTutorialGroup_tutorialGroupInClassmate_returnsTrue() {
classmate.addTutorialClass(G01);
classmate.addTutorialGroup(TUT_01);
assertTrue(classmate.hasTutorialGroup(TUT_01));
}

@Test
public void hasTutorialGroup_studentWithDifferentClassCodeInClassmate_returnsFalse() {
classmate.addTutorialClass(G01);
classmate.addTutorialClass(G02);
TutorialGroup editedTUT_01 = new TutorialGroupBuilder(TUT_01).withClassCode(VALID_CLASSCODE_G02).build();
assertFalse(classmate.hasTutorialGroup(editedTUT_01));
}

/**
* A stub ReadOnlyClassmate whose students list can violate interface constraints.
*/
private static class ClassmateStub implements ReadOnlyClassmate {
private final ObservableList<Student> students = FXCollections.observableArrayList();
private final ObservableList<TutorialClass> tutorialClasses = FXCollections.observableArrayList();
private final ObservableList<TutorialGroup> tutorialGroups = FXCollections.observableArrayList();

ClassmateStub(Collection<Student> students, Collection<TutorialClass> tutorialClasses,
Collection<TutorialGroup> tutorialGroups) {
ClassmateStub(Collection<Student> students, Collection<TutorialClass> tutorialClasses) {
this.students.setAll(students);
this.tutorialClasses.setAll(tutorialClasses);
this.tutorialGroups.setAll(tutorialGroups);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package seedu.address.model.tutorialgroup;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static seedu.address.testutil.Assert.assertThrows;
Expand All @@ -20,7 +21,13 @@ public void constructor_invalidName_throwsIllegalArgumentException() {
}

@Test
public void isValidName() {
public void parseGroupType() {
assertEquals(1, GroupType.parseGroupType("OP1"));
assertEquals(2, GroupType.parseGroupType("OP2"));
}

@Test
public void isValidGroupType() {
// null group name
assertThrows(NullPointerException.class, () -> GroupType.isValidGroupType(null));

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
package seedu.address.model.tutorialgroup;

import static org.junit.jupiter.api.Assertions.*;
import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;
import static seedu.address.logic.commands.CommandTestUtil.VALID_CLASSCODE_G02;
import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;
import static seedu.address.testutil.Assert.assertThrows;
import static seedu.address.testutil.TypicalStudents.ALICE;
import static seedu.address.testutil.TypicalStudents.BOB;
import static seedu.address.testutil.TypicalTutorialGroups.TUT_01;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import org.junit.jupiter.api.Test;

import seedu.address.model.student.Student;
import seedu.address.model.student.UniqueStudentList;
import seedu.address.model.student.exceptions.DuplicateStudentException;
import seedu.address.model.student.exceptions.StudentNotFoundException;
import seedu.address.model.tutorialgroup.exceptions.DuplicateTutorialGroupException;
import seedu.address.model.tutorialgroup.exceptions.TutorialGroupNotFoundException;
import seedu.address.testutil.StudentBuilder;
import seedu.address.testutil.TutorialGroupBuilder;

public class UniqueTutorialGroupListTest {

private final UniqueTutorialGroupList uniqueTutorialGroupList = new UniqueTutorialGroupList();

@Test
public void contains_nullTutorialGroup_throwsNullPointerException() {
assertThrows(NullPointerException.class, () -> uniqueTutorialGroupList.contains(null));
}

@Test
public void contains_tutorialGroupNotInList_returnsFalse() {
assertFalse(uniqueTutorialGroupList.contains(TUT_01));
}

@Test
public void contains_tutorialGroupInList_returnsTrue() {
uniqueTutorialGroupList.add(TUT_01);
assertTrue(uniqueTutorialGroupList.contains(TUT_01));
}

@Test
public void contains_tutorialGroupWithDifferentClassCode_returnsFalse() {
uniqueTutorialGroupList.add(TUT_01);
TutorialGroup editedTUT_01 = new TutorialGroupBuilder(TUT_01).withClassCode(VALID_CLASSCODE_G02)
.build();
assertFalse(uniqueTutorialGroupList.contains(editedTUT_01));
}

@Test
public void add_nullTutorialGroup_throwsNullPointerException() {
assertThrows(NullPointerException.class, () -> uniqueTutorialGroupList.add(null));
}

@Test
public void add_duplicateTutorialGroup_throwsDuplicateTutorialGroupException() {
uniqueTutorialGroupList.add(TUT_01);
assertThrows(DuplicateTutorialGroupException.class, () -> uniqueTutorialGroupList.add(TUT_01));
}

@Test
public void remove_nullTutorialGroup_throwsNullPointerException() {
assertThrows(NullPointerException.class, () -> uniqueTutorialGroupList.remove(null));
}

@Test
public void remove_tutorialGroupDoesNotExist_throwsTutorialGroupNotFoundException() {
assertThrows(TutorialGroupNotFoundException.class, () -> uniqueTutorialGroupList.remove(TUT_01));
}

@Test
public void remove_existingTutorialGroup_removesTutorialGroup() {
uniqueTutorialGroupList.add(TUT_01);
uniqueTutorialGroupList.remove(TUT_01);
UniqueTutorialGroupList expectedUniqueTutorialGroupList = new UniqueTutorialGroupList();
assertEquals(expectedUniqueTutorialGroupList, uniqueTutorialGroupList);
}

@Test
public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {
assertThrows(UnsupportedOperationException.class, ()
-> uniqueTutorialGroupList.asUnmodifiableObservableList().remove(0));
}

}

0 comments on commit e50748e

Please sign in to comment.