blob: 5a35e2d2bb06612989b961caf8fb4a5ee78f1a2c [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.commons.lang.math;
import junit.framework.TestCase;
/**
* Test cases for the {@link Range} classes.
*
* @author Apache Software Foundation
* @version $Id$
*/
public abstract class AbstractRangeTest extends TestCase {
protected Range tenToTwenty;
protected Range otherRange;
protected Integer five;
protected Integer ten;
protected Integer twelve;
protected Integer fifteen;
protected Integer twenty;
protected Integer twentyFive;
protected Long long8;
protected Long long10;
protected Long long12;
protected Long long20;
protected Long long21;
protected Double double8;
protected Double double10;
protected Double double12;
protected Double double20;
protected Double double21;
protected Float float8;
protected Float float10;
protected Float float12;
protected Float float20;
protected Float float21;
private static class InnerNumber extends Number {
public double doubleValue() {
return 12d;
}
public float floatValue() {
return 12f;
}
public int intValue() {
return 12;
}
public long longValue() {
return 12L;
}
}
protected InnerNumber nonComparableNumber = new InnerNumber();
public AbstractRangeTest(String name) {
super(name);
}
public void setUp() {
five = new Integer(5);
ten = new Integer(10);
twelve = new Integer(12);
fifteen = new Integer(15);
twenty = new Integer(20);
twentyFive = new Integer(25);
long8 = new Long(8);
long10 = new Long(10);
long12 = new Long(12);
long20 = new Long(20);
long21 = new Long(21);
double8 = new Double(8);
double10 = new Double(10);
double12 = new Double(12);
double20 = new Double(20);
double21 = new Double(21);
float8 = new Float(8);
float10 = new Float(10);
float12 = new Float(12);
float20 = new Float(20);
float21 = new Float(21);
}
// --------------------------------------------------------------------------
public void testGetMinimum() {
assertEquals(10L, tenToTwenty.getMinimumLong());
assertEquals(10, tenToTwenty.getMinimumInteger());
assertEquals(10d, tenToTwenty.getMinimumDouble(), 0.00001d);
assertEquals(10f, tenToTwenty.getMinimumFloat(), 0.00001f);
}
public void testGetMaximum() {
assertEquals(20L, tenToTwenty.getMaximumLong());
assertEquals(20, tenToTwenty.getMaximumInteger());
assertEquals(20d, tenToTwenty.getMaximumDouble(), 0.00001d);
assertEquals(20f, tenToTwenty.getMaximumFloat(), 0.00001f);
}
//--------------------------------------------------------------------------
public void testContainsLong() {
assertEquals(false, tenToTwenty.containsLong(null));
assertEquals(true, tenToTwenty.containsLong(nonComparableNumber));
assertEquals(false, tenToTwenty.containsLong(five));
assertEquals(true, tenToTwenty.containsLong(ten));
assertEquals(true, tenToTwenty.containsLong(fifteen));
assertEquals(true, tenToTwenty.containsLong(twenty));
assertEquals(false, tenToTwenty.containsLong(twentyFive));
assertEquals(false, tenToTwenty.containsLong(long8));
assertEquals(true, tenToTwenty.containsLong(long10));
assertEquals(true, tenToTwenty.containsLong(long12));
assertEquals(true, tenToTwenty.containsLong(long20));
assertEquals(false, tenToTwenty.containsLong(long21));
assertEquals(false, tenToTwenty.containsLong(double8));
assertEquals(true, tenToTwenty.containsLong(double10));
assertEquals(true, tenToTwenty.containsLong(double12));
assertEquals(true, tenToTwenty.containsLong(double20));
assertEquals(false, tenToTwenty.containsLong(double21));
assertEquals(false, tenToTwenty.containsLong(float8));
assertEquals(true, tenToTwenty.containsLong(float10));
assertEquals(true, tenToTwenty.containsLong(float12));
assertEquals(true, tenToTwenty.containsLong(float20));
assertEquals(false, tenToTwenty.containsLong(float21));
assertEquals(false, tenToTwenty.containsLong(9L));
assertEquals(true, tenToTwenty.containsLong(10L));
assertEquals(true, tenToTwenty.containsLong(15L));
assertEquals(true, tenToTwenty.containsLong(20L));
assertEquals(false, tenToTwenty.containsLong(21L));
}
public void testContainsInteger() {
assertEquals(false, tenToTwenty.containsInteger(null));
assertEquals(true, tenToTwenty.containsInteger(nonComparableNumber));
assertEquals(false, tenToTwenty.containsInteger(five));
assertEquals(true, tenToTwenty.containsInteger(ten));
assertEquals(true, tenToTwenty.containsInteger(fifteen));
assertEquals(true, tenToTwenty.containsInteger(twenty));
assertEquals(false, tenToTwenty.containsInteger(twentyFive));
assertEquals(false, tenToTwenty.containsInteger(long8));
assertEquals(true, tenToTwenty.containsInteger(long10));
assertEquals(true, tenToTwenty.containsInteger(long12));
assertEquals(true, tenToTwenty.containsInteger(long20));
assertEquals(false, tenToTwenty.containsInteger(long21));
assertEquals(false, tenToTwenty.containsInteger(double8));
assertEquals(true, tenToTwenty.containsInteger(double10));
assertEquals(true, tenToTwenty.containsInteger(double12));
assertEquals(true, tenToTwenty.containsInteger(double20));
assertEquals(false, tenToTwenty.containsInteger(double21));
assertEquals(false, tenToTwenty.containsInteger(float8));
assertEquals(true, tenToTwenty.containsInteger(float10));
assertEquals(true, tenToTwenty.containsInteger(float12));
assertEquals(true, tenToTwenty.containsInteger(float20));
assertEquals(false, tenToTwenty.containsInteger(float21));
assertEquals(false, tenToTwenty.containsInteger(9));
assertEquals(true, tenToTwenty.containsInteger(10));
assertEquals(true, tenToTwenty.containsInteger(15));
assertEquals(true, tenToTwenty.containsInteger(20));
assertEquals(false, tenToTwenty.containsInteger(21));
}
public void testContainsDouble() {
assertEquals(false, tenToTwenty.containsDouble(null));
assertEquals(true, tenToTwenty.containsDouble(nonComparableNumber));
assertEquals(false, tenToTwenty.containsDouble(five));
assertEquals(true, tenToTwenty.containsDouble(ten));
assertEquals(true, tenToTwenty.containsDouble(fifteen));
assertEquals(true, tenToTwenty.containsDouble(twenty));
assertEquals(false, tenToTwenty.containsDouble(twentyFive));
assertEquals(false, tenToTwenty.containsDouble(long8));
assertEquals(true, tenToTwenty.containsDouble(long10));
assertEquals(true, tenToTwenty.containsDouble(long12));
assertEquals(true, tenToTwenty.containsDouble(long20));
assertEquals(false, tenToTwenty.containsDouble(long21));
assertEquals(false, tenToTwenty.containsDouble(double8));
assertEquals(true, tenToTwenty.containsDouble(double10));
assertEquals(true, tenToTwenty.containsDouble(double12));
assertEquals(true, tenToTwenty.containsDouble(double20));
assertEquals(false, tenToTwenty.containsDouble(double21));
assertEquals(false, tenToTwenty.containsDouble(float8));
assertEquals(true, tenToTwenty.containsDouble(float10));
assertEquals(true, tenToTwenty.containsDouble(float12));
assertEquals(true, tenToTwenty.containsDouble(float20));
assertEquals(false, tenToTwenty.containsDouble(float21));
assertEquals(false, tenToTwenty.containsDouble(9d));
assertEquals(true, tenToTwenty.containsDouble(10d));
assertEquals(true, tenToTwenty.containsDouble(15d));
assertEquals(true, tenToTwenty.containsDouble(20d));
assertEquals(false, tenToTwenty.containsDouble(21d));
}
public void testContainsFloat() {
assertEquals(false, tenToTwenty.containsFloat(null));
assertEquals(true, tenToTwenty.containsFloat(nonComparableNumber));
assertEquals(false, tenToTwenty.containsFloat(five));
assertEquals(true, tenToTwenty.containsFloat(ten));
assertEquals(true, tenToTwenty.containsFloat(fifteen));
assertEquals(true, tenToTwenty.containsFloat(twenty));
assertEquals(false, tenToTwenty.containsFloat(twentyFive));
assertEquals(false, tenToTwenty.containsFloat(long8));
assertEquals(true, tenToTwenty.containsFloat(long10));
assertEquals(true, tenToTwenty.containsFloat(long12));
assertEquals(true, tenToTwenty.containsFloat(long20));
assertEquals(false, tenToTwenty.containsFloat(long21));
assertEquals(false, tenToTwenty.containsFloat(double8));
assertEquals(true, tenToTwenty.containsFloat(double10));
assertEquals(true, tenToTwenty.containsFloat(double12));
assertEquals(true, tenToTwenty.containsFloat(double20));
assertEquals(false, tenToTwenty.containsFloat(double21));
assertEquals(false, tenToTwenty.containsFloat(float8));
assertEquals(true, tenToTwenty.containsFloat(float10));
assertEquals(true, tenToTwenty.containsFloat(float12));
assertEquals(true, tenToTwenty.containsFloat(float20));
assertEquals(false, tenToTwenty.containsFloat(float21));
assertEquals(false, tenToTwenty.containsFloat(9f));
assertEquals(true, tenToTwenty.containsFloat(10f));
assertEquals(true, tenToTwenty.containsFloat(15f));
assertEquals(true, tenToTwenty.containsFloat(20f));
assertEquals(false, tenToTwenty.containsFloat(21f));
}
//--------------------------------------------------------------------------
public void testContainsRange() {
assertEquals(false, tenToTwenty.containsRange(null));
assertEquals(false, tenToTwenty.containsRange(createRange(five, five)));
assertEquals(false, tenToTwenty.containsRange(createRange(five, ten)));
assertEquals(false, tenToTwenty.containsRange(createRange(five, twelve)));
assertEquals(false, tenToTwenty.containsRange(createRange(five, fifteen)));
assertEquals(false, tenToTwenty.containsRange(createRange(five, twenty)));
assertEquals(false, tenToTwenty.containsRange(createRange(five, twentyFive)));
assertEquals(true, tenToTwenty.containsRange(createRange(ten, ten)));
assertEquals(true, tenToTwenty.containsRange(createRange(ten, twelve)));
assertEquals(true, tenToTwenty.containsRange(createRange(ten, fifteen)));
assertEquals(true, tenToTwenty.containsRange(createRange(ten, twenty)));
assertEquals(false, tenToTwenty.containsRange(createRange(ten, twentyFive)));
assertEquals(true, tenToTwenty.containsRange(createRange(twelve, twelve)));
assertEquals(true, tenToTwenty.containsRange(createRange(twelve, fifteen)));
assertEquals(true, tenToTwenty.containsRange(createRange(twelve, twenty)));
assertEquals(false, tenToTwenty.containsRange(createRange(twelve, twentyFive)));
assertEquals(true, tenToTwenty.containsRange(createRange(fifteen, fifteen)));
assertEquals(true, tenToTwenty.containsRange(createRange(fifteen, twenty)));
assertEquals(false, tenToTwenty.containsRange(createRange(fifteen, twentyFive)));
assertEquals(true, tenToTwenty.containsRange(createRange(twenty, twenty)));
assertEquals(false, tenToTwenty.containsRange(createRange(twenty, twentyFive)));
assertEquals(false, tenToTwenty.containsRange(createRange(twentyFive, twentyFive)));
}
public void testOverlapsRange() {
assertEquals(false, tenToTwenty.overlapsRange(null));
assertEquals(false, tenToTwenty.overlapsRange(createRange(five, five)));
assertEquals(true, tenToTwenty.overlapsRange(createRange(five, ten)));
assertEquals(true, tenToTwenty.overlapsRange(createRange(five, twelve)));
assertEquals(true, tenToTwenty.overlapsRange(createRange(five, fifteen)));
assertEquals(true, tenToTwenty.overlapsRange(createRange(five, twenty)));
assertEquals(true, tenToTwenty.overlapsRange(createRange(five, twentyFive)));
assertEquals(true, tenToTwenty.overlapsRange(createRange(ten, ten)));
assertEquals(true, tenToTwenty.overlapsRange(createRange(ten, twelve)));
assertEquals(true, tenToTwenty.overlapsRange(createRange(ten, fifteen)));
assertEquals(true, tenToTwenty.overlapsRange(createRange(ten, twenty)));
assertEquals(true, tenToTwenty.overlapsRange(createRange(ten, twentyFive)));
assertEquals(true, tenToTwenty.overlapsRange(createRange(twelve, twelve)));
assertEquals(true, tenToTwenty.overlapsRange(createRange(twelve, fifteen)));
assertEquals(true, tenToTwenty.overlapsRange(createRange(twelve, twenty)));
assertEquals(true, tenToTwenty.overlapsRange(createRange(twelve, twentyFive)));
assertEquals(true, tenToTwenty.overlapsRange(createRange(fifteen, fifteen)));
assertEquals(true, tenToTwenty.overlapsRange(createRange(fifteen, twenty)));
assertEquals(true, tenToTwenty.overlapsRange(createRange(fifteen, twentyFive)));
assertEquals(true, tenToTwenty.overlapsRange(createRange(twenty, twenty)));
assertEquals(true, tenToTwenty.overlapsRange(createRange(twenty, twentyFive)));
assertEquals(false, tenToTwenty.overlapsRange(createRange(twentyFive, twentyFive)));
}
//--------------------------------------------------------------------------
public void testEquals() {
assertEquals(false, tenToTwenty.equals(createRange(ten, fifteen)));
assertEquals(false, tenToTwenty.equals(createRange(ten, twentyFive)));
assertEquals(false, tenToTwenty.equals(createRange(fifteen, twenty)));
assertEquals(false, tenToTwenty.equals(createRange(five, twenty)));
assertEquals(false, tenToTwenty.equals(createRange(five, ten)));
assertEquals(false, tenToTwenty.equals(createRange(ten)));
assertEquals(true, tenToTwenty.equals(tenToTwenty));
assertEquals(true, tenToTwenty.equals(createRange(ten, twenty)));
assertEquals(true, tenToTwenty.equals(createRange(twenty, ten)));
assertEquals(false, tenToTwenty.equals(null));
assertEquals(false, tenToTwenty.equals(new Object()));
assertEquals(false, tenToTwenty.equals(otherRange));
}
public void testHashCode() {
assertEquals(tenToTwenty.hashCode(), tenToTwenty.hashCode());
assertTrue(tenToTwenty.hashCode() != 0);
}
public void testToString() {
String str = tenToTwenty.toString();
assertEquals("Range[10,20]", str);
assertSame(str, tenToTwenty.toString());
assertEquals("Range[-20,-10]", createRange(new Integer(-20), new Integer(-10)).toString());
}
protected abstract Range createRange(Integer integer);
protected abstract Range createRange(Integer integer1, Integer integer2);
}