forked from nus-cs2103-AY2324S2/tp
-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
6 changed files
with
227 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
89 changes: 89 additions & 0 deletions
89
src/test/java/staffconnect/logic/commands/FilterCommandTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
package staffconnect.logic.commands; | ||
|
||
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 staffconnect.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW; | ||
import static staffconnect.logic.commands.CommandTestUtil.assertCommandSuccess; | ||
import static staffconnect.testutil.TypicalPersons.ALICE; | ||
import static staffconnect.testutil.TypicalPersons.BENSON; | ||
import static staffconnect.testutil.TypicalPersons.DANIEL; | ||
import static staffconnect.testutil.TypicalPersons.getTypicalStaffBook; | ||
|
||
import java.util.Arrays; | ||
import java.util.Collections; | ||
|
||
import org.junit.jupiter.api.Test; | ||
|
||
import staffconnect.model.Model; | ||
import staffconnect.model.ModelManager; | ||
import staffconnect.model.UserPrefs; | ||
import staffconnect.model.person.PersonHasTagPredicate; | ||
import staffconnect.model.tag.Tag; | ||
|
||
public class FilterCommandTest { | ||
|
||
private Model model = new ModelManager(getTypicalStaffBook(), new UserPrefs()); | ||
private Model expectedModel = new ModelManager(getTypicalStaffBook(), new UserPrefs()); | ||
|
||
@Test | ||
public void execute_personHasTag_noPersonFound() { | ||
String expectedMessage = String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0); | ||
PersonHasTagPredicate tagPredicate = prepareTagPredicate("hello"); | ||
FilterCommand command = new FilterCommand(tagPredicate); | ||
expectedModel.updateFilteredPersonList(tagPredicate); | ||
assertCommandSuccess(command, model, expectedMessage, model); | ||
assertEquals(Collections.emptyList(), model.getFilteredPersonList()); | ||
} | ||
|
||
@Test | ||
public void execute_personHasTag_multiplePersonsFound() { | ||
String expectedMessage = String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3); | ||
PersonHasTagPredicate tagPredicate = prepareTagPredicate("friends"); | ||
FilterCommand command = new FilterCommand(tagPredicate); | ||
expectedModel.updateFilteredPersonList(tagPredicate); | ||
assertCommandSuccess(command, model, expectedMessage, model); | ||
assertEquals(Arrays.asList(ALICE, BENSON, DANIEL), model.getFilteredPersonList()); | ||
} | ||
|
||
@Test | ||
public void equals() { | ||
PersonHasTagPredicate firstTagPredicate = new PersonHasTagPredicate(new Tag("friend")); | ||
PersonHasTagPredicate secondTagPredicate = new PersonHasTagPredicate(new Tag("colleagues")); | ||
|
||
FilterCommand filterTagFirstCommand = new FilterCommand(firstTagPredicate); | ||
FilterCommand filterTagSecondCommand = new FilterCommand(secondTagPredicate); | ||
|
||
// same object -> returns true | ||
assertTrue(filterTagFirstCommand.equals(filterTagFirstCommand)); | ||
|
||
// same values -> returns true | ||
FilterCommand filterTagFirstCommandCopy = new FilterCommand(firstTagPredicate); | ||
assertTrue(filterTagFirstCommand.equals(filterTagFirstCommandCopy)); | ||
|
||
// different types -> returns false | ||
assertFalse(filterTagFirstCommand.equals(1)); | ||
|
||
// null -> returns false | ||
assertFalse(filterTagFirstCommand.equals(null)); | ||
|
||
// different tag -> returns false | ||
assertFalse(filterTagFirstCommand.equals(filterTagSecondCommand)); | ||
} | ||
|
||
@Test | ||
public void toStringMethod() { | ||
PersonHasTagPredicate tagPredicate = new PersonHasTagPredicate(new Tag("hello")); | ||
FilterCommand filterCommand = new FilterCommand(tagPredicate); | ||
String expected = FilterCommand.class.getCanonicalName() + "{tagPredicate=" + tagPredicate + "}"; | ||
assertEquals(expected, filterCommand.toString()); | ||
} | ||
|
||
/** | ||
* Parses {@code userInput} into a {@code PersonHasTagPredicate}. | ||
*/ | ||
private PersonHasTagPredicate prepareTagPredicate(String userInput) { | ||
return new PersonHasTagPredicate(new Tag(userInput)); | ||
} | ||
|
||
} |
53 changes: 53 additions & 0 deletions
53
src/test/java/staffconnect/logic/parser/FilterCommandParserTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
package staffconnect.logic.parser; | ||
|
||
import static staffconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT; | ||
import static staffconnect.logic.commands.CommandTestUtil.INVALID_TAG_DESC; | ||
import static staffconnect.logic.commands.CommandTestUtil.TAG_DESC_FRIEND; | ||
import static staffconnect.logic.commands.CommandTestUtil.VALID_TAG_FRIEND; | ||
import static staffconnect.logic.parser.CliSyntax.PREFIX_TAG; | ||
import static staffconnect.logic.parser.CommandParserTestUtil.assertParseFailure; | ||
import static staffconnect.logic.parser.CommandParserTestUtil.assertParseSuccess; | ||
|
||
import org.junit.jupiter.api.Test; | ||
|
||
import staffconnect.logic.commands.FilterCommand; | ||
import staffconnect.model.person.PersonHasTagPredicate; | ||
import staffconnect.model.tag.Tag; | ||
|
||
public class FilterCommandParserTest { | ||
|
||
private static final String TAG_EMPTY = " " + PREFIX_TAG; // should have a space before tag prefix | ||
|
||
private FilterCommandParser parser = new FilterCommandParser(); | ||
|
||
@Test | ||
public void parse_emptyArg_throwsParseException() { | ||
assertParseFailure(parser, " ", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE)); | ||
} | ||
|
||
@Test | ||
public void parse_invalidTagName_throwsParseException() { | ||
// no whitespace before PREFIX_TAG | ||
assertParseFailure(parser, PREFIX_TAG + VALID_TAG_FRIEND, | ||
String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE)); | ||
// tagname is non-alphanumeric (contains '*') | ||
assertParseFailure(parser, INVALID_TAG_DESC, | ||
String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE)); | ||
|
||
} | ||
|
||
@Test | ||
public void parse_validTagName_success() { | ||
// 1 leading and no trailing whitespaces | ||
FilterCommand expectedFilterCommand = new FilterCommand(new PersonHasTagPredicate(new Tag(VALID_TAG_FRIEND))); | ||
assertParseSuccess(parser, TAG_DESC_FRIEND, expectedFilterCommand); | ||
|
||
// 1 leading and multiple trailing whitespaces | ||
assertParseSuccess(parser, TAG_DESC_FRIEND + " ", expectedFilterCommand); // 1 leading, 3 trailing | ||
|
||
// multiple leading and trailing whitespaces | ||
assertParseSuccess(parser, " " + TAG_DESC_FRIEND + " ", expectedFilterCommand); // 2 leading, 1 trailing | ||
assertParseSuccess(parser, " " + TAG_DESC_FRIEND + " ", expectedFilterCommand); // 5 leading, 3 trailing | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
73 changes: 73 additions & 0 deletions
73
src/test/java/staffconnect/model/person/PersonHasTagPredicateTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
package staffconnect.model.person; | ||
|
||
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 org.junit.jupiter.api.Test; | ||
|
||
import staffconnect.model.tag.Tag; | ||
import staffconnect.testutil.PersonBuilder; | ||
|
||
public class PersonHasTagPredicateTest { | ||
|
||
@Test | ||
public void equals() { | ||
Tag firstPredicateTag = new Tag("first"); | ||
Tag secondPredicateTag = new Tag("second"); | ||
|
||
PersonHasTagPredicate firstPredicate = new PersonHasTagPredicate(firstPredicateTag); | ||
PersonHasTagPredicate secondPredicate = new PersonHasTagPredicate(secondPredicateTag); | ||
|
||
// same object -> returns true | ||
assertTrue(firstPredicate.equals(firstPredicate)); | ||
|
||
// same values -> returns true | ||
PersonHasTagPredicate firstPredicateCopy = new PersonHasTagPredicate(firstPredicateTag); | ||
assertTrue(firstPredicate.equals(firstPredicateCopy)); | ||
|
||
// different types -> returns false | ||
assertFalse(firstPredicate.equals(1)); | ||
|
||
// null -> returns false | ||
assertFalse(firstPredicate.equals(null)); | ||
|
||
// different person -> returns false | ||
assertFalse(firstPredicate.equals(secondPredicate)); | ||
} | ||
|
||
@Test | ||
public void test_personHasTag_returnsTrue() { | ||
// predicate set to track "tester" tag | ||
PersonHasTagPredicate predicate = new PersonHasTagPredicate(new Tag("tester")); | ||
|
||
// person only has tag "tester" | ||
assertTrue(predicate.test(new PersonBuilder().withTags("tester").build())); | ||
|
||
// person has multiple tags and has "tester" | ||
assertTrue(predicate.test(new PersonBuilder().withTags("tester", "tester2").build())); | ||
|
||
// case-insensitivity checks | ||
assertTrue(predicate.test(new PersonBuilder().withTags("tesTER").build())); | ||
assertTrue(predicate.test(new PersonBuilder().withTags("TESTER").build())); | ||
assertTrue(predicate.test(new PersonBuilder().withTags("tEsTeR").build())); | ||
} | ||
|
||
@Test | ||
public void test_personDoesNotHaveTag_returnsFalse() { | ||
// predicate set to track "tester" tag | ||
PersonHasTagPredicate predicate = new PersonHasTagPredicate(new Tag("tester")); | ||
|
||
// person does not have tag "tester" | ||
assertFalse(predicate.test(new PersonBuilder().withTags("tester2").build())); | ||
} | ||
|
||
@Test | ||
public void toStringMethod() { | ||
Tag tag = new Tag("hello"); | ||
PersonHasTagPredicate predicate = new PersonHasTagPredicate(tag); | ||
|
||
String expected = PersonHasTagPredicate.class.getCanonicalName() + "{tag name=" + tag + "}"; | ||
assertEquals(expected, predicate.toString()); | ||
} | ||
} |