diff --git a/library/src/main/java/com/basgeekball/awesomevalidation/model/NumericRange.java b/library/src/main/java/com/basgeekball/awesomevalidation/model/NumericRange.java index b78bfbc..09939ce 100644 --- a/library/src/main/java/com/basgeekball/awesomevalidation/model/NumericRange.java +++ b/library/src/main/java/com/basgeekball/awesomevalidation/model/NumericRange.java @@ -14,7 +14,7 @@ public NumericRange(Range range) { } public static boolean isNumberFormat(String text) { - return Pattern.compile("^([1-9]|(0(\\.|$)))").matcher(text).find(); + return Pattern.compile("^-?(([1-9]\\d*(\\.\\d+)?)||(0\\.\\d+)||0)$").matcher(text).find(); } public boolean isValid(String valueText) { diff --git a/library/src/test/java/com/basgeekball/awesomevalidation/model/NumericRangeTest.java b/library/src/test/java/com/basgeekball/awesomevalidation/model/NumericRangeTest.java index a1a07a3..a9cd824 100644 --- a/library/src/test/java/com/basgeekball/awesomevalidation/model/NumericRangeTest.java +++ b/library/src/test/java/com/basgeekball/awesomevalidation/model/NumericRangeTest.java @@ -13,12 +13,26 @@ public void testIsNumberFormatPositive() { assertTrue(NumericRange.isNumberFormat("0.0")); assertTrue(NumericRange.isNumberFormat("0.123")); assertTrue(NumericRange.isNumberFormat("1.23")); + assertTrue(NumericRange.isNumberFormat("10.23")); + assertTrue(NumericRange.isNumberFormat("12.34")); + assertTrue(NumericRange.isNumberFormat("100.234")); + assertTrue(NumericRange.isNumberFormat("100.023")); + assertTrue(NumericRange.isNumberFormat("123.456")); assertTrue(NumericRange.isNumberFormat("123")); + assertTrue(NumericRange.isNumberFormat("-12")); + assertTrue(NumericRange.isNumberFormat("-0.1")); + assertTrue(NumericRange.isNumberFormat("-1.2")); + assertTrue(NumericRange.isNumberFormat("-12.34")); + assertTrue(NumericRange.isNumberFormat("-10.23")); + assertTrue(NumericRange.isNumberFormat("-100.234")); + assertTrue(NumericRange.isNumberFormat("-123.456")); } public void testIsNumberFormatNegative() { assertFalse(NumericRange.isNumberFormat("00.123")); assertFalse(NumericRange.isNumberFormat("01.23")); + assertFalse(NumericRange.isNumberFormat("10.")); + assertFalse(NumericRange.isNumberFormat("--10")); assertFalse(NumericRange.isNumberFormat("02012")); assertFalse(NumericRange.isNumberFormat("a1000")); } @@ -55,23 +69,22 @@ public void testClosedIntRange() { public void testClosedFloatRange() { NumericRange numericRange = new NumericRange(Range.closed(0.0f, 100.0f)); - assertTrue(numericRange.isValid(Float.toString(0.0f))); - assertTrue(numericRange.isValid(Float.toString(0.00000f))); - assertTrue(numericRange.isValid(Float.toString(0.00001f))); - assertTrue(numericRange.isValid(Float.toString(99.99f))); - assertTrue(numericRange.isValid(Float.toString(100.0f))); - assertTrue(numericRange.isValid(Float.toString(100.00000f))); - assertTrue(numericRange.isValid(Float.toString(50.0f))); + assertTrue(numericRange.isValid("0.0")); + assertTrue(numericRange.isValid("0.00000")); + assertTrue(numericRange.isValid("0.00001")); + assertTrue(numericRange.isValid("99.99")); + assertTrue(numericRange.isValid("100.0")); + assertTrue(numericRange.isValid("100.00000")); + assertTrue(numericRange.isValid("50.0")); assertTrue(numericRange.isValid(Integer.toString(-0))); assertTrue(numericRange.isValid(Integer.toString(0))); assertTrue(numericRange.isValid(Integer.toString(50))); assertTrue(numericRange.isValid(Integer.toString(100))); - assertFalse(numericRange.isValid(Float.toString(-0.0f))); - assertFalse(numericRange.isValid(Float.toString(-1.0f))); - assertFalse(numericRange.isValid(Float.toString(-0.00001f))); - assertFalse(numericRange.isValid(Float.toString(100.00001f))); - assertFalse(numericRange.isValid(Float.toString(1000.0f))); + assertFalse(numericRange.isValid("-0.00001")); + assertFalse(numericRange.isValid("-1.0")); + assertFalse(numericRange.isValid("100.00001")); + assertFalse(numericRange.isValid("1000.0")); assertFalse(numericRange.isValid(Integer.toString(-1))); assertFalse(numericRange.isValid(Integer.toString(101))); }