1   /*
2    * Copyright 2002-2007 the original author or authors.
3    * 
4    * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5    * use this file except in compliance with the License. You may obtain a copy of
6    * the License at
7    * 
8    * http://www.apache.org/licenses/LICENSE-2.0
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13   * License for the specific language governing permissions and limitations under
14   * the License.
15   */
16  package org.springframework.rules.support;
17  
18  import junit.framework.TestCase;
19  
20  /**
21   * Testcase for NumberComparator
22   * 
23   * @author Peter De Bruycker
24   */
25  public class NumberComparatorTests extends TestCase {
26  
27  	public void testCompareIntegers() {
28  		NumberComparator comparator = NumberComparator.INSTANCE;
29  
30  		assertEquals(0, comparator.compare(Integer.valueOf(1), Integer.valueOf(1)));
31  		assertEquals(1, comparator.compare(Integer.valueOf(10), Integer.valueOf(1)));
32  		assertEquals(-1, comparator.compare(Integer.valueOf(1), Integer.valueOf(10)));
33  	}
34  
35  	public void testCompareLongs() {
36  		NumberComparator comparator = NumberComparator.INSTANCE;
37  
38  		assertEquals(0, comparator.compare(Long.valueOf(1l), Long.valueOf(1l)));
39  		assertEquals(1, comparator.compare(Long.valueOf(10l), Long.valueOf(1l)));
40  		assertEquals(-1, comparator.compare(Long.valueOf(1l), Long.valueOf(10l)));
41  	}
42  
43  	public void testCompareFloats() {
44  		NumberComparator comparator = NumberComparator.INSTANCE;
45  
46  		assertEquals(0, comparator.compare(Float.valueOf(1.5f), Float.valueOf(1.5f)));
47  		assertEquals(1, comparator.compare(Float.valueOf(10.22f), Float.valueOf(1.5f)));
48  		assertEquals(-1, comparator.compare(Float.valueOf(1.5f), Float.valueOf(10.22f)));
49  	}
50  
51  	public void testCompareDoubles() {
52  		NumberComparator comparator = NumberComparator.INSTANCE;
53  
54  		assertEquals(0, comparator.compare(Double.valueOf(1.5), Double.valueOf(1.5)));
55  		assertEquals(1, comparator.compare(Double.valueOf(10.22), Double.valueOf(1.5)));
56  		assertEquals(-1, comparator.compare(Double.valueOf(1.5), Double.valueOf(10.22)));
57  	}
58  
59  	public void testCompareDifferentTypesEqual() {
60  		NumberComparator comparator = NumberComparator.INSTANCE;
61  
62  		assertEquals(0, comparator.compare(Double.valueOf(1.0), Integer.valueOf(1)));
63  		assertEquals(0, comparator.compare(Double.valueOf(1.0), Long.valueOf(1l)));
64  		assertEquals(0, comparator.compare(Double.valueOf(1.0), Float.valueOf(1.0f)));
65  
66  		assertEquals(0, comparator.compare(Integer.valueOf(1), Long.valueOf(1l)));
67  		assertEquals(0, comparator.compare(Integer.valueOf(1), Float.valueOf(1.0f)));
68  		assertEquals(0, comparator.compare(Integer.valueOf(1), Double.valueOf(1.0)));
69  
70  		assertEquals(0, comparator.compare(Long.valueOf(1l), Integer.valueOf(1)));
71  		assertEquals(0, comparator.compare(Long.valueOf(1l), Float.valueOf(1.0f)));
72  		assertEquals(0, comparator.compare(Long.valueOf(1l), Double.valueOf(1.0)));
73  
74  		assertEquals(0, comparator.compare(Float.valueOf(1.0f), Integer.valueOf(1)));
75  		assertEquals(0, comparator.compare(Float.valueOf(1.0f), Long.valueOf(1l)));
76  		assertEquals(0, comparator.compare(Float.valueOf(1.0f), Double.valueOf(1.0)));
77  	}
78  
79  	public void testCompareDifferentTypesSmaller() {
80  		NumberComparator comparator = NumberComparator.INSTANCE;
81  
82  		assertEquals(-1, comparator.compare(Double.valueOf(1.0), Integer.valueOf(10)));
83  		assertEquals(-1, comparator.compare(Double.valueOf(1.0), Long.valueOf(10l)));
84  		assertEquals(-1, comparator.compare(Double.valueOf(1.0), Float.valueOf(10.0f)));
85  
86  		assertEquals(-1, comparator.compare(Integer.valueOf(1), Long.valueOf(10l)));
87  		assertEquals(-1, comparator.compare(Integer.valueOf(1), Float.valueOf(10.0f)));
88  		assertEquals(-1, comparator.compare(Integer.valueOf(1), Double.valueOf(10.0)));
89  
90  		assertEquals(-1, comparator.compare(Long.valueOf(1l), Integer.valueOf(10)));
91  		assertEquals(-1, comparator.compare(Long.valueOf(1l), Float.valueOf(10.0f)));
92  		assertEquals(-1, comparator.compare(Long.valueOf(1l), Double.valueOf(10.0)));
93  
94  		assertEquals(-1, comparator.compare(Float.valueOf(1.0f), Integer.valueOf(10)));
95  		assertEquals(-1, comparator.compare(Float.valueOf(1.0f), Long.valueOf(10l)));
96  		assertEquals(-1, comparator.compare(Float.valueOf(1.0f), Double.valueOf(10.0)));
97  	}
98  
99  	public void testCompareDifferentTypesLarger() {
100 		NumberComparator comparator = NumberComparator.INSTANCE;
101 
102 		assertEquals(1, comparator.compare(Double.valueOf(10.0), Integer.valueOf(1)));
103 		assertEquals(1, comparator.compare(Double.valueOf(10.0), Long.valueOf(1l)));
104 		assertEquals(1, comparator.compare(Double.valueOf(10.0), Float.valueOf(1.0f)));
105 
106 		assertEquals(1, comparator.compare(Integer.valueOf(10), Long.valueOf(1l)));
107 		assertEquals(1, comparator.compare(Integer.valueOf(10), Float.valueOf(1.0f)));
108 		assertEquals(1, comparator.compare(Integer.valueOf(10), Double.valueOf(1.0)));
109 
110 		assertEquals(1, comparator.compare(Long.valueOf(10l), Integer.valueOf(1)));
111 		assertEquals(1, comparator.compare(Long.valueOf(10l), Float.valueOf(1.0f)));
112 		assertEquals(1, comparator.compare(Long.valueOf(10l), Double.valueOf(1.0)));
113 
114 		assertEquals(1, comparator.compare(Float.valueOf(10.0f), Integer.valueOf(1)));
115 		assertEquals(1, comparator.compare(Float.valueOf(10.0f), Long.valueOf(1l)));
116 		assertEquals(1, comparator.compare(Float.valueOf(10.0f), Double.valueOf(1.0)));
117 	}
118 
119 }