1   // Copyright (c) 2003, Chad Woolley, All rights reserved.
2   
3   package org.virtualmock.util;
4   
5   import junit.framework.Test;
6   import junit.framework.TestCase;
7   import org.hansel.CoverageDecorator;
8   import org.virtualmock.matcher.ArgMatcher;
9   import org.virtualmock.matcher.EqualsMatcher;
10  import org.virtualmock.util.PrimitiveUtils;
11  
12  
13  /***
14   * Tests the EqualsMatcher class
15   *
16   * @author Chad Woolley
17   * @version $Revision: 1.1 $
18   */
19  public class PrimitiveUtilsTest extends TestCase {
20      ArgMatcher matcher = null;
21      PrimitiveUtils primitiveUtils = null;
22  
23      /***
24       * Hansel support
25       *
26       * @return the decorated Test
27       */
28      public static Test suite() {
29          CoverageDecorator cd =
30              new CoverageDecorator(PrimitiveUtilsTest.class,
31                  new Class[] {PrimitiveUtils.class});
32          cd.setDisplayStatistics(true);
33  
34          return cd;
35      }
36  
37      /***
38       * Set up the test
39       *
40       * @throws Exception any exception thrown during setup.
41       */
42      public void setUp() throws Exception {
43          super.setUp();
44          matcher = new EqualsMatcher();
45          primitiveUtils = new PrimitiveUtils();
46      }
47  
48      /***
49       * Tear down the test
50       *
51       * @throws Exception any exception thrown during teardown.
52       */
53      public void tearDown() throws Exception {
54          super.tearDown();
55      }
56  
57      /***
58       * Test for all primitive types
59       */
60      public void testReturnsCorrectValuesForAllPrimitiveTypes() {
61          assertEquals(new Integer(0),
62              primitiveUtils.getDefaultPrimitiveValue(int.class));
63          assertEquals(new Float(0.0f),
64              primitiveUtils.getDefaultPrimitiveValue(float.class));
65          assertEquals(new Double(0.0d),
66              primitiveUtils.getDefaultPrimitiveValue(double.class));
67  
68          byte byteValue = 0;
69          assertEquals(new Byte(byteValue),
70              primitiveUtils.getDefaultPrimitiveValue(byte.class));
71          assertEquals(new Long(0L),
72              primitiveUtils.getDefaultPrimitiveValue(long.class));
73  
74          short shortValue = 0;
75          assertEquals(new Short(shortValue),
76              primitiveUtils.getDefaultPrimitiveValue(short.class));
77          assertEquals(new Boolean(false),
78              primitiveUtils.getDefaultPrimitiveValue(boolean.class));
79          assertEquals(new Character('\u0000'),
80              primitiveUtils.getDefaultPrimitiveValue(char.class));
81      }
82  
83      /***
84       * Tests that isAssignableToPrimitive returns false for a type which is not
85       * a primitive wrappers
86       */
87      public void testReturnsFalseFromIsAssignableToPrimitive() {
88          assertFalse(primitiveUtils.isAssignableToPrimitiveWrapper(Object.class));
89      }
90  
91      /***
92       * Tests that the proper primitive types are returnes for all wrapper
93       * classes
94       */
95      public void testReturnsProperPrimitiveTypesForWrapperClasses() {
96          assertEquals(int.class,
97              primitiveUtils.getPrimitiveTypeForWrapperClass(Integer.class));
98  
99          assertEquals(float.class,
100             primitiveUtils.getPrimitiveTypeForWrapperClass(Float.class));
101 
102         assertEquals(double.class,
103             primitiveUtils.getPrimitiveTypeForWrapperClass(Double.class));
104 
105         assertEquals(byte.class,
106             primitiveUtils.getPrimitiveTypeForWrapperClass(Byte.class));
107 
108         assertEquals(long.class,
109             primitiveUtils.getPrimitiveTypeForWrapperClass(Long.class));
110 
111         assertEquals(short.class,
112             primitiveUtils.getPrimitiveTypeForWrapperClass(Short.class));
113 
114         assertEquals(boolean.class,
115             primitiveUtils.getPrimitiveTypeForWrapperClass(Boolean.class));
116 
117         assertEquals(char.class,
118             primitiveUtils.getPrimitiveTypeForWrapperClass(Character.class));
119     }
120 
121     /***
122      * Tests that isAssignableToPrimitive returns true for primitive wrapper
123      * types
124      */
125     public void testReturnsTrueFromIsAssignableToPrimitive() {
126         assertTrue(primitiveUtils.isAssignableToPrimitiveWrapper(Integer.class));
127 
128         assertTrue(primitiveUtils.isAssignableToPrimitiveWrapper(Float.class));
129 
130         assertTrue(primitiveUtils.isAssignableToPrimitiveWrapper(Double.class));
131 
132         assertTrue(primitiveUtils.isAssignableToPrimitiveWrapper(Byte.class));
133 
134         assertTrue(primitiveUtils.isAssignableToPrimitiveWrapper(Long.class));
135 
136         assertTrue(primitiveUtils.isAssignableToPrimitiveWrapper(Short.class));
137 
138         assertTrue(primitiveUtils.isAssignableToPrimitiveWrapper(Boolean.class));
139 
140         assertTrue(primitiveUtils.isAssignableToPrimitiveWrapper(Character.class));
141     }
142 
143     /***
144      * Test that an exception is thrown for non-primitive types
145      */
146     public void testThrowsExceptionForNonPrimitive() {
147         try {
148             primitiveUtils.getDefaultPrimitiveValue(Integer.class);
149             fail("expected exception");
150         } catch (IllegalArgumentException e) {
151         }
152     }
153 
154     /***
155      * Test that an exception is thrown for non-primitive wrapper types
156      */
157     public void testThrowsExceptionForNonPrimitiveWrapper() {
158         try {
159             primitiveUtils.getPrimitiveTypeForWrapperClass(Object.class);
160             fail("expected exception");
161         } catch (IllegalArgumentException e) {
162         }
163     }
164 }