From 358d9da95a75a908d37c9843078063809052273d Mon Sep 17 00:00:00 2001 From: Jing Li Date: Mon, 25 Apr 2016 06:37:38 +0200 Subject: [PATCH] Support negative numbers and add more unit tests --- .../awesomevalidation/model/NumericRange.java | 2 +- .../model/NumericRangeTest.java | 37 +++++++++++++------ 2 files changed, 26 insertions(+), 13 deletions(-) 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))); }