1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements.  See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership.  The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License.  You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied.  See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  */
19 package org.apache.commons.lang.math;
20 
21 /**
22  * Test cases for the {@link DoubleRange} class.
23  *
24  * @author Apache Software Foundation
25  * @version $Id: DoubleRangeTest.java 905636 2010-02-02 14:03:32Z niallp $
26  */
27 public final class DoubleRangeTest extends AbstractRangeTest {
28 
DoubleRangeTest(String name)29     public DoubleRangeTest(String name) {
30         super(name);
31     }
32 
setUp()33     public void setUp() {
34         super.setUp();
35         tenToTwenty = new DoubleRange(double10, double20);
36         otherRange = new NumberRange(ten, twenty);
37     }
38 
createRange(Integer integer1, Integer integer2)39     protected Range createRange(Integer integer1, Integer integer2) {
40         return new DoubleRange(integer1, integer2);
41     }
createRange(Integer integer)42     protected Range createRange(Integer integer) {
43         return new NumberRange(integer);
44     }
45 
46     //--------------------------------------------------------------------------
47 
testConstructor1a()48     public void testConstructor1a() {
49         DoubleRange nr = new DoubleRange(8d);
50         assertEquals(double8, nr.getMinimumNumber());
51         assertEquals(double8, nr.getMaximumNumber());
52 
53         try {
54             new DoubleRange(Double.NaN);
55             fail();
56         } catch (IllegalArgumentException ex) {}
57     }
58 
testConstructor1b()59     public void testConstructor1b() {
60         DoubleRange nr = new DoubleRange(double8);
61         assertSame(double8, nr.getMinimumNumber());
62         assertSame(double8, nr.getMaximumNumber());
63 
64         Range r = new DoubleRange(nonComparableNumber);
65 
66         try {
67             new DoubleRange(null);
68             fail();
69         } catch (IllegalArgumentException ex) {}
70         try {
71             new DoubleRange(new Double(Double.NaN));
72             fail();
73         } catch (IllegalArgumentException ex) {}
74     }
75 
testConstructor2a()76     public void testConstructor2a() {
77         DoubleRange nr = new DoubleRange(8d, 10d);
78         assertEquals(double8, nr.getMinimumNumber());
79         assertEquals(double10, nr.getMaximumNumber());
80 
81         nr = new DoubleRange(10d, 8d);
82         assertEquals(double8, nr.getMinimumNumber());
83         assertEquals(double10, nr.getMaximumNumber());
84 
85         try {
86             new DoubleRange(Double.NaN, 8d);
87             fail();
88         } catch (IllegalArgumentException ex) {}
89     }
90 
testConstructor2b()91     public void testConstructor2b() {
92         DoubleRange nr = new DoubleRange(double8, double10);
93         assertSame(double8, nr.getMinimumNumber());
94         assertSame(double10, nr.getMaximumNumber());
95 
96         nr = new DoubleRange(double10, double8);
97         assertSame(double8, nr.getMinimumNumber());
98         assertSame(double10, nr.getMaximumNumber());
99 
100         nr = new DoubleRange(double8, double10);
101         assertSame(double8, nr.getMinimumNumber());
102         assertEquals(double10, nr.getMaximumNumber());
103 
104         // not null
105         try {
106             new DoubleRange(double8, null);
107             fail();
108         } catch (IllegalArgumentException ex) {}
109         try {
110             new DoubleRange(null, double8);
111             fail();
112         } catch (IllegalArgumentException ex) {}
113         try {
114             new DoubleRange(null, null);
115             fail();
116         } catch (IllegalArgumentException ex) {}
117 
118         try {
119             new DoubleRange(new Double(Double.NaN), double10);
120             fail();
121         } catch (IllegalArgumentException ex) {}
122     }
123 
124     //--------------------------------------------------------------------------
125 
testContainsNumber()126     public void testContainsNumber() {
127         assertEquals(false, tenToTwenty.containsNumber(null));
128         assertEquals(true, tenToTwenty.containsNumber(nonComparableNumber));
129 
130         assertEquals(false, tenToTwenty.containsNumber(five));
131         assertEquals(true, tenToTwenty.containsNumber(ten));
132         assertEquals(true, tenToTwenty.containsNumber(fifteen));
133         assertEquals(true, tenToTwenty.containsNumber(twenty));
134         assertEquals(false, tenToTwenty.containsNumber(twentyFive));
135 
136         assertEquals(false, tenToTwenty.containsNumber(long8));
137         assertEquals(true, tenToTwenty.containsNumber(long10));
138         assertEquals(true, tenToTwenty.containsNumber(long12));
139         assertEquals(true, tenToTwenty.containsNumber(long20));
140         assertEquals(false, tenToTwenty.containsNumber(long21));
141 
142         assertEquals(false, tenToTwenty.containsNumber(double8));
143         assertEquals(true, tenToTwenty.containsNumber(double10));
144         assertEquals(true, tenToTwenty.containsNumber(double12));
145         assertEquals(true, tenToTwenty.containsNumber(double20));
146         assertEquals(false, tenToTwenty.containsNumber(double21));
147 
148         assertEquals(false, tenToTwenty.containsNumber(float8));
149         assertEquals(true, tenToTwenty.containsNumber(float10));
150         assertEquals(true, tenToTwenty.containsNumber(float12));
151         assertEquals(true, tenToTwenty.containsNumber(float20));
152         assertEquals(false, tenToTwenty.containsNumber(float21));
153     }
154 
testToString()155     public void testToString() {
156         String str = tenToTwenty.toString();
157         assertEquals("Range[10.0,20.0]", str);
158         assertSame(str, tenToTwenty.toString());
159         assertEquals("Range[-20.0,-10.0]", createRange(new Integer(-20), new Integer(-10)).toString());
160     }
161 
162     //--------------------------------------------------------------------------
163 
164 }
165