From d716e145557c084e0f67cca8674e809a46efaeee Mon Sep 17 00:00:00 2001 From: nixonwidjaja Date: Mon, 6 Nov 2023 02:15:58 +0800 Subject: [PATCH] Improve phone --- src/main/java/seedu/address/model/person/Phone.java | 11 +++++++++-- .../seedu/address/logic/parser/ParserUtilTest.java | 2 +- .../java/seedu/address/model/person/PhoneTest.java | 4 ++++ .../seedu/address/storage/JsonAdaptedPersonTest.java | 2 +- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/seedu/address/model/person/Phone.java b/src/main/java/seedu/address/model/person/Phone.java index 56fb613e1c0..e9b60b7594b 100644 --- a/src/main/java/seedu/address/model/person/Phone.java +++ b/src/main/java/seedu/address/model/person/Phone.java @@ -9,9 +9,9 @@ */ public class Phone { - public static final String MESSAGE_CONSTRAINTS = - "Phone numbers should only contain numbers, and it should be at least 3 digits long"; + "Phone numbers should only contain numbers (or start with + sign for international numbers), " + + "and it should be between 3 - 20 digits long"; public static final String VALIDATION_REGEX = "\\d{3,}"; public final String value; @@ -22,6 +22,7 @@ public class Phone { */ public Phone(String phone) { requireNonNull(phone); + phone = phone.trim(); checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS); value = phone; } @@ -30,6 +31,12 @@ public Phone(String phone) { * Returns true if a given string is a valid phone number. */ public static boolean isValidPhone(String test) { + if (test.length() < 3 || test.length() > 20) { + return false; + } + if (test.charAt(0) == '+') { + return test.substring(1).matches(VALIDATION_REGEX); + } return test.matches(VALIDATION_REGEX); } diff --git a/src/test/java/seedu/address/logic/parser/ParserUtilTest.java b/src/test/java/seedu/address/logic/parser/ParserUtilTest.java index 372dddeee4a..02a25db846e 100644 --- a/src/test/java/seedu/address/logic/parser/ParserUtilTest.java +++ b/src/test/java/seedu/address/logic/parser/ParserUtilTest.java @@ -22,7 +22,7 @@ public class ParserUtilTest { private static final String INVALID_NAME = " "; - private static final String INVALID_PHONE = "+651234"; + 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"; diff --git a/src/test/java/seedu/address/model/person/PhoneTest.java b/src/test/java/seedu/address/model/person/PhoneTest.java index e6a329843db..44b3fa1596c 100644 --- a/src/test/java/seedu/address/model/person/PhoneTest.java +++ b/src/test/java/seedu/address/model/person/PhoneTest.java @@ -32,11 +32,15 @@ public void isValidPhone() { assertFalse(Phone.isValidPhone("phone")); // non-numeric assertFalse(Phone.isValidPhone("9011p041")); // alphabets within digits assertFalse(Phone.isValidPhone("9312 1534")); // spaces within digits + assertFalse(Phone.isValidPhone("+")); + assertFalse(Phone.isValidPhone("+99")); + assertFalse(Phone.isValidPhone("+1231231231231231321312331321312213213")); // valid phone numbers assertTrue(Phone.isValidPhone("911")); // exactly 3 numbers assertTrue(Phone.isValidPhone("93121534")); assertTrue(Phone.isValidPhone("124293842033123")); // long phone numbers + assertTrue(Phone.isValidPhone("+911")); } @Test diff --git a/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java b/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java index 9fb2c844a1d..1dcbb1d48b5 100644 --- a/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java +++ b/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java @@ -19,7 +19,7 @@ public class JsonAdaptedPersonTest { private static final String INVALID_NAME = " "; - private static final String INVALID_PHONE = "+651234"; + 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_SALARY = "-1";