From 7e81d9ca763fea39833f41d5f6d5008269ff555c Mon Sep 17 00:00:00 2001 From: Tim O'Brien Date: Sat, 11 Oct 2003 20:35:11 +0000 Subject: [PATCH] Added various tests to the NumberRangeTest class, including tests for null parameters to overlap, include*, and constructors. Tests for hashCode, and tests for equals. git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/lang/trunk@137683 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/commons/lang/NumberRangeTest.java | 111 +++++++++++++----- 1 file changed, 81 insertions(+), 30 deletions(-) diff --git a/src/test/org/apache/commons/lang/NumberRangeTest.java b/src/test/org/apache/commons/lang/NumberRangeTest.java index 196bcf657..32f0bc593 100644 --- a/src/test/org/apache/commons/lang/NumberRangeTest.java +++ b/src/test/org/apache/commons/lang/NumberRangeTest.java @@ -53,6 +53,8 @@ */ package org.apache.commons.lang; +import java.math.BigDecimal; + import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; @@ -62,33 +64,38 @@ * * @author Christopher Elkins * @author Ringo De Smet - * @version $Revision: 1.5 $ $Date: 2003/08/18 02:22:25 $ + * @author Tim O'Brien + * @version $Revision: 1.6 $ $Date: 2003/10/11 20:35:11 $ */ public final class NumberRangeTest extends TestCase { private NumberRange tenToTwenty; + private NumberRange fifteenToTwentyFive; + private NumberRange fiveToNine; private Number five; + private Number nine; private Number ten; private Number fifteen; private Number twenty; private Number twentyFive; - public NumberRangeTest(String name) { super(name); } - public void setUp() { five = new Integer(5); + nine = new Double(9.0); ten = new Integer(10); fifteen = new Integer(15); twenty = new Integer(20); twentyFive = new Integer(25); tenToTwenty = new NumberRange(ten, twenty); + fifteenToTwentyFive = new NumberRange( fifteen, twentyFive); + fiveToNine = new NumberRange( five, nine ); } @@ -125,7 +132,26 @@ public void testEquals() { result = tenToTwenty.equals(new NumberRange(fifteen, twenty)); assertEquals(expected, result); } + + public void testEqualsWithOtherObject() { + assertEquals( "A NumberRange should not equals a String object", false, fiveToNine.equals("TEST")); + } + public void testEqualsWithSameReference() { + assertEquals( "A NumberRange should equal itself", true, fiveToNine.equals(fiveToNine)); + } + + public void testEqualsNull() { + assertEquals( "A NumberRange should not equal null", false, fiveToNine.equals(null)); + } + + public void testHashCode() { + NumberRange nr = new NumberRange( new Integer(5), new Double(9.0)); + assertEquals( "The hashCode of 5-9 should equals the hashcode of another NumberRange of the same min/max", + fiveToNine.hashCode(), nr.hashCode()); + assertTrue( "The hashCode of 10-20 should not equal the hashCode of 5-9", + fiveToNine.hashCode() != tenToTwenty.hashCode()); + } public void testIncludesNumber() { boolean expected = false; @@ -149,6 +175,10 @@ public void testIncludesNumber() { assertEquals(expected, result); } + public void testIncludesNumberNull() { + boolean result = tenToTwenty.includesNumber(null); + assertEquals("Includes number should return false for null values", false, result); + } public void testIncludesRange() { boolean expected = false; @@ -182,52 +212,73 @@ public void testIncludesRange() { assertEquals(expected, result); } - public void testConstructorNullParameters() - { - try - { + public void testIncludesRangeNull() { + boolean result = tenToTwenty.includesRange(null); + assertEquals("Includes range should return false for null values", false, result); + } + + public void testConstructor() { + NumberRange nr = new NumberRange( new Double(2.0)); + assertEquals("Unexpected min on NumberRange", 2.0, nr.getMinimum().doubleValue(), Double.MIN_VALUE); + assertEquals("Unexpected max on NumberRange", 2.0, nr.getMaximum().doubleValue(), Double.MIN_VALUE); + } + + public void testConstructorNullParameters() { + try { NumberRange nr = new NumberRange(null); fail("NumberRange(null) did not throw an exception."); - } - catch (Exception e) - { - assertTrue( - "NumberRange(null)", - e instanceof NullPointerException); + } catch (Exception e) { + assertTrue( "NumberRange(null)", e instanceof NullPointerException); } - try - { + try { NumberRange nr = new NumberRange(five, null); fail("NumberRange(five, null) did not throw an exception."); - } - catch (Exception e) - { - assertTrue( - "NumberRange(five, null)", - e instanceof NullPointerException); + } catch (Exception e) { + assertTrue("NumberRange(five, null)", e instanceof NullPointerException); } - try - { + try { NumberRange nr = new NumberRange(null, five); fail("NumberRange(null, five) did not throw an exception."); + } catch (Exception e) { + assertTrue("NumberRange(null, five)", e instanceof NullPointerException); } - catch (Exception e) - { - assertTrue( - "NumberRange(null, five)", - e instanceof NullPointerException); - } - } + public void testConstructorWithMaxLessThanMin() { + NumberRange nr = new NumberRange( new Double(2.0), new Double(1.0)); + assertEquals("Unexpected min on NumberRange", 2.0, nr.getMinimum().doubleValue(), Double.MIN_VALUE); + assertEquals("Unexpected max on NumberRange", 2.0, nr.getMaximum().doubleValue(), Double.MIN_VALUE); + } + + public void testOverlap() { + assertEquals( "5-9 should not overlap 10-20", false, fiveToNine.overlaps( tenToTwenty )); + assertEquals( "10-20 should overlap 15-25", true, tenToTwenty.overlaps( fifteenToTwentyFive )); + } + + public void testOverlapNull() { + assertEquals( "5-9 should not overlap null", false, fiveToNine.overlaps( null )); + } + public void testToString() { String expected = "10-20"; String result = tenToTwenty.toString(); assertEquals(expected, result); } + public void testToStringWithNegatives() { + String expected = "(-20)-(-10)"; + NumberRange nr = new NumberRange( new Integer(-20), new Integer(-10)); + String result = nr.toString(); + assertEquals(expected, result); + + expected = "(-20)-10"; + nr = new NumberRange( new Integer(-20), new Integer(10)); + result = nr.toString(); + assertEquals(expected, result); + } + }