001: package org.apache.torque.om;
002:
003: /*
004: * Licensed to the Apache Software Foundation (ASF) under one
005: * or more contributor license agreements. See the NOTICE file
006: * distributed with this work for additional information
007: * regarding copyright ownership. The ASF licenses this file
008: * to you under the Apache License, Version 2.0 (the
009: * "License"); you may not use this file except in compliance
010: * with the License. You may obtain a copy of the License at
011: *
012: * http://www.apache.org/licenses/LICENSE-2.0
013: *
014: * Unless required by applicable law or agreed to in writing,
015: * software distributed under the License is distributed on an
016: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017: * KIND, either express or implied. See the License for the
018: * specific language governing permissions and limitations
019: * under the License.
020: */
021:
022: import java.util.Arrays;
023:
024: import junit.framework.Assert;
025: import junit.framework.TestCase;
026:
027: /**
028: * Currently just tests the equality of NumberKey.
029: *
030: * @author <a href="mailto:stephenh@chase3000.com">Stephen Haberman</a>
031: * @version $Id: NumberKeyTest.java 473821 2006-11-11 22:37:25Z tv $
032: */
033: public class NumberKeyTest extends TestCase {
034:
035: /** Test value. */
036: private NumberKey n1a = new NumberKey(1);
037: /** Test value. */
038: private NumberKey n1b = new NumberKey(1);
039: /** Test value. */
040: private NumberKey n1c = new NumberKey(1);
041: /** Test value. */
042: private NumberKey n2a = new NumberKey(2);
043:
044: /**
045: * Simple constructor.
046: *
047: * @param name the name of the test to execute
048: */
049: public NumberKeyTest(String name) {
050: super (name);
051: }
052:
053: /**
054: * Test a.equals(a)
055: */
056: public void testReflexive() {
057: Assert.assertTrue(n1a.equals(n1a));
058: }
059:
060: /**
061: * Test a.equals(b) = b.equals(a)
062: */
063: public void testSymmetric() {
064: Assert.assertTrue(n1a.equals(n1b));
065: Assert.assertTrue(n1b.equals(n1a));
066:
067: Assert.assertTrue(!"1".equals(n1a));
068: // As this used to give false, i.e. n1a was considered equal to "1"
069: // it can lead to difficult to find bugs if it is immediately
070: // changed to the opposite. So this will throw an exception.
071: //Assert.assertTrue(!n1a.equals("1"));
072: try {
073: Assert.assertTrue(!n1a.equals("1"));
074: } catch (IllegalArgumentException e) {
075: // expected
076: }
077: Assert.assertTrue(!n1a.equals(new Integer(1)));
078: Assert.assertTrue(!new Integer(1).equals(n1a));
079: }
080:
081: /**
082: * Test a.equals(b) = b.equals(c) = c.equals(a)
083: */
084: public void testTransitive() {
085: Assert.assertTrue(n1a.equals(n1b));
086: Assert.assertTrue(n1b.equals(n1c));
087: Assert.assertTrue(n1c.equals(n1a));
088: }
089:
090: /**
091: * Test !a.equals(null)
092: */
093: public void testNull() {
094: Assert.assertTrue(!n1a.equals(null));
095: }
096:
097: /**
098: * Test sorting.
099: */
100: public void testList() {
101: Object[] array = new Object[] { n1a, n2a, n1b };
102: Arrays.sort(array);
103:
104: Assert.assertEquals(n1a, array[0]);
105: Assert.assertEquals(n1b, array[1]);
106: Assert.assertEquals(n2a, array[2]);
107: }
108:
109: /**
110: * Test long constructor
111: */
112: public void testLongConstructor() {
113: NumberKey key = new NumberKey(9900000000000001L);
114: assertEquals("9900000000000001", key.toString());
115: }
116: }
|