From 262a26315431d9cfa6a92faa9b748b8d8986abaa Mon Sep 17 00:00:00 2001 From: Dylan Chew Date: Sat, 10 Sep 2016 17:04:46 +0800 Subject: [PATCH 1/7] add NameTest and isSimilar method --- src/seedu/addressbook/data/person/Name.java | 4 +++ .../addressbook/data/person/NameTest.java | 25 +++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 src/seedu/addressbook/data/person/NameTest.java diff --git a/src/seedu/addressbook/data/person/Name.java b/src/seedu/addressbook/data/person/Name.java index 3cea2db6b..961e90a71 100644 --- a/src/seedu/addressbook/data/person/Name.java +++ b/src/seedu/addressbook/data/person/Name.java @@ -60,5 +60,9 @@ public boolean equals(Object other) { public int hashCode() { return fullName.hashCode(); } + + public boolean isSimilar(Name other) { + return false; + } } diff --git a/src/seedu/addressbook/data/person/NameTest.java b/src/seedu/addressbook/data/person/NameTest.java new file mode 100644 index 000000000..cedfd5e20 --- /dev/null +++ b/src/seedu/addressbook/data/person/NameTest.java @@ -0,0 +1,25 @@ +package seedu.addressbook.data.person; + +import static org.junit.Assert.*; + +import org.junit.Before; +import org.junit.Test; + +import seedu.addressbook.data.exception.IllegalValueException; + +public class NameTest { + + private Name n1; + + @Before + public void setup() throws IllegalValueException { + n1 = new Name("John K Smith"); + } + + @Test + public void test() throws IllegalValueException { + final Name n2 = new Name("John"); + assertTrue(n1.isSimilar(n2)); + } + +} From e00d9b59b701374db7de056a4a072bf077296e4b Mon Sep 17 00:00:00 2001 From: Dylan Chew Date: Sat, 10 Sep 2016 17:09:13 +0800 Subject: [PATCH 2/7] fix isSimilar method --- src/seedu/addressbook/data/person/Name.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/seedu/addressbook/data/person/Name.java b/src/seedu/addressbook/data/person/Name.java index 961e90a71..1ec4b5c4e 100644 --- a/src/seedu/addressbook/data/person/Name.java +++ b/src/seedu/addressbook/data/person/Name.java @@ -62,7 +62,7 @@ public int hashCode() { } public boolean isSimilar(Name other) { - return false; + return this.toString().contains(other.toString()) || other.toString().contains(this.toString()); } } From 5fec0f45be992b54a24bf7f8caee4159597b6dd2 Mon Sep 17 00:00:00 2001 From: Dylan Chew Date: Sat, 10 Sep 2016 17:12:10 +0800 Subject: [PATCH 3/7] add null pointer test case --- src/seedu/addressbook/data/person/NameTest.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/seedu/addressbook/data/person/NameTest.java b/src/seedu/addressbook/data/person/NameTest.java index cedfd5e20..e2e7d42c9 100644 --- a/src/seedu/addressbook/data/person/NameTest.java +++ b/src/seedu/addressbook/data/person/NameTest.java @@ -17,9 +17,15 @@ public void setup() throws IllegalValueException { } @Test - public void test() throws IllegalValueException { + public void similarInput_returnsTrue() throws IllegalValueException { final Name n2 = new Name("John"); assertTrue(n1.isSimilar(n2)); } + + @Test + public void nullInput_returnsFalse() { + final Name n2 = null; + assertFalse(n1.isSimilar(n2)); + } } From 7f6b1f8a82ccd483cfcd8644e5cd7280ce5e98d0 Mon Sep 17 00:00:00 2001 From: Dylan Chew Date: Sat, 10 Sep 2016 17:12:53 +0800 Subject: [PATCH 4/7] update method to handle null pointer --- src/seedu/addressbook/data/person/Name.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/seedu/addressbook/data/person/Name.java b/src/seedu/addressbook/data/person/Name.java index 1ec4b5c4e..1ba978ba9 100644 --- a/src/seedu/addressbook/data/person/Name.java +++ b/src/seedu/addressbook/data/person/Name.java @@ -62,6 +62,9 @@ public int hashCode() { } public boolean isSimilar(Name other) { + if (other == null) { + return false; + } return this.toString().contains(other.toString()) || other.toString().contains(this.toString()); } From f2f67eeec6a098fed11b828dfbba3a576f4b520f Mon Sep 17 00:00:00 2001 From: Dylan Chew Date: Sat, 10 Sep 2016 17:16:51 +0800 Subject: [PATCH 5/7] add case insensitive input test case --- src/seedu/addressbook/data/person/NameTest.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/seedu/addressbook/data/person/NameTest.java b/src/seedu/addressbook/data/person/NameTest.java index e2e7d42c9..4a2d8ebbe 100644 --- a/src/seedu/addressbook/data/person/NameTest.java +++ b/src/seedu/addressbook/data/person/NameTest.java @@ -27,5 +27,12 @@ public void nullInput_returnsFalse() { final Name n2 = null; assertFalse(n1.isSimilar(n2)); } + + @Test + public void caseInsensitiveInput_returnsTrue() throws IllegalValueException { + final Name n2 = new Name("john"); + assertTrue(n1.isSimilar(n2)); + + } } From ccbf0ae626adba78b5fe16f88e844f902895af78 Mon Sep 17 00:00:00 2001 From: Dylan Chew Date: Sat, 10 Sep 2016 17:18:23 +0800 Subject: [PATCH 6/7] fix method to allow case insensitivity --- src/seedu/addressbook/data/person/Name.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/seedu/addressbook/data/person/Name.java b/src/seedu/addressbook/data/person/Name.java index 1ba978ba9..1d341a84e 100644 --- a/src/seedu/addressbook/data/person/Name.java +++ b/src/seedu/addressbook/data/person/Name.java @@ -65,7 +65,10 @@ public boolean isSimilar(Name other) { if (other == null) { return false; } - return this.toString().contains(other.toString()) || other.toString().contains(this.toString()); + String n1 = this.toString().toLowerCase(); + String n2 = other.toString().toLowerCase(); + + return n1.contains(n2) || n2.contains(n1); } } From 398a5222f3e4afb0338f66b945dd000b5b5cb15e Mon Sep 17 00:00:00 2001 From: Dylan Chew Date: Sat, 10 Sep 2016 17:43:22 +0800 Subject: [PATCH 7/7] fix regex validation and isSimilar method --- src/seedu/addressbook/data/person/Name.java | 17 +++++++++++++++-- src/seedu/addressbook/data/person/NameTest.java | 7 +++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/seedu/addressbook/data/person/Name.java b/src/seedu/addressbook/data/person/Name.java index 1d341a84e..c91b946f4 100644 --- a/src/seedu/addressbook/data/person/Name.java +++ b/src/seedu/addressbook/data/person/Name.java @@ -13,7 +13,7 @@ public class Name { public static final String EXAMPLE = "John Doe"; public static final String MESSAGE_NAME_CONSTRAINTS = "Person names should be spaces or alphabetic characters"; - public static final String NAME_VALIDATION_REGEX = "[\\p{Alpha} ]+"; + public static final String NAME_VALIDATION_REGEX = "[\\p{Alpha}\\, ]+"; public final String fullName; @@ -68,7 +68,20 @@ public boolean isSimilar(Name other) { String n1 = this.toString().toLowerCase(); String n2 = other.toString().toLowerCase(); - return n1.contains(n2) || n2.contains(n1); + String[] arr1 = n1.split("[,\\s+]+"); + String[] arr2 = n2.split("[,\\s+]+"); + + for (String s1:arr1) { + for (String s2:arr2) { + if (s1.equals(s2)) { + return true; + } + } + } + + + + return false; } } diff --git a/src/seedu/addressbook/data/person/NameTest.java b/src/seedu/addressbook/data/person/NameTest.java index 4a2d8ebbe..9eabda45a 100644 --- a/src/seedu/addressbook/data/person/NameTest.java +++ b/src/seedu/addressbook/data/person/NameTest.java @@ -34,5 +34,12 @@ public void caseInsensitiveInput_returnsTrue() throws IllegalValueException { assertTrue(n1.isSimilar(n2)); } + + @Test + public void nameWithCommaInput_returnsTrue() throws IllegalValueException { + final Name n2 = new Name("Smith, John K"); + assertTrue(n1.isSimilar(n2)); + + } }