001package org.apache.commons.beanutils2;
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
022import static org.apache.commons.beanutils2.TypeUtils.checkTypesCompatible;
023import static org.apache.commons.beanutils2.TypeUtils.getPrimitiveType;
024import static org.apache.commons.beanutils2.TypeUtils.getPrimitiveWrapper;
025import static org.apache.commons.beanutils2.TypeUtils.isAssignmentCompatible;
026import static org.apache.commons.beanutils2.TypeUtils.toNonPrimitiveClass;
027import static org.junit.Assert.assertEquals;
028import static org.junit.Assert.assertFalse;
029import static org.junit.Assert.assertNull;
030import static org.junit.Assert.assertSame;
031import static org.junit.Assert.assertTrue;
032
033import org.apache.commons.beanutils2.testbeans.TestBean;
034import org.junit.Test;
035
036public class TypeUtilsTest
037{
038
039    @Test
040    public void isAssignmentCompatibleBooleanPrimitiveBoolean()
041    {
042        assertTrue( isAssignmentCompatible( boolean.class, Boolean.class ) );
043        assertTrue( isAssignmentCompatible( boolean.class, Boolean.TYPE ) );
044        assertTrue( isAssignmentCompatible( boolean.class, boolean.class ) );
045    }
046
047    @Test
048    public void isAssignmentCompatibleBooleanPrimitiveByte()
049    {
050        assertFalse( isAssignmentCompatible( boolean.class, Byte.class ) );
051        assertFalse( isAssignmentCompatible( boolean.class, Byte.TYPE ) );
052        assertFalse( isAssignmentCompatible( boolean.class, byte.class ) );
053    }
054
055    @Test
056    public void isAssignmentCompatibleBooleanPrimitiveShort()
057    {
058        assertFalse( isAssignmentCompatible( boolean.class, Short.class ) );
059        assertFalse( isAssignmentCompatible( boolean.class, Short.TYPE ) );
060        assertFalse( isAssignmentCompatible( boolean.class, short.class ) );
061    }
062
063    @Test
064    public void isAssignmentCompatibleBooleanPrimitiveInteger()
065    {
066        assertFalse( isAssignmentCompatible( boolean.class, Integer.class ) );
067        assertFalse( isAssignmentCompatible( boolean.class, Integer.TYPE ) );
068        assertFalse( isAssignmentCompatible( boolean.class, int.class ) );
069    }
070
071    @Test
072    public void isAssignmentCompatibleBooleanPrimitiveLong()
073    {
074        assertFalse( isAssignmentCompatible( boolean.class, Long.class ) );
075        assertFalse( isAssignmentCompatible( boolean.class, Long.TYPE ) );
076        assertFalse( isAssignmentCompatible( boolean.class, long.class ) );
077    }
078
079    @Test
080    public void isAssignmentCompatibleBooleanPrimitveFloat()
081    {
082        assertFalse( isAssignmentCompatible( boolean.class, Float.class ) );
083        assertFalse( isAssignmentCompatible( boolean.class, Float.TYPE ) );
084        assertFalse( isAssignmentCompatible( boolean.class, float.class ) );
085    }
086
087    @Test
088    public void isAssignmentCompatibleBooleanPrimitveDouble()
089    {
090        assertFalse( isAssignmentCompatible( boolean.class, Double.class ) );
091        assertFalse( isAssignmentCompatible( boolean.class, Double.TYPE ) );
092        assertFalse( isAssignmentCompatible( boolean.class, double.class ) );
093    }
094
095    @Test
096    public void isAssignmentCompatibleBooleanPrimitveCharacter()
097    {
098        assertFalse( isAssignmentCompatible( boolean.class, Character.class ) );
099        assertFalse( isAssignmentCompatible( boolean.class, Character.TYPE ) );
100        assertFalse( isAssignmentCompatible( boolean.class, char.class ) );
101    }
102
103    @Test
104    public void isAssignmentCompatibleBooleanPrimitiveString()
105    {
106        assertFalse( isAssignmentCompatible( boolean.class, String.class ) );
107    }
108
109    @Test
110    public void isAssignmentCompatibleBooleanPrimitiveObject()
111    {
112        assertFalse( isAssignmentCompatible( boolean.class, Object.class ) );
113    }
114
115    @Test
116    public void isAssignmentCompatibleBooleanPrimitiveTestBean()
117    {
118        assertFalse( isAssignmentCompatible( boolean.class, TestBean.class ) );
119    }
120
121    @Test
122    public void isAssignmentCompatibleBooleanWrapperBoolean()
123    {
124
125        assertTrue( isAssignmentCompatible( Boolean.class, Boolean.class ) );
126        assertFalse( isAssignmentCompatible( Boolean.class, boolean.class ) );
127        assertFalse( isAssignmentCompatible( Boolean.class, Boolean.TYPE ) );
128    }
129
130    @Test
131    public void isAssignmentCompatibleBooleanWrapperByte()
132    {
133        assertFalse( isAssignmentCompatible( Boolean.class, Byte.class ) );
134        assertFalse( isAssignmentCompatible( Boolean.class, Byte.TYPE ) );
135        assertFalse( isAssignmentCompatible( Boolean.class, byte.class ) );
136    }
137
138    @Test
139    public void isAssignmentCompatibleBooleanWrapperShort()
140    {
141        assertFalse( isAssignmentCompatible( Boolean.class, Short.class ) );
142        assertFalse( isAssignmentCompatible( Boolean.class, Short.TYPE ) );
143        assertFalse( isAssignmentCompatible( Boolean.class, short.class ) );
144    }
145
146    @Test
147    public void isAssignmentCompatibleBooleanWrapperInteger()
148    {
149        assertFalse( isAssignmentCompatible( Boolean.class, Integer.class ) );
150        assertFalse( isAssignmentCompatible( Boolean.class, Integer.TYPE ) );
151        assertFalse( isAssignmentCompatible( Boolean.class, int.class ) );
152    }
153
154    @Test
155    public void isAssignmentCompatibleBooleanWrapperLong()
156    {
157        assertFalse( isAssignmentCompatible( Boolean.class, Long.class ) );
158        assertFalse( isAssignmentCompatible( Boolean.class, Long.TYPE ) );
159        assertFalse( isAssignmentCompatible( Boolean.class, long.class ) );
160    }
161
162    @Test
163    public void isAssignmentCompatibleBooleanWrapperFloat()
164    {
165        assertFalse( isAssignmentCompatible( Boolean.class, Float.class ) );
166        assertFalse( isAssignmentCompatible( Boolean.class, Float.TYPE ) );
167        assertFalse( isAssignmentCompatible( Boolean.class, float.class ) );
168    }
169
170    @Test
171    public void isAssignmentCompatibleBooleanWrapperDouble()
172    {
173        assertFalse( isAssignmentCompatible( Boolean.class, Double.class ) );
174        assertFalse( isAssignmentCompatible( Boolean.class, Double.TYPE ) );
175        assertFalse( isAssignmentCompatible( Boolean.class, double.class ) );
176    }
177
178    @Test
179    public void isAssignmentCompatibleBooleanWrapperCharacter()
180    {
181        assertFalse( isAssignmentCompatible( Boolean.class, Character.class ) );
182        assertFalse( isAssignmentCompatible( Boolean.class, Character.TYPE ) );
183        assertFalse( isAssignmentCompatible( Boolean.class, char.class ) );
184    }
185
186    @Test
187    public void isAssignmentCompatibleBooleanWrapperString()
188    {
189        assertFalse( isAssignmentCompatible( Boolean.class, String.class ) );
190    }
191
192    @Test
193    public void isAssignmentCompatibleBooleanWrapperObject()
194    {
195        assertFalse( isAssignmentCompatible( Boolean.class, Object.class ) );
196    }
197
198    @Test
199    public void isAssignmentCompatibleBooleanWrapperTestBean()
200    {
201        assertFalse( isAssignmentCompatible( Boolean.class, TestBean.class ) );
202    }
203
204    @Test
205    public void isAssignmentCompatibleBytePrimitiveBoolean()
206    {
207        assertFalse( isAssignmentCompatible( byte.class, Boolean.class ) );
208        assertFalse( isAssignmentCompatible( byte.class, Boolean.TYPE ) );
209        assertFalse( isAssignmentCompatible( byte.class, boolean.class ) );
210    }
211
212    @Test
213    public void isAssignmentCompatibleBytePrimitiveByte()
214    {
215        assertTrue( isAssignmentCompatible( byte.class, Byte.class ) );
216        assertTrue( isAssignmentCompatible( byte.class, Byte.TYPE ) );
217        assertTrue( isAssignmentCompatible( byte.class, byte.class ) );
218    }
219
220    @Test
221    public void isAssignmentCompatibleBytePrimitiveShort()
222    {
223        assertFalse( isAssignmentCompatible( byte.class, Short.class ) );
224        assertFalse( isAssignmentCompatible( byte.class, Short.TYPE ) );
225        assertFalse( isAssignmentCompatible( byte.class, short.class ) );
226    }
227
228    @Test
229    public void isAssignmentCompatibleBytePrimitiveInteger()
230    {
231        assertFalse( isAssignmentCompatible( byte.class, Integer.class ) );
232        assertFalse( isAssignmentCompatible( byte.class, Integer.TYPE ) );
233        assertFalse( isAssignmentCompatible( byte.class, int.class ) );
234    }
235
236    @Test
237    public void isAssignmentCompatibleBytePrimitiveLong()
238    {
239        assertFalse( isAssignmentCompatible( byte.class, Long.class ) );
240        assertFalse( isAssignmentCompatible( byte.class, Long.TYPE ) );
241        assertFalse( isAssignmentCompatible( byte.class, long.class ) );
242    }
243
244    @Test
245    public void isAssignmentCompatibleBytePrimitiveFloat()
246    {
247        assertFalse( isAssignmentCompatible( byte.class, Float.class ) );
248        assertFalse( isAssignmentCompatible( byte.class, Float.TYPE ) );
249        assertFalse( isAssignmentCompatible( byte.class, float.class ) );
250    }
251
252    @Test
253    public void isAssignmentCompatibleBytePrimitiveDouble()
254    {
255        assertFalse( isAssignmentCompatible( byte.class, Double.class ) );
256        assertFalse( isAssignmentCompatible( byte.class, Double.TYPE ) );
257        assertFalse( isAssignmentCompatible( byte.class, double.class ) );
258    }
259
260    @Test
261    public void isAssignmentCompatibleBytePrimitiveCharacter()
262    {
263        assertFalse( isAssignmentCompatible( byte.class, Character.class ) );
264        assertFalse( isAssignmentCompatible( byte.class, Character.TYPE ) );
265        assertFalse( isAssignmentCompatible( byte.class, char.class ) );
266    }
267
268    @Test
269    public void isAssignmentCompatibleBytePrimitiveString()
270    {
271        assertFalse( isAssignmentCompatible( byte.class, String.class ) );
272    }
273
274    @Test
275    public void isAssignmentCompatibleBytePrimitiveObject()
276    {
277        assertFalse( isAssignmentCompatible( byte.class, Object.class ) );
278    }
279
280    @Test
281    public void isAssignmentCompatibleBytePrimitveTestBean()
282    {
283        assertFalse( isAssignmentCompatible( byte.class, TestBean.class ) );
284    }
285
286    @Test
287    public void isAssignmentCompatibleByteWrapperBoolean()
288    {
289
290        assertFalse( isAssignmentCompatible( Byte.class, Boolean.class ) );
291        assertFalse( isAssignmentCompatible( Byte.class, boolean.class ) );
292        assertFalse( isAssignmentCompatible( Byte.class, Boolean.TYPE ) );
293    }
294
295    @Test
296    public void isAssignmentCompatibleByteWrapperByte()
297    {
298        assertTrue( isAssignmentCompatible( Byte.class, Byte.class ) );
299        assertFalse( isAssignmentCompatible( Byte.class, Byte.TYPE ) );
300        assertFalse( isAssignmentCompatible( Byte.class, byte.class ) );
301    }
302
303    @Test
304    public void isAssignmentCompatibleByteWrapperShort()
305    {
306        assertFalse( isAssignmentCompatible( Byte.class, Short.class ) );
307        assertFalse( isAssignmentCompatible( Byte.class, Short.TYPE ) );
308        assertFalse( isAssignmentCompatible( Byte.class, short.class ) );
309    }
310
311    @Test
312    public void isAssignmentCompatibleByteWrapperInteger()
313    {
314        assertFalse( isAssignmentCompatible( Byte.class, Integer.class ) );
315        assertFalse( isAssignmentCompatible( Byte.class, Integer.TYPE ) );
316        assertFalse( isAssignmentCompatible( Byte.class, int.class ) );
317    }
318
319    @Test
320    public void isAssignmentCompatibleByteWrapperLong()
321    {
322        assertFalse( isAssignmentCompatible( Byte.class, Long.class ) );
323        assertFalse( isAssignmentCompatible( Byte.class, Long.TYPE ) );
324        assertFalse( isAssignmentCompatible( Byte.class, long.class ) );
325    }
326
327    @Test
328    public void isAssignmentCompatibleByteWrapperFloat()
329    {
330        assertFalse( isAssignmentCompatible( Byte.class, Float.class ) );
331        assertFalse( isAssignmentCompatible( Byte.class, Float.TYPE ) );
332        assertFalse( isAssignmentCompatible( Byte.class, float.class ) );
333    }
334
335    @Test
336    public void isAssignmentCompatibleByteWrapperDouble()
337    {
338        assertFalse( isAssignmentCompatible( Byte.class, Double.class ) );
339        assertFalse( isAssignmentCompatible( Byte.class, Double.TYPE ) );
340        assertFalse( isAssignmentCompatible( Byte.class, double.class ) );
341    }
342
343    @Test
344    public void isAssignmentCompatibleByteWrapperCharacter()
345    {
346        assertFalse( isAssignmentCompatible( Byte.class, Character.class ) );
347        assertFalse( isAssignmentCompatible( Byte.class, Character.TYPE ) );
348        assertFalse( isAssignmentCompatible( Byte.class, char.class ) );
349    }
350
351    @Test
352    public void isAssignmentCompatibleByteWrapperString()
353    {
354        assertFalse( isAssignmentCompatible( Byte.class, String.class ) );
355    }
356
357    @Test
358    public void isAssignmentCompatibleByteWrapperObject()
359    {
360        assertFalse( isAssignmentCompatible( Byte.class, Object.class ) );
361    }
362
363    @Test
364    public void isAssignmentCompatibleByteWrapperTestBean()
365    {
366        assertFalse( isAssignmentCompatible( Byte.class, TestBean.class ) );
367    }
368
369    @Test
370    public void isAssignmentCompatibleShortPrimitiveBoolean()
371    {
372        assertFalse( isAssignmentCompatible( short.class, Boolean.class ) );
373        assertFalse( isAssignmentCompatible( short.class, Boolean.TYPE ) );
374        assertFalse( isAssignmentCompatible( short.class, Boolean.class ) );
375    }
376
377    @Test
378    public void isAssignmentCompatibleShortPrimitiveByte()
379    {
380        assertFalse( isAssignmentCompatible( short.class, Byte.class ) );
381        assertFalse( isAssignmentCompatible( short.class, Byte.TYPE ) );
382        assertFalse( isAssignmentCompatible( short.class, byte.class ) );
383    }
384
385    @Test
386    public void isAssignmentCompatibleShortPrimitiveShort()
387    {
388        assertTrue( isAssignmentCompatible( short.class, Short.class ) );
389        assertTrue( isAssignmentCompatible( short.class, Short.TYPE ) );
390        assertTrue( isAssignmentCompatible( short.class, short.class ) );
391    }
392
393    @Test
394    public void isAssignmentCompatibleShortPrimitiveInteger()
395    {
396        assertFalse( isAssignmentCompatible( short.class, Integer.class ) );
397        assertFalse( isAssignmentCompatible( short.class, Integer.TYPE ) );
398        assertFalse( isAssignmentCompatible( short.class, int.class ) );
399    }
400
401    @Test
402    public void isAssignmentCompatibleShortPrimitiveLong()
403    {
404        assertFalse( isAssignmentCompatible( short.class, Long.class ) );
405        assertFalse( isAssignmentCompatible( short.class, Long.TYPE ) );
406        assertFalse( isAssignmentCompatible( short.class, long.class ) );
407    }
408
409    @Test
410    public void isAssignmentCompatibleShortPrimitiveFloat()
411    {
412        assertFalse( isAssignmentCompatible( short.class, Float.class ) );
413        assertFalse( isAssignmentCompatible( short.class, Float.TYPE ) );
414        assertFalse( isAssignmentCompatible( short.class, float.class ) );
415    }
416
417    @Test
418    public void isAssignmentCompatibleShortPrimitiveDouble()
419    {
420        assertFalse( isAssignmentCompatible( short.class, Double.class ) );
421        assertFalse( isAssignmentCompatible( short.class, Double.TYPE ) );
422        assertFalse( isAssignmentCompatible( short.class, double.class ) );
423    }
424
425    @Test
426    public void isAssignmentCompatibleShortPrimitiveCharacter()
427    {
428        assertFalse( isAssignmentCompatible( short.class, Character.class ) );
429        assertFalse( isAssignmentCompatible( short.class, Character.TYPE ) );
430        assertFalse( isAssignmentCompatible( short.class, char.class ) );
431    }
432
433    @Test
434    public void isAssignmentCompatibleShortPrimitiveString()
435    {
436        assertFalse( isAssignmentCompatible( short.class, String.class ) );
437    }
438
439    @Test
440    public void isAssignmentCompatibleShortPrimitiveObject()
441    {
442        assertFalse( isAssignmentCompatible( short.class, Object.class ) );
443    }
444
445    @Test
446    public void isAssignmentCompatibleShortPrimitiveTestBean()
447    {
448        assertFalse( isAssignmentCompatible( short.class, TestBean.class ) );
449    }
450
451    @Test
452    public void isAssignmentCompatibleShortWrapperBoolean()
453    {
454
455        assertFalse( isAssignmentCompatible( Short.class, Boolean.class ) );
456        assertFalse( isAssignmentCompatible( Short.class, boolean.class ) );
457        assertFalse( isAssignmentCompatible( Short.class, Boolean.TYPE ) );
458    }
459
460    @Test
461    public void isAssignmentCompatibleShortWrapperByte()
462    {
463        assertFalse( isAssignmentCompatible( Short.class, Byte.class ) );
464        assertFalse( isAssignmentCompatible( Short.class, Byte.TYPE ) );
465        assertFalse( isAssignmentCompatible( Short.class, byte.class ) );
466    }
467
468    @Test
469    public void isAssignmentCompatibleShortWrapperShort()
470    {
471        assertTrue( isAssignmentCompatible( Short.class, Short.class ) );
472        assertFalse( isAssignmentCompatible( Short.class, Short.TYPE ) );
473        assertFalse( isAssignmentCompatible( Short.class, short.class ) );
474    }
475
476    @Test
477    public void isAssignmentCompatibleShortWrapperInteger()
478    {
479        assertFalse( isAssignmentCompatible( Short.class, Integer.class ) );
480        assertFalse( isAssignmentCompatible( Short.class, Integer.TYPE ) );
481        assertFalse( isAssignmentCompatible( Short.class, int.class ) );
482    }
483
484    @Test
485    public void isAssignmentCompatibleShortWrapperLong()
486    {
487        assertFalse( isAssignmentCompatible( Short.class, Long.class ) );
488        assertFalse( isAssignmentCompatible( Short.class, Long.TYPE ) );
489        assertFalse( isAssignmentCompatible( Short.class, long.class ) );
490    }
491
492    @Test
493    public void isAssignmentCompatibleShortWrapperFloat()
494    {
495        assertFalse( isAssignmentCompatible( Short.class, Float.class ) );
496        assertFalse( isAssignmentCompatible( Short.class, Float.TYPE ) );
497        assertFalse( isAssignmentCompatible( Short.class, float.class ) );
498    }
499
500    @Test
501    public void isAssignmentCompatibleShortWrapperDouble()
502    {
503        assertFalse( isAssignmentCompatible( Short.class, Double.class ) );
504        assertFalse( isAssignmentCompatible( Short.class, Double.TYPE ) );
505        assertFalse( isAssignmentCompatible( Short.class, double.class ) );
506    }
507
508    @Test
509    public void isAssignmentCompatibleShortWrapperCharacter()
510    {
511        assertFalse( isAssignmentCompatible( Short.class, Character.class ) );
512        assertFalse( isAssignmentCompatible( Short.class, Character.TYPE ) );
513        assertFalse( isAssignmentCompatible( Short.class, char.class ) );
514    }
515
516    @Test
517    public void isAssignmentCompatibleShortWrapperString()
518    {
519        assertFalse( isAssignmentCompatible( Short.class, String.class ) );
520    }
521
522    @Test
523    public void isAssignmentCompatibleShortWrapperObject()
524    {
525        assertFalse( isAssignmentCompatible( Short.class, Object.class ) );
526    }
527
528    @Test
529    public void isAssignmentCompatibleShortWrapperTestBean()
530    {
531        assertFalse( isAssignmentCompatible( Short.class, TestBean.class ) );
532    }
533
534    @Test
535    public void isAssignmentCompatibleIntegerPrimitiveBoolean()
536    {
537        assertFalse( isAssignmentCompatible( int.class, Boolean.class ) );
538        assertFalse( isAssignmentCompatible( int.class, Boolean.TYPE ) );
539        assertFalse( isAssignmentCompatible( int.class, Boolean.class ) );
540    }
541
542    @Test
543    public void isAssignmentCompatibleIntegerPrimitiveByte()
544    {
545        assertFalse( isAssignmentCompatible( int.class, Byte.class ) );
546        assertFalse( isAssignmentCompatible( int.class, Byte.TYPE ) );
547        assertFalse( isAssignmentCompatible( int.class, byte.class ) );
548    }
549
550    @Test
551    public void isAssignmentCompatibleIntegerPrimitiveShort()
552    {
553        assertFalse( isAssignmentCompatible( int.class, Short.class ) );
554        assertFalse( isAssignmentCompatible( int.class, Short.TYPE ) );
555        assertFalse( isAssignmentCompatible( int.class, short.class ) );
556    }
557
558    @Test
559    public void isAssignmentCompatibleIntegerPrimitiveInteger()
560    {
561        assertTrue( isAssignmentCompatible( int.class, Integer.class ) );
562        assertTrue( isAssignmentCompatible( int.class, Integer.TYPE ) );
563        assertTrue( isAssignmentCompatible( int.class, int.class ) );
564    }
565
566    @Test
567    public void isAssignmentCompatibleIntegerPrimitiveLong()
568    {
569        assertFalse( isAssignmentCompatible( int.class, Long.class ) );
570        assertFalse( isAssignmentCompatible( int.class, Long.TYPE ) );
571        assertFalse( isAssignmentCompatible( int.class, long.class ) );
572    }
573
574    @Test
575    public void isAssignmentCompatibleIntegerPrimitiveFloat()
576    {
577        assertFalse( isAssignmentCompatible( int.class, Float.class ) );
578        assertFalse( isAssignmentCompatible( int.class, Float.TYPE ) );
579        assertFalse( isAssignmentCompatible( int.class, float.class ) );
580    }
581
582    @Test
583    public void isAssignmentCompatibleIntegerPrimitiveDouble()
584    {
585        assertFalse( isAssignmentCompatible( int.class, Double.class ) );
586        assertFalse( isAssignmentCompatible( int.class, Double.TYPE ) );
587        assertFalse( isAssignmentCompatible( int.class, double.class ) );
588    }
589
590    @Test
591    public void isAssignmentCompatibleIntegerPrimitiveCharacter()
592    {
593        assertFalse( isAssignmentCompatible( int.class, Character.class ) );
594        assertFalse( isAssignmentCompatible( int.class, Character.TYPE ) );
595        assertFalse( isAssignmentCompatible( int.class, char.class ) );
596    }
597
598    @Test
599    public void isAssignmentCompatibleIntegerPrimitiveString()
600    {
601        assertFalse( isAssignmentCompatible( int.class, String.class ) );
602    }
603
604    @Test
605    public void isAssignmentCompatibleIntegerPrimitiveObject()
606    {
607        assertFalse( isAssignmentCompatible( int.class, Object.class ) );
608    }
609
610    @Test
611    public void isAssignmentCompatibleIntegerPrimitiveTestBean()
612    {
613        assertFalse( isAssignmentCompatible( int.class, TestBean.class ) );
614    }
615
616    @Test
617    public void isAssignmentCompatibleIntegerWrapperBoolean()
618    {
619
620        assertFalse( isAssignmentCompatible( Integer.class, Boolean.class ) );
621        assertFalse( isAssignmentCompatible( Integer.class, boolean.class ) );
622        assertFalse( isAssignmentCompatible( Integer.class, Boolean.TYPE ) );
623    }
624
625    @Test
626    public void isAssignmentCompatibleIntegerWrapperByte()
627    {
628        assertFalse( isAssignmentCompatible( Integer.class, Byte.class ) );
629        assertFalse( isAssignmentCompatible( Integer.class, Byte.TYPE ) );
630        assertFalse( isAssignmentCompatible( Integer.class, byte.class ) );
631    }
632
633    @Test
634    public void isAssignmentCompatibleIntegerWrapperShort()
635    {
636        assertFalse( isAssignmentCompatible( Integer.class, Short.class ) );
637        assertFalse( isAssignmentCompatible( Integer.class, Short.TYPE ) );
638        assertFalse( isAssignmentCompatible( Integer.class, short.class ) );
639    }
640
641    @Test
642    public void isAssignmentCompatibleIntegerWrapperInteger()
643    {
644        assertTrue( isAssignmentCompatible( Integer.class, Integer.class ) );
645        assertFalse( isAssignmentCompatible( Integer.class, Integer.TYPE ) );
646        assertFalse( isAssignmentCompatible( Integer.class, int.class ) );
647    }
648
649    @Test
650    public void isAssignmentCompatibleIntegerWrapperLong()
651    {
652        assertFalse( isAssignmentCompatible( Integer.class, Long.class ) );
653        assertFalse( isAssignmentCompatible( Integer.class, Long.TYPE ) );
654        assertFalse( isAssignmentCompatible( Integer.class, long.class ) );
655    }
656
657    @Test
658    public void isAssignmentCompatibleIntegerWrapperFloat()
659    {
660        assertFalse( isAssignmentCompatible( Integer.class, Float.class ) );
661        assertFalse( isAssignmentCompatible( Integer.class, Float.TYPE ) );
662        assertFalse( isAssignmentCompatible( Integer.class, float.class ) );
663    }
664
665    @Test
666    public void isAssignmentCompatibleIntegerWrapperDouble()
667    {
668        assertFalse( isAssignmentCompatible( Integer.class, Double.class ) );
669        assertFalse( isAssignmentCompatible( Integer.class, Double.TYPE ) );
670        assertFalse( isAssignmentCompatible( Integer.class, double.class ) );
671    }
672
673    @Test
674    public void isAssignmentCompatibleIntegerWrapperCharacter()
675    {
676        assertFalse( isAssignmentCompatible( Integer.class, Character.class ) );
677        assertFalse( isAssignmentCompatible( Integer.class, Character.TYPE ) );
678        assertFalse( isAssignmentCompatible( Integer.class, char.class ) );
679    }
680
681    @Test
682    public void isAssignmentCompatibleIntegerWrapperString()
683    {
684        assertFalse( isAssignmentCompatible( Integer.class, String.class ) );
685    }
686
687    @Test
688    public void isAssignmentCompatibleIntegerWrapperObject()
689    {
690        assertFalse( isAssignmentCompatible( Integer.class, Object.class ) );
691    }
692
693    @Test
694    public void isAssignmentCompatibleIntegerWrapperTestBean()
695    {
696        assertFalse( isAssignmentCompatible( Integer.class, TestBean.class ) );
697    }
698
699    @Test
700    public void isAssignmentCompatibleLongPrimitiveBoolean()
701    {
702        assertFalse( isAssignmentCompatible( long.class, Boolean.class ) );
703        assertFalse( isAssignmentCompatible( long.class, Boolean.TYPE ) );
704        assertFalse( isAssignmentCompatible( long.class, Boolean.class ) );
705    }
706
707    @Test
708    public void isAssignmentCompatibleLongPrimitiveByte()
709    {
710        assertFalse( isAssignmentCompatible( long.class, Byte.class ) );
711        assertFalse( isAssignmentCompatible( long.class, Byte.TYPE ) );
712        assertFalse( isAssignmentCompatible( long.class, byte.class ) );
713    }
714
715    @Test
716    public void isAssignmentCompatibleLongPrimitiveShort()
717    {
718        assertFalse( isAssignmentCompatible( long.class, Short.class ) );
719        assertFalse( isAssignmentCompatible( long.class, Short.TYPE ) );
720        assertFalse( isAssignmentCompatible( long.class, short.class ) );
721    }
722
723    @Test
724    public void isAssignmentCompatibleLongPrimitiveInteger()
725    {
726        assertFalse( isAssignmentCompatible( long.class, Integer.class ) );
727        assertFalse( isAssignmentCompatible( long.class, Integer.TYPE ) );
728        assertFalse( isAssignmentCompatible( long.class, int.class ) );
729    }
730
731    @Test
732    public void isAssignmentCompatibleLongPrimitiveLong()
733    {
734        assertTrue( isAssignmentCompatible( long.class, Long.class ) );
735        assertTrue( isAssignmentCompatible( long.class, Long.TYPE ) );
736        assertTrue( isAssignmentCompatible( long.class, long.class ) );
737    }
738
739    @Test
740    public void isAssignmentCompatibleLongPrimitiveFloat()
741    {
742        assertFalse( isAssignmentCompatible( long.class, Float.class ) );
743        assertFalse( isAssignmentCompatible( long.class, Float.TYPE ) );
744        assertFalse( isAssignmentCompatible( long.class, float.class ) );
745    }
746
747    @Test
748    public void isAssignmentCompatibleLongPrimitiveDouble()
749    {
750        assertFalse( isAssignmentCompatible( long.class, Double.class ) );
751        assertFalse( isAssignmentCompatible( long.class, Double.TYPE ) );
752        assertFalse( isAssignmentCompatible( long.class, double.class ) );
753    }
754
755    @Test
756    public void isAssignmentCompatibleLongPrimitiveCharacter()
757    {
758        assertFalse( isAssignmentCompatible( long.class, Character.class ) );
759        assertFalse( isAssignmentCompatible( long.class, Character.TYPE ) );
760        assertFalse( isAssignmentCompatible( long.class, char.class ) );
761    }
762
763    @Test
764    public void isAssignmentCompatibleLongPrimitiveString()
765    {
766        assertFalse( isAssignmentCompatible( long.class, String.class ) );
767    }
768
769    @Test
770    public void isAssignmentCompatibleLongPrimitiveObject()
771    {
772        assertFalse( isAssignmentCompatible( long.class, Object.class ) );
773    }
774
775    @Test
776    public void isAssignmentCompatibleLongPrimitiveTestBean()
777    {
778        assertFalse( isAssignmentCompatible( long.class, TestBean.class ) );
779    }
780
781    @Test
782    public void isAssignmentCompatibleLongWrapperBoolean()
783    {
784
785        assertFalse( isAssignmentCompatible( Long.class, Boolean.class ) );
786        assertFalse( isAssignmentCompatible( Long.class, boolean.class ) );
787        assertFalse( isAssignmentCompatible( Long.class, Boolean.TYPE ) );
788    }
789
790    @Test
791    public void isAssignmentCompatibleLongWrapperByte()
792    {
793        assertFalse( isAssignmentCompatible( Long.class, Byte.class ) );
794        assertFalse( isAssignmentCompatible( Long.class, Byte.TYPE ) );
795        assertFalse( isAssignmentCompatible( Long.class, byte.class ) );
796    }
797
798    @Test
799    public void isAssignmentCompatibleLongWrapperShort()
800    {
801        assertFalse( isAssignmentCompatible( Long.class, Short.class ) );
802        assertFalse( isAssignmentCompatible( Long.class, Short.TYPE ) );
803        assertFalse( isAssignmentCompatible( Long.class, short.class ) );
804    }
805
806    @Test
807    public void isAssignmentCompatibleLongWrapperInteger()
808    {
809        assertFalse( isAssignmentCompatible( Long.class, Integer.class ) );
810        assertFalse( isAssignmentCompatible( Long.class, Integer.TYPE ) );
811        assertFalse( isAssignmentCompatible( Long.class, int.class ) );
812    }
813
814    @Test
815    public void isAssignmentCompatibleLongWrapperLong()
816    {
817        assertTrue( isAssignmentCompatible( Long.class, Long.class ) );
818        assertFalse( isAssignmentCompatible( Long.class, Long.TYPE ) );
819        assertFalse( isAssignmentCompatible( Long.class, long.class ) );
820    }
821
822    @Test
823    public void isAssignmentCompatibleLongWrapperFloat()
824    {
825        assertFalse( isAssignmentCompatible( Long.class, Float.class ) );
826        assertFalse( isAssignmentCompatible( Long.class, Float.TYPE ) );
827        assertFalse( isAssignmentCompatible( Long.class, float.class ) );
828    }
829
830    @Test
831    public void isAssignmentCompatibleLongWrapperDouble()
832    {
833        assertFalse( isAssignmentCompatible( Long.class, Double.class ) );
834        assertFalse( isAssignmentCompatible( Long.class, Double.TYPE ) );
835        assertFalse( isAssignmentCompatible( Long.class, double.class ) );
836    }
837
838    @Test
839    public void isAssignmentCompatibleLongWrapperCharacter()
840    {
841        assertFalse( isAssignmentCompatible( Long.class, Character.class ) );
842        assertFalse( isAssignmentCompatible( Long.class, Character.TYPE ) );
843        assertFalse( isAssignmentCompatible( Long.class, char.class ) );
844    }
845
846    @Test
847    public void isAssignmentCompatibleLongWrapperString()
848    {
849        assertFalse( isAssignmentCompatible( Long.class, String.class ) );
850    }
851
852    @Test
853    public void isAssignmentCompatibleLongWrapperObject()
854    {
855        assertFalse( isAssignmentCompatible( Long.class, Object.class ) );
856    }
857
858    @Test
859    public void isAssignmentCompatibleLongWrapperTestBean()
860    {
861        assertFalse( isAssignmentCompatible( Long.class, TestBean.class ) );
862    }
863
864    @Test
865    public void isAssignmentCompatibleFloatPrimitiveBoolean()
866    {
867        assertFalse( isAssignmentCompatible( float.class, Boolean.class ) );
868        assertFalse( isAssignmentCompatible( float.class, Boolean.TYPE ) );
869        assertFalse( isAssignmentCompatible( float.class, Boolean.class ) );
870    }
871
872    @Test
873    public void isAssignmentCompatibleFloatPrimitiveByte()
874    {
875        assertFalse( isAssignmentCompatible( float.class, Byte.class ) );
876        assertFalse( isAssignmentCompatible( float.class, Byte.TYPE ) );
877        assertFalse( isAssignmentCompatible( float.class, byte.class ) );
878    }
879
880    @Test
881    public void isAssignmentCompatibleFloatPrimitiveShort()
882    {
883        assertFalse( isAssignmentCompatible( float.class, Short.class ) );
884        assertFalse( isAssignmentCompatible( float.class, Short.TYPE ) );
885        assertFalse( isAssignmentCompatible( float.class, short.class ) );
886    }
887
888    @Test
889    public void isAssignmentCompatibleFloatPrimitiveInteger()
890    {
891        assertFalse( isAssignmentCompatible( float.class, Integer.class ) );
892        assertFalse( isAssignmentCompatible( float.class, Integer.TYPE ) );
893        assertFalse( isAssignmentCompatible( float.class, int.class ) );
894    }
895
896    @Test
897    public void isAssignmentCompatibleFloatPrimitiveLong()
898    {
899        assertFalse( isAssignmentCompatible( float.class, Long.class ) );
900        assertFalse( isAssignmentCompatible( float.class, Long.TYPE ) );
901        assertFalse( isAssignmentCompatible( float.class, long.class ) );
902    }
903
904    @Test
905    public void isAssignmentCompatibleFloatPrimitiveFloat()
906    {
907        assertTrue( isAssignmentCompatible( float.class, Float.class ) );
908        assertTrue( isAssignmentCompatible( float.class, Float.TYPE ) );
909        assertTrue( isAssignmentCompatible( float.class, float.class ) );
910    }
911
912    @Test
913    public void isAssignmentCompatibleFloatPrimitiveDouble()
914    {
915        assertFalse( isAssignmentCompatible( float.class, Double.class ) );
916        assertFalse( isAssignmentCompatible( float.class, Double.TYPE ) );
917        assertFalse( isAssignmentCompatible( float.class, double.class ) );
918    }
919
920    @Test
921    public void isAssignmentCompatibleFloatPrimitiveCharacter()
922    {
923        assertFalse( isAssignmentCompatible( float.class, Character.class ) );
924        assertFalse( isAssignmentCompatible( float.class, Character.TYPE ) );
925        assertFalse( isAssignmentCompatible( float.class, char.class ) );
926    }
927
928    @Test
929    public void isAssignmentCompatibleFloatPrimitiveString()
930    {
931        assertFalse( isAssignmentCompatible( float.class, String.class ) );
932    }
933
934    @Test
935    public void isAssignmentCompatibleFloatPrimitiveObject()
936    {
937        assertFalse( isAssignmentCompatible( float.class, Object.class ) );
938    }
939
940    @Test
941    public void isAssignmentCompatibleFloatPrimitiveTestBean()
942    {
943        assertFalse( isAssignmentCompatible( float.class, TestBean.class ) );
944    }
945
946    @Test
947    public void isAssignmentCompatibleFloatWrapperBoolean()
948    {
949
950        assertFalse( isAssignmentCompatible( Float.class, Boolean.class ) );
951        assertFalse( isAssignmentCompatible( Float.class, boolean.class ) );
952        assertFalse( isAssignmentCompatible( Float.class, Boolean.TYPE ) );
953    }
954
955    @Test
956    public void isAssignmentCompatibleFloatWrapperByte()
957    {
958        assertFalse( isAssignmentCompatible( Float.class, Byte.class ) );
959        assertFalse( isAssignmentCompatible( Float.class, Byte.TYPE ) );
960        assertFalse( isAssignmentCompatible( Float.class, byte.class ) );
961    }
962
963    @Test
964    public void isAssignmentCompatibleFloatWrapperShort()
965    {
966        assertFalse( isAssignmentCompatible( Float.class, Short.class ) );
967        assertFalse( isAssignmentCompatible( Float.class, Short.TYPE ) );
968        assertFalse( isAssignmentCompatible( Float.class, short.class ) );
969    }
970
971    @Test
972    public void isAssignmentCompatibleFloatWrapperInteger()
973    {
974        assertFalse( isAssignmentCompatible( Float.class, Integer.class ) );
975        assertFalse( isAssignmentCompatible( Float.class, Integer.TYPE ) );
976        assertFalse( isAssignmentCompatible( Float.class, int.class ) );
977    }
978
979    @Test
980    public void isAssignmentCompatibleFloatWrapperLong()
981    {
982        assertFalse( isAssignmentCompatible( Float.class, Long.class ) );
983        assertFalse( isAssignmentCompatible( Float.class, Long.TYPE ) );
984        assertFalse( isAssignmentCompatible( Float.class, long.class ) );
985    }
986
987    @Test
988    public void isAssignmentCompatibleFloatWrapperFloat()
989    {
990        assertTrue( isAssignmentCompatible( Float.class, Float.class ) );
991        assertFalse( isAssignmentCompatible( Float.class, Float.TYPE ) );
992        assertFalse( isAssignmentCompatible( Float.class, float.class ) );
993    }
994
995    @Test
996    public void isAssignmentCompatibleFloatWrapperDouble()
997    {
998        assertFalse( isAssignmentCompatible( Float.class, Double.class ) );
999        assertFalse( isAssignmentCompatible( Float.class, Double.TYPE ) );
1000        assertFalse( isAssignmentCompatible( Float.class, double.class ) );
1001    }
1002
1003    @Test
1004    public void isAssignmentCompatibleFloatWrapperCharacter()
1005    {
1006        assertFalse( isAssignmentCompatible( Float.class, Character.class ) );
1007        assertFalse( isAssignmentCompatible( Float.class, Character.TYPE ) );
1008        assertFalse( isAssignmentCompatible( Float.class, char.class ) );
1009    }
1010
1011    @Test
1012    public void isAssignmentCompatibleFloatWrapperString()
1013    {
1014        assertFalse( isAssignmentCompatible( Float.class, String.class ) );
1015    }
1016
1017    @Test
1018    public void isAssignmentCompatibleFloatWrapperObject()
1019    {
1020        assertFalse( isAssignmentCompatible( Float.class, Object.class ) );
1021    }
1022
1023    @Test
1024    public void isAssignmentCompatibleFloatWrapperTestBean()
1025    {
1026        assertFalse( isAssignmentCompatible( Float.class, TestBean.class ) );
1027    }
1028
1029    @Test
1030    public void isAssignmentCompatibleDoublePrimitiveBoolean()
1031    {
1032        assertFalse( isAssignmentCompatible( double.class, Boolean.class ) );
1033        assertFalse( isAssignmentCompatible( double.class, Boolean.TYPE ) );
1034        assertFalse( isAssignmentCompatible( double.class, Boolean.class ) );
1035    }
1036
1037    @Test
1038    public void isAssignmentCompatibleDoublePrimitiveByte()
1039    {
1040        assertFalse( isAssignmentCompatible( double.class, Byte.class ) );
1041        assertFalse( isAssignmentCompatible( double.class, Byte.TYPE ) );
1042        assertFalse( isAssignmentCompatible( double.class, byte.class ) );
1043    }
1044
1045    @Test
1046    public void isAssignmentCompatibleDoublePrimitiveShort()
1047    {
1048        assertFalse( isAssignmentCompatible( double.class, Short.class ) );
1049        assertFalse( isAssignmentCompatible( double.class, Short.TYPE ) );
1050        assertFalse( isAssignmentCompatible( double.class, short.class ) );
1051    }
1052
1053    @Test
1054    public void isAssignmentCompatibleDoublePrimitiveInteger()
1055    {
1056        assertFalse( isAssignmentCompatible( double.class, Integer.class ) );
1057        assertFalse( isAssignmentCompatible( double.class, Integer.TYPE ) );
1058        assertFalse( isAssignmentCompatible( double.class, int.class ) );
1059    }
1060
1061    @Test
1062    public void isAssignmentCompatibleDoublePrimitiveLong()
1063    {
1064        assertFalse( isAssignmentCompatible( double.class, Long.class ) );
1065        assertFalse( isAssignmentCompatible( double.class, Long.TYPE ) );
1066        assertFalse( isAssignmentCompatible( double.class, long.class ) );
1067    }
1068
1069    @Test
1070    public void isAssignmentCompatibleDoublePrimitiveFloat()
1071    {
1072        assertFalse( isAssignmentCompatible( double.class, Float.class ) );
1073        assertFalse( isAssignmentCompatible( double.class, Float.TYPE ) );
1074        assertFalse( isAssignmentCompatible( double.class, float.class ) );
1075    }
1076
1077    @Test
1078    public void isAssignmentCompatibleDoublePrimitiveDouble()
1079    {
1080        assertTrue( isAssignmentCompatible( double.class, Double.class ) );
1081        assertTrue( isAssignmentCompatible( double.class, Double.TYPE ) );
1082        assertTrue( isAssignmentCompatible( double.class, double.class ) );
1083    }
1084
1085    @Test
1086    public void isAssignmentCompatibleDoublePrimitiveCharacter()
1087    {
1088        assertFalse( isAssignmentCompatible( double.class, Character.class ) );
1089        assertFalse( isAssignmentCompatible( double.class, Character.TYPE ) );
1090        assertFalse( isAssignmentCompatible( double.class, char.class ) );
1091    }
1092
1093    @Test
1094    public void isAssignmentCompatibleDoublePrimitiveString()
1095    {
1096        assertFalse( isAssignmentCompatible( double.class, String.class ) );
1097    }
1098
1099    @Test
1100    public void isAssignmentCompatibleDoublePrimitiveObject()
1101    {
1102        assertFalse( isAssignmentCompatible( double.class, Object.class ) );
1103    }
1104
1105    @Test
1106    public void isAssignmentCompatibleDoublePrimitiveTestBean()
1107    {
1108        assertFalse( isAssignmentCompatible( double.class, TestBean.class ) );
1109    }
1110
1111    @Test
1112    public void isAssignmentCompatibleDoubleWrapperBoolean()
1113    {
1114
1115        assertFalse( isAssignmentCompatible( Double.class, Boolean.class ) );
1116        assertFalse( isAssignmentCompatible( Double.class, boolean.class ) );
1117        assertFalse( isAssignmentCompatible( Double.class, Boolean.TYPE ) );
1118    }
1119
1120    @Test
1121    public void isAssignmentCompatibleDoubleWrapperByte()
1122    {
1123        assertFalse( isAssignmentCompatible( Double.class, Byte.class ) );
1124        assertFalse( isAssignmentCompatible( Double.class, Byte.TYPE ) );
1125        assertFalse( isAssignmentCompatible( Double.class, byte.class ) );
1126    }
1127
1128    @Test
1129    public void isAssignmentCompatibleDoubleWrapperShort()
1130    {
1131        assertFalse( isAssignmentCompatible( Double.class, Short.class ) );
1132        assertFalse( isAssignmentCompatible( Double.class, Short.TYPE ) );
1133        assertFalse( isAssignmentCompatible( Double.class, short.class ) );
1134    }
1135
1136    @Test
1137    public void isAssignmentCompatibleDoubleWrapperInteger()
1138    {
1139        assertFalse( isAssignmentCompatible( Double.class, Integer.class ) );
1140        assertFalse( isAssignmentCompatible( Double.class, Integer.TYPE ) );
1141        assertFalse( isAssignmentCompatible( Double.class, int.class ) );
1142    }
1143
1144    @Test
1145    public void isAssignmentCompatibleDoubleWrapperLong()
1146    {
1147        assertFalse( isAssignmentCompatible( Double.class, Long.class ) );
1148        assertFalse( isAssignmentCompatible( Double.class, Long.TYPE ) );
1149        assertFalse( isAssignmentCompatible( Double.class, long.class ) );
1150    }
1151
1152    @Test
1153    public void isAssignmentCompatibleDoubleWrapperFloat()
1154    {
1155        assertFalse( isAssignmentCompatible( Double.class, Float.class ) );
1156        assertFalse( isAssignmentCompatible( Double.class, Float.TYPE ) );
1157        assertFalse( isAssignmentCompatible( Double.class, float.class ) );
1158    }
1159
1160    @Test
1161    public void isAssignmentCompatibleDoubleWrapperDouble()
1162    {
1163        assertTrue( isAssignmentCompatible( Double.class, Double.class ) );
1164        assertFalse( isAssignmentCompatible( Double.class, Double.TYPE ) );
1165        assertFalse( isAssignmentCompatible( Double.class, double.class ) );
1166    }
1167
1168    @Test
1169    public void isAssignmentCompatibleDoubleWrapperCharacter()
1170    {
1171        assertFalse( isAssignmentCompatible( Double.class, Character.class ) );
1172        assertFalse( isAssignmentCompatible( Double.class, Character.TYPE ) );
1173        assertFalse( isAssignmentCompatible( Double.class, char.class ) );
1174    }
1175
1176    @Test
1177    public void isAssignmentCompatibleDoubleWrapperString()
1178    {
1179        assertFalse( isAssignmentCompatible( Double.class, String.class ) );
1180    }
1181
1182    @Test
1183    public void isAssignmentCompatibleDoubleWrapperObject()
1184    {
1185        assertFalse( isAssignmentCompatible( Double.class, Object.class ) );
1186    }
1187
1188    @Test
1189    public void isAssignmentCompatibleDoubleWrapperTestBean()
1190    {
1191        assertFalse( isAssignmentCompatible( Double.class, TestBean.class ) );
1192    }
1193
1194    @Test
1195    public void isAssignmentCompatibleCharacterPrimitiveBoolean()
1196    {
1197        assertFalse( isAssignmentCompatible( char.class, Boolean.class ) );
1198        assertFalse( isAssignmentCompatible( char.class, Boolean.TYPE ) );
1199        assertFalse( isAssignmentCompatible( char.class, Boolean.class ) );
1200    }
1201
1202    @Test
1203    public void isAssignmentCompatibleCharacterPrimitiveByte()
1204    {
1205        assertFalse( isAssignmentCompatible( char.class, Byte.class ) );
1206        assertFalse( isAssignmentCompatible( char.class, Byte.TYPE ) );
1207        assertFalse( isAssignmentCompatible( char.class, byte.class ) );
1208    }
1209
1210    @Test
1211    public void isAssignmentCompatibleCharacterPrimitiveShort()
1212    {
1213        assertFalse( isAssignmentCompatible( char.class, Short.class ) );
1214        assertFalse( isAssignmentCompatible( char.class, Short.TYPE ) );
1215        assertFalse( isAssignmentCompatible( char.class, short.class ) );
1216    }
1217
1218    @Test
1219    public void isAssignmentCompatibleCharacterPrimitiveInteger()
1220    {
1221        assertFalse( isAssignmentCompatible( char.class, Integer.class ) );
1222        assertFalse( isAssignmentCompatible( char.class, Integer.TYPE ) );
1223        assertFalse( isAssignmentCompatible( char.class, int.class ) );
1224    }
1225
1226    @Test
1227    public void isAssignmentCompatibleCharacterPrimitiveLong()
1228    {
1229        assertFalse( isAssignmentCompatible( char.class, Long.class ) );
1230        assertFalse( isAssignmentCompatible( char.class, Long.TYPE ) );
1231        assertFalse( isAssignmentCompatible( char.class, long.class ) );
1232    }
1233
1234    @Test
1235    public void isAssignmentCompatibleCharacterPrimitiveFloat()
1236    {
1237        assertFalse( isAssignmentCompatible( char.class, Float.class ) );
1238        assertFalse( isAssignmentCompatible( char.class, Float.TYPE ) );
1239        assertFalse( isAssignmentCompatible( char.class, float.class ) );
1240    }
1241
1242    @Test
1243    public void isAssignmentCompatibleCharacterPrimitiveDouble()
1244    {
1245        assertFalse( isAssignmentCompatible( char.class, Double.class ) );
1246        assertFalse( isAssignmentCompatible( char.class, Double.TYPE ) );
1247        assertFalse( isAssignmentCompatible( char.class, double.class ) );
1248    }
1249
1250    @Test
1251    public void isAssignmentCompatibleCharacterPrimitiveCharacter()
1252    {
1253        assertTrue( isAssignmentCompatible( char.class, Character.class ) );
1254        assertTrue( isAssignmentCompatible( char.class, Character.TYPE ) );
1255        assertTrue( isAssignmentCompatible( char.class, char.class ) );
1256    }
1257
1258    @Test
1259    public void isAssignmentCompatibleCharacterPrimitiveString()
1260    {
1261        assertFalse( isAssignmentCompatible( char.class, String.class ) );
1262    }
1263
1264    @Test
1265    public void isAssignmentCompatibleCharacterPrimitiveObject()
1266    {
1267        assertFalse( isAssignmentCompatible( char.class, Object.class ) );
1268    }
1269
1270    @Test
1271    public void isAssignmentCompatibleCharacterPrimitiveTestBean()
1272    {
1273        assertFalse( isAssignmentCompatible( char.class, TestBean.class ) );
1274    }
1275
1276    @Test
1277    public void isAssignmentCompatibleCharacterWrapperBoolean()
1278    {
1279
1280        assertFalse( isAssignmentCompatible( Character.class, Boolean.class ) );
1281        assertFalse( isAssignmentCompatible( Character.class, boolean.class ) );
1282        assertFalse( isAssignmentCompatible( Character.class, Boolean.TYPE ) );
1283    }
1284
1285    @Test
1286    public void isAssignmentCompatibleCharacterWrapperByte()
1287    {
1288        assertFalse( isAssignmentCompatible( Character.class, Byte.class ) );
1289        assertFalse( isAssignmentCompatible( Character.class, Byte.TYPE ) );
1290        assertFalse( isAssignmentCompatible( Character.class, byte.class ) );
1291    }
1292
1293    @Test
1294    public void isAssignmentCompatibleCharacterWrapperShort()
1295    {
1296        assertFalse( isAssignmentCompatible( Character.class, Short.class ) );
1297        assertFalse( isAssignmentCompatible( Character.class, Short.TYPE ) );
1298        assertFalse( isAssignmentCompatible( Character.class, short.class ) );
1299    }
1300
1301    @Test
1302    public void isAssignmentCompatibleCharacterWrapperInteger()
1303    {
1304        assertFalse( isAssignmentCompatible( Character.class, Integer.class ) );
1305        assertFalse( isAssignmentCompatible( Character.class, Integer.TYPE ) );
1306        assertFalse( isAssignmentCompatible( Character.class, int.class ) );
1307    }
1308
1309    @Test
1310    public void isAssignmentCompatibleCharacterWrapperLong()
1311    {
1312        assertFalse( isAssignmentCompatible( Character.class, Long.class ) );
1313        assertFalse( isAssignmentCompatible( Character.class, Long.TYPE ) );
1314        assertFalse( isAssignmentCompatible( Character.class, long.class ) );
1315    }
1316
1317    @Test
1318    public void isAssignmentCompatibleCharacterWrapperFloat()
1319    {
1320        assertFalse( isAssignmentCompatible( Character.class, Float.class ) );
1321        assertFalse( isAssignmentCompatible( Character.class, Float.TYPE ) );
1322        assertFalse( isAssignmentCompatible( Character.class, float.class ) );
1323    }
1324
1325    @Test
1326    public void isAssignmentCompatibleCharacterWrapperDouble()
1327    {
1328        assertFalse( isAssignmentCompatible( Character.class, Double.class ) );
1329        assertFalse( isAssignmentCompatible( Character.class, Double.TYPE ) );
1330        assertFalse( isAssignmentCompatible( Character.class, double.class ) );
1331    }
1332
1333    @Test
1334    public void isAssignmentCompatibleCharacterWrapperCharacter()
1335    {
1336        assertTrue( isAssignmentCompatible( Character.class, Character.class ) );
1337        assertFalse( isAssignmentCompatible( Character.class, Character.TYPE ) );
1338        assertFalse( isAssignmentCompatible( Character.class, char.class ) );
1339    }
1340
1341    @Test
1342    public void isAssignmentCompatibleCharacterWrapperString()
1343    {
1344        assertFalse( isAssignmentCompatible( Character.class, String.class ) );
1345    }
1346
1347    @Test
1348    public void isAssignmentCompatibleCharacterWrapperObject()
1349    {
1350        assertFalse( isAssignmentCompatible( Character.class, Object.class ) );
1351    }
1352
1353    @Test
1354    public void isAssignmentCompatibleCharacterWrapperTestBean()
1355    {
1356        assertFalse( isAssignmentCompatible( Character.class, TestBean.class ) );
1357    }
1358
1359    @Test
1360    public void isAssignmentCompatibleStringBoolean()
1361    {
1362
1363        assertFalse( isAssignmentCompatible( String.class, Boolean.class ) );
1364        assertFalse( isAssignmentCompatible( String.class, boolean.class ) );
1365        assertFalse( isAssignmentCompatible( String.class, Boolean.TYPE ) );
1366    }
1367
1368    @Test
1369    public void isAssignmentCompatibleStringByte()
1370    {
1371        assertFalse( isAssignmentCompatible( String.class, Byte.class ) );
1372        assertFalse( isAssignmentCompatible( String.class, Byte.TYPE ) );
1373        assertFalse( isAssignmentCompatible( String.class, byte.class ) );
1374    }
1375
1376    @Test
1377    public void isAssignmentCompatibleStringShort()
1378    {
1379        assertFalse( isAssignmentCompatible( String.class, Short.class ) );
1380        assertFalse( isAssignmentCompatible( String.class, Short.TYPE ) );
1381        assertFalse( isAssignmentCompatible( String.class, short.class ) );
1382    }
1383
1384    @Test
1385    public void isAssignmentCompatibleStringInteger()
1386    {
1387        assertFalse( isAssignmentCompatible( String.class, Integer.class ) );
1388        assertFalse( isAssignmentCompatible( String.class, Integer.TYPE ) );
1389        assertFalse( isAssignmentCompatible( String.class, int.class ) );
1390    }
1391
1392    @Test
1393    public void isAssignmentCompatibleStringLong()
1394    {
1395        assertFalse( isAssignmentCompatible( String.class, Long.class ) );
1396        assertFalse( isAssignmentCompatible( String.class, Long.TYPE ) );
1397        assertFalse( isAssignmentCompatible( String.class, long.class ) );
1398    }
1399
1400    @Test
1401    public void isAssignmentCompatibleStringFloat()
1402    {
1403        assertFalse( isAssignmentCompatible( String.class, Float.class ) );
1404        assertFalse( isAssignmentCompatible( String.class, Float.TYPE ) );
1405        assertFalse( isAssignmentCompatible( String.class, float.class ) );
1406    }
1407
1408    @Test
1409    public void isAssignmentCompatibleStringDouble()
1410    {
1411        assertFalse( isAssignmentCompatible( String.class, Double.class ) );
1412        assertFalse( isAssignmentCompatible( String.class, Double.TYPE ) );
1413        assertFalse( isAssignmentCompatible( String.class, double.class ) );
1414    }
1415
1416    @Test
1417    public void isAssignmentCompatibleStringCharacter()
1418    {
1419        assertFalse( isAssignmentCompatible( String.class, Character.class ) );
1420        assertFalse( isAssignmentCompatible( String.class, Character.TYPE ) );
1421        assertFalse( isAssignmentCompatible( String.class, char.class ) );
1422    }
1423
1424    @Test
1425    public void isAssignmentCompatibleStringString()
1426    {
1427        assertTrue( isAssignmentCompatible( String.class, String.class ) );
1428    }
1429
1430    @Test
1431    public void isAssignmentCompatibleStringObject()
1432    {
1433        assertFalse( isAssignmentCompatible( String.class, Object.class ) );
1434    }
1435
1436    @Test
1437    public void isAssignmentCompatibleStringTestBean()
1438    {
1439        assertFalse( isAssignmentCompatible( String.class, TestBean.class ) );
1440    }
1441
1442    @Test
1443    public void isAssignmentCompatibleObjectBoolean()
1444    {
1445
1446        assertTrue( isAssignmentCompatible( Object.class, Boolean.class ) );
1447        assertFalse( isAssignmentCompatible( Object.class, boolean.class ) );
1448        assertFalse( isAssignmentCompatible( Object.class, Boolean.TYPE ) );
1449    }
1450
1451    @Test
1452    public void isAssignmentCompatibleObjectByte()
1453    {
1454        assertTrue( isAssignmentCompatible( Object.class, Byte.class ) );
1455        assertFalse( isAssignmentCompatible( Object.class, Byte.TYPE ) );
1456        assertFalse( isAssignmentCompatible( Object.class, byte.class ) );
1457    }
1458
1459    @Test
1460    public void isAssignmentCompatibleObjectShort()
1461    {
1462        assertTrue( isAssignmentCompatible( Object.class, Short.class ) );
1463        assertFalse( isAssignmentCompatible( Object.class, Short.TYPE ) );
1464        assertFalse( isAssignmentCompatible( Object.class, short.class ) );
1465    }
1466
1467    @Test
1468    public void isAssignmentCompatibleObjectInteger()
1469    {
1470        assertTrue( isAssignmentCompatible( Object.class, Integer.class ) );
1471        assertFalse( isAssignmentCompatible( Object.class, Integer.TYPE ) );
1472        assertFalse( isAssignmentCompatible( Object.class, int.class ) );
1473    }
1474
1475    @Test
1476    public void isAssignmentCompatibleObjectLong()
1477    {
1478        assertTrue( isAssignmentCompatible( Object.class, Long.class ) );
1479        assertFalse( isAssignmentCompatible( Object.class, Long.TYPE ) );
1480        assertFalse( isAssignmentCompatible( Object.class, long.class ) );
1481    }
1482
1483    @Test
1484    public void isAssignmentCompatibleObjectFloat()
1485    {
1486        assertTrue( isAssignmentCompatible( Object.class, Float.class ) );
1487        assertFalse( isAssignmentCompatible( Object.class, Float.TYPE ) );
1488        assertFalse( isAssignmentCompatible( Object.class, float.class ) );
1489    }
1490
1491    @Test
1492    public void isAssignmentCompatibleObjectDouble()
1493    {
1494        assertTrue( isAssignmentCompatible( Object.class, Double.class ) );
1495        assertFalse( isAssignmentCompatible( Object.class, Double.TYPE ) );
1496        assertFalse( isAssignmentCompatible( Object.class, double.class ) );
1497    }
1498
1499    @Test
1500    public void isAssignmentCompatibleObjectCharacter()
1501    {
1502        assertTrue( isAssignmentCompatible( Object.class, Character.class ) );
1503        assertFalse( isAssignmentCompatible( Object.class, Character.TYPE ) );
1504        assertFalse( isAssignmentCompatible( Object.class, char.class ) );
1505    }
1506
1507    @Test
1508    public void isAssignmentCompatibleObjectString()
1509    {
1510        assertTrue( isAssignmentCompatible( Object.class, String.class ) );
1511    }
1512
1513    @Test
1514    public void isAssignmentCompatibleObjectObject()
1515    {
1516        assertTrue( isAssignmentCompatible( Object.class, Object.class ) );
1517    }
1518
1519    @Test
1520    public void isAssignmentCompatibleObjectTestBean()
1521    {
1522        assertTrue( isAssignmentCompatible( Object.class, TestBean.class ) );
1523    }
1524
1525    @Test
1526    public void isAssignmentCompatibleTestBeanBoolean()
1527    {
1528
1529        assertFalse( isAssignmentCompatible( TestBean.class, Boolean.class ) );
1530        assertFalse( isAssignmentCompatible( TestBean.class, boolean.class ) );
1531        assertFalse( isAssignmentCompatible( TestBean.class, Boolean.TYPE ) );
1532    }
1533
1534    @Test
1535    public void isAssignmentCompatibleTestBeanByte()
1536    {
1537        assertFalse( isAssignmentCompatible( TestBean.class, Byte.class ) );
1538        assertFalse( isAssignmentCompatible( TestBean.class, Byte.TYPE ) );
1539        assertFalse( isAssignmentCompatible( TestBean.class, byte.class ) );
1540    }
1541
1542    @Test
1543    public void isAssignmentCompatibleTestBeanShort()
1544    {
1545        assertFalse( isAssignmentCompatible( TestBean.class, Short.class ) );
1546        assertFalse( isAssignmentCompatible( TestBean.class, Short.TYPE ) );
1547        assertFalse( isAssignmentCompatible( TestBean.class, short.class ) );
1548    }
1549
1550    @Test
1551    public void isAssignmentCompatibleTestBeanInteger()
1552    {
1553        assertFalse( isAssignmentCompatible( TestBean.class, Integer.class ) );
1554        assertFalse( isAssignmentCompatible( TestBean.class, Integer.TYPE ) );
1555        assertFalse( isAssignmentCompatible( TestBean.class, int.class ) );
1556    }
1557
1558    @Test
1559    public void isAssignmentCompatibleTestBeanLong()
1560    {
1561        assertFalse( isAssignmentCompatible( TestBean.class, Long.class ) );
1562        assertFalse( isAssignmentCompatible( TestBean.class, Long.TYPE ) );
1563        assertFalse( isAssignmentCompatible( TestBean.class, long.class ) );
1564    }
1565
1566    @Test
1567    public void isAssignmentCompatibleTestBeanFloat()
1568    {
1569        assertFalse( isAssignmentCompatible( TestBean.class, Float.class ) );
1570        assertFalse( isAssignmentCompatible( TestBean.class, Float.TYPE ) );
1571        assertFalse( isAssignmentCompatible( TestBean.class, float.class ) );
1572    }
1573
1574    @Test
1575    public void isAssignmentCompatibleTestBeanDouble()
1576    {
1577        assertFalse( isAssignmentCompatible( TestBean.class, Double.class ) );
1578        assertFalse( isAssignmentCompatible( TestBean.class, Double.TYPE ) );
1579        assertFalse( isAssignmentCompatible( TestBean.class, double.class ) );
1580    }
1581
1582    @Test
1583    public void isAssignmentCompatibleTestBeanCharacter()
1584    {
1585        assertFalse( isAssignmentCompatible( TestBean.class, Character.class ) );
1586        assertFalse( isAssignmentCompatible( TestBean.class, Character.TYPE ) );
1587        assertFalse( isAssignmentCompatible( TestBean.class, char.class ) );
1588    }
1589
1590    @Test
1591    public void isAssignmentCompatibleTestBeanString()
1592    {
1593        assertFalse( isAssignmentCompatible( TestBean.class, String.class ) );
1594    }
1595
1596    @Test
1597    public void isAssignmentCompatibleTestBeanObject()
1598    {
1599        assertFalse( isAssignmentCompatible( TestBean.class, Object.class ) );
1600    }
1601
1602    @Test
1603    public void isAssignmentCompatibleTestBeanTestBean()
1604    {
1605        assertTrue( isAssignmentCompatible( TestBean.class, TestBean.class ) );
1606    }
1607
1608    @Test( expected = NullPointerException.class )
1609    public void isAssignmentCompatibleNullClass()
1610    {
1611        isAssignmentCompatible( null, getClass() );
1612    }
1613
1614    @Test( expected = NullPointerException.class )
1615    public void isAssignmentCompatibleClassNull()
1616    {
1617        isAssignmentCompatible( getClass(), null );
1618    }
1619
1620    @Test( expected = NullPointerException.class )
1621    public void isAssignmentCompatibleNullNull()
1622    {
1623        TypeUtils.isAssignmentCompatible( getClass(), null );
1624    }
1625
1626    @Test
1627    public void getPrimitiveWrapperPrimitives()
1628    {
1629        assertEquals( Boolean.class, getPrimitiveWrapper( boolean.class ) );
1630        assertEquals( Byte.class, getPrimitiveWrapper( byte.class ) );
1631        assertEquals( Short.class, getPrimitiveWrapper( short.class ) );
1632        assertEquals( Integer.class, getPrimitiveWrapper( int.class ) );
1633        assertEquals( Long.class, getPrimitiveWrapper( long.class ) );
1634        assertEquals( Float.class, getPrimitiveWrapper( float.class ) );
1635        assertEquals( Double.class, getPrimitiveWrapper( double.class ) );
1636        assertEquals( Character.class, getPrimitiveWrapper( char.class ) );
1637    }
1638
1639    @Test
1640    public void getPrimitiveWrapperWrappers()
1641    {
1642        assertNull( getPrimitiveWrapper( Boolean.class ) );
1643        assertNull( getPrimitiveWrapper( Byte.class ) );
1644        assertNull( getPrimitiveWrapper( Short.class ) );
1645        assertNull( getPrimitiveWrapper( Integer.class ) );
1646        assertNull( getPrimitiveWrapper( Long.class ) );
1647        assertNull( getPrimitiveWrapper( Float.class ) );
1648        assertNull( getPrimitiveWrapper( Double.class ) );
1649        assertNull( getPrimitiveWrapper( Character.class ) );
1650    }
1651
1652    @Test
1653    public void getPrimitiveWrapperString()
1654    {
1655        assertNull( getPrimitiveWrapper( String.class ) );
1656    }
1657
1658    @Test
1659    public void getPrimitiveWrapperObject()
1660    {
1661        assertNull( getPrimitiveWrapper( Object.class ) );
1662    }
1663
1664    @Test
1665    public void getPrimitiveWrapperTestBean()
1666    {
1667        assertNull( getPrimitiveWrapper( TestBean.class ) );
1668    }
1669
1670    @Test
1671    public void getPrimitiveWrapperNull()
1672    {
1673        assertNull( getPrimitiveWrapper( null ) );
1674    }
1675
1676    @Test
1677    public void getPrimitiveTypePrimitives()
1678    {
1679        assertEquals( boolean.class, getPrimitiveType( Boolean.class ) );
1680        assertEquals( byte.class, getPrimitiveType( Byte.class ) );
1681        assertEquals( short.class, getPrimitiveType( Short.class ) );
1682        assertEquals( int.class, getPrimitiveType( Integer.class ) );
1683        assertEquals( long.class, getPrimitiveType( Long.class ) );
1684        assertEquals( float.class, getPrimitiveType( Float.class ) );
1685        assertEquals( double.class, getPrimitiveType( Double.class ) );
1686        assertEquals( char.class, getPrimitiveType( Character.class ) );
1687    }
1688
1689    @Test
1690    public void getPrimitiveTypeWrappers()
1691    {
1692        assertNull( getPrimitiveType( boolean.class ) );
1693        assertNull( getPrimitiveType( byte.class ) );
1694        assertNull( getPrimitiveType( short.class ) );
1695        assertNull( getPrimitiveType( int.class ) );
1696        assertNull( getPrimitiveType( long.class ) );
1697        assertNull( getPrimitiveType( float.class ) );
1698        assertNull( getPrimitiveType( double.class ) );
1699        assertNull( getPrimitiveType( char.class ) );
1700    }
1701
1702    @Test
1703    public void getPrimitiveTypeString()
1704    {
1705        assertNull( getPrimitiveType( String.class ) );
1706    }
1707
1708    @Test
1709    public void getPrimitiveTypeObject()
1710    {
1711        assertNull( getPrimitiveType( Object.class ) );
1712    }
1713
1714    @Test
1715    public void getPrimitiveTypeTestBean()
1716    {
1717        assertNull( getPrimitiveType( TestBean.class ) );
1718    }
1719
1720    @Test
1721    public void getPrimitiveTypeNull()
1722    {
1723        assertNull( getPrimitiveType( null ) );
1724    }
1725
1726    @Test
1727    public void toNonPrimitiveClassBooleanPrimitive()
1728    {
1729        assertEquals( Boolean.class, toNonPrimitiveClass( boolean.class ) );
1730    }
1731
1732    @Test
1733    public void toNonPrimitiveClassBooleanWrapper()
1734    {
1735        Class<Boolean> booleanClass = Boolean.class;
1736        assertSame( booleanClass, toNonPrimitiveClass( booleanClass ) );
1737        assertEquals( booleanClass, toNonPrimitiveClass( boolean.class ) );
1738
1739    }
1740
1741    @Test
1742    public void toNonPrimitiveClassBytePrimitive()
1743    {
1744        assertEquals( Byte.class, toNonPrimitiveClass( byte.class ) );
1745    }
1746
1747    @Test
1748    public void toNonPrimitiveClassByteWrapper()
1749    {
1750        Class<Byte> byteClass = Byte.class;
1751        assertSame( byteClass, toNonPrimitiveClass( byteClass ) );
1752        assertEquals( byteClass, toNonPrimitiveClass( byte.class ) );
1753    }
1754
1755    @Test
1756    public void toNonPrimitiveClassShortPrimitive()
1757    {
1758        assertEquals( Short.class, toNonPrimitiveClass( short.class ) );
1759    }
1760
1761    @Test
1762    public void toNonPrimitiveClassShortWrapper()
1763    {
1764        Class<Short> shortClass = Short.class;
1765        assertSame( shortClass, toNonPrimitiveClass( shortClass ) );
1766        assertEquals( shortClass, toNonPrimitiveClass( short.class ) );
1767    }
1768
1769    @Test
1770    public void toNonPrimitiveClassIntegerPrimitive()
1771    {
1772        assertEquals( Integer.class, toNonPrimitiveClass( int.class ) );
1773    }
1774
1775    @Test
1776    public void toNonPrimitiveClassIntegerWrapper()
1777    {
1778        Class<Integer> integerClass = Integer.class;
1779        assertSame( integerClass, toNonPrimitiveClass( integerClass ) );
1780        assertEquals( integerClass, toNonPrimitiveClass( int.class ) );
1781    }
1782
1783    @Test
1784    public void toNonPrimitiveClassLongPrimitive()
1785    {
1786        assertEquals( Long.class, toNonPrimitiveClass( long.class ) );
1787    }
1788
1789    @Test
1790    public void toNonPrimitiveClassLongWrapper()
1791    {
1792        Class<Long> longClass = Long.class;
1793        assertSame( longClass, toNonPrimitiveClass( longClass ) );
1794        assertEquals( longClass, toNonPrimitiveClass( long.class ) );
1795    }
1796
1797    @Test
1798    public void toNonPrimitiveClassFloatPrimitive()
1799    {
1800        assertEquals( Float.class, toNonPrimitiveClass( float.class ) );
1801    }
1802
1803    @Test
1804    public void toNonPrimitiveClassFloatWrapper()
1805    {
1806        Class<Float> floatClass = Float.class;
1807        assertSame( floatClass, toNonPrimitiveClass( floatClass ) );
1808        assertEquals( floatClass, toNonPrimitiveClass( float.class ) );
1809    }
1810
1811    @Test
1812    public void toNonPrimitiveClassDoublePrimitive()
1813    {
1814        assertEquals( Double.class, toNonPrimitiveClass( double.class ) );
1815    }
1816
1817    @Test
1818    public void toNonPrimitiveClassDoubleWrapper()
1819    {
1820        Class<Double> doubleClass = Double.class;
1821        assertSame( doubleClass, toNonPrimitiveClass( doubleClass ) );
1822        assertEquals( doubleClass, toNonPrimitiveClass( double.class ) );
1823    }
1824
1825    @Test
1826    public void toNonPrimitiveClassCharacterPrimitive()
1827    {
1828        assertEquals( Character.class, toNonPrimitiveClass( char.class ) );
1829    }
1830
1831    @Test
1832    public void toNonPrimitiveClassCharacterWrapper()
1833    {
1834        Class<Character> characterClass = Character.class;
1835        assertSame( characterClass, toNonPrimitiveClass( characterClass ) );
1836        assertEquals( characterClass, toNonPrimitiveClass( char.class ) );
1837    }
1838
1839    @Test
1840    public void toNonPrimitiveClassString()
1841    {
1842        Class<String> stringClass = String.class;
1843        assertSame( stringClass, toNonPrimitiveClass( stringClass ) );
1844    }
1845
1846    @Test
1847    public void toNonPrimitiveClassObject()
1848    {
1849        Class<Object> objectClass = Object.class;
1850        assertSame( objectClass, toNonPrimitiveClass( objectClass ) );
1851    }
1852
1853    @Test
1854    public void toNonPrimitiveClassTestBean()
1855    {
1856        Class<TestBean> testBeanClass = TestBean.class;
1857        assertSame( testBeanClass, toNonPrimitiveClass( testBeanClass ) );
1858    }
1859
1860    @Test( expected = NullPointerException.class )
1861    public void toNonPrimitiveNull()
1862    {
1863        toNonPrimitiveClass( null );
1864    }
1865
1866    @Test
1867    public void checkTypesCompatibleWithCompatibleTypes()
1868    {
1869        Class<?>[] primitives = new Class<?>[] { boolean.class, byte.class, short.class,
1870                int.class, long.class, float.class, double.class, char.class };
1871
1872        Class<?>[] wrappers = new Class<?>[] { Boolean.class, Byte.class, Short.class,
1873            Integer.class, Long.class, Float.class, Double.class, Character.class };
1874
1875        assertTrue(checkTypesCompatible(primitives, wrappers));
1876    }
1877
1878    @Test
1879    public void checkTypesCompatibleWithIncompatibleTypes()
1880    {
1881        Class<?>[] primitives = new Class<?>[] { boolean.class, byte.class, short.class,
1882            int.class, long.class, float.class, double.class, char.class };
1883
1884        Class<?>[] objects = new Class<?>[] { String.class, Object.class, TestBean.class };
1885
1886        assertFalse(checkTypesCompatible(primitives, objects));
1887    }
1888
1889    @Test( expected = NullPointerException.class )
1890    public void checkTypesCompatibleArrayNull()
1891    {
1892        Class<?>[] types = new Class<?>[0];
1893        Class<?>[] otherTypes = null;
1894        checkTypesCompatible( types, otherTypes );
1895    }
1896
1897    @Test( expected = NullPointerException.class )
1898    public void checkTypesCompatibleNullArray()
1899    {
1900        Class<?>[] types = null;
1901        Class<?>[] otherTypes = new Class<?>[0];
1902        checkTypesCompatible( types, otherTypes );
1903    }
1904
1905    @Test( expected = NullPointerException.class )
1906    public void checkTypesCompatibleNullNull()
1907    {
1908        Class<?>[] types = null;
1909        Class<?>[] otherTypes = null;
1910        checkTypesCompatible( types, otherTypes );
1911    }
1912
1913    @Test( expected = NullPointerException.class )
1914    public void checkTypesCompatibleArrayWithNullReference()
1915    {
1916        Class<?>[] primitives = new Class<?>[] { boolean.class, null, short.class };
1917        Class<?>[] objects = new Class<?>[] { String.class, Object.class, TestBean.class };
1918
1919        checkTypesCompatible(primitives, objects);
1920    }
1921
1922}