5050import java .util .*;
5151import junit .framework .*;
5252import java .io .File ;
53+ import edu .rice .cs .plt .reflect .JavaVersion ;
5354
5455/**
5556 * Represents the data for an array class. There are two states of SymbolData. One is a continuation which
@@ -186,7 +187,7 @@ public int hashCode() {
186187 * -if assignTo is an array, then if this's element type is a primitive assignTo must have the same primitive element type and
187188 * if this's element type is a reference type, this's reference type must be assignable to assignTo's element type.
188189 */
189- public boolean isAssignableTo (SymbolData assignTo , String version ) {
190+ public boolean isAssignableTo (SymbolData assignTo , JavaVersion version ) {
190191 if (assignTo instanceof ArrayData ) {
191192 if (this .getElementType ().isPrimitiveType ()) {
192193 return this .getElementType () == ((ArrayData )assignTo ).getElementType ();
@@ -209,7 +210,7 @@ else if (((ArrayData)assignTo).getElementType().isPrimitiveType()) {
209210 * - castTo is an interface type that is Serializable or Clonable
210211 * - castTo is an array type then this and castTo must have element types that are either the same primitive type or (both reference types and this's element type must be castable to castTo's element type)
211212 */
212- public boolean isCastableTo (SymbolData castTo , String version ) {
213+ public boolean isCastableTo (SymbolData castTo , JavaVersion version ) {
213214 if (castTo instanceof ArrayData ) {
214215 if (this .getElementType ().isPrimitiveType ()) {
215216 return this .getElementType () == ((ArrayData )castTo ).getElementType ();
@@ -360,24 +361,24 @@ public void testSetMav() {
360361 public void testIsAssignableTo () {
361362 //if assignTo is a class, it must be java.lang.Object
362363 SymbolData object = llv .symbolTable .get ("java.lang.Object" );
363- assertTrue (_ad .isAssignableTo (object , "1.5" ));
364- assertTrue (_ad .isAssignableTo (object , "1.4" ));
364+ assertTrue (_ad .isAssignableTo (object , JavaVersion . JAVA_5 ));
365+ assertTrue (_ad .isAssignableTo (object , JavaVersion . JAVA_1_4 ));
365366
366367 SymbolData notObject = new SymbolData ("somethingRandom" );
367- assertFalse (_ad .isAssignableTo (notObject , "1.5" ));
368- assertFalse (_ad .isAssignableTo (notObject , "1.4" ));
368+ assertFalse (_ad .isAssignableTo (notObject , JavaVersion . JAVA_5 ));
369+ assertFalse (_ad .isAssignableTo (notObject , JavaVersion . JAVA_1_4 ));
369370
370371 //if assignTo is an interface, then it must be Serializable or Clonable
371372 SymbolData serializable = _ad .getInterfaces ().get (0 );
372373 SymbolData clonable = _ad .getInterfaces ().get (1 );
373374 notObject .setInterface (true );
374375
375- assertTrue (_ad .isAssignableTo (serializable , "1.5" ));
376- assertTrue (_ad .isAssignableTo (serializable , "1.4" ));
377- assertTrue (_ad .isAssignableTo (clonable , "1.5" ));
378- assertTrue (_ad .isAssignableTo (clonable , "1.4" ));
379- assertFalse (_ad .isAssignableTo (notObject , "1.5" ));
380- assertFalse (_ad .isAssignableTo (notObject , "1.4" ));
376+ assertTrue (_ad .isAssignableTo (serializable , JavaVersion . JAVA_5 ));
377+ assertTrue (_ad .isAssignableTo (serializable , JavaVersion . JAVA_1_4 ));
378+ assertTrue (_ad .isAssignableTo (clonable , JavaVersion . JAVA_5 ));
379+ assertTrue (_ad .isAssignableTo (clonable , JavaVersion . JAVA_1_4 ));
380+ assertFalse (_ad .isAssignableTo (notObject , JavaVersion . JAVA_5 ));
381+ assertFalse (_ad .isAssignableTo (notObject , JavaVersion . JAVA_1_4 ));
381382
382383 //if array is an array of primatives, then assign to must have primitive types that must match exactly
383384 _ad = new ArrayData (SymbolData .INT_TYPE , llv , si );
@@ -386,14 +387,14 @@ public void testIsAssignableTo() {
386387 ArrayData charArray = new ArrayData (SymbolData .CHAR_TYPE , llv , si );
387388 ArrayData objArray = new ArrayData (object , llv , si );
388389
389- assertTrue (_ad .isAssignableTo (intArray , "1.5" ));
390- assertTrue (_ad .isAssignableTo (intArray , "1.4" ));
391- assertFalse (_ad .isAssignableTo (charArray , "1.5" ));
392- assertFalse (_ad .isAssignableTo (charArray , "1.4" ));
393- assertFalse (_ad .isAssignableTo (doubleArray , "1.5" ));
394- assertFalse (_ad .isAssignableTo (doubleArray , "1.4" ));
395- assertFalse (_ad .isAssignableTo (objArray , "1.5" ));
396- assertFalse (_ad .isAssignableTo (objArray , "1.4" ));
390+ assertTrue (_ad .isAssignableTo (intArray , JavaVersion . JAVA_5 ));
391+ assertTrue (_ad .isAssignableTo (intArray , JavaVersion . JAVA_1_4 ));
392+ assertFalse (_ad .isAssignableTo (charArray , JavaVersion . JAVA_5 ));
393+ assertFalse (_ad .isAssignableTo (charArray , JavaVersion . JAVA_1_4 ));
394+ assertFalse (_ad .isAssignableTo (doubleArray , JavaVersion . JAVA_5 ));
395+ assertFalse (_ad .isAssignableTo (doubleArray , JavaVersion . JAVA_1_4 ));
396+ assertFalse (_ad .isAssignableTo (objArray , JavaVersion . JAVA_5 ));
397+ assertFalse (_ad .isAssignableTo (objArray , JavaVersion . JAVA_1_4 ));
397398
398399
399400 //if array is an array of reference types, then reference types must be assignable to element type
@@ -403,36 +404,36 @@ public void testIsAssignableTo() {
403404 notObject .setInterface (false );
404405 ArrayData randomArray = new ArrayData (notObject , llv , si );
405406
406- assertTrue (_ad .isAssignableTo (objArray , "1.5" ));
407- assertTrue (_ad .isAssignableTo (objArray , "1.4" ));
408- assertTrue (_ad .isAssignableTo (_ad , "1.5" ));
409- assertTrue (_ad .isAssignableTo (_ad , "1.4" ));
410- assertFalse (_ad .isAssignableTo (randomArray , "1.5" ));
411- assertFalse (_ad .isAssignableTo (randomArray , "1.4" ));
412- assertFalse (_ad .isAssignableTo (intArray , "1.5" ));
413- assertFalse (_ad .isAssignableTo (intArray , "1.4" ));
407+ assertTrue (_ad .isAssignableTo (objArray , JavaVersion . JAVA_5 ));
408+ assertTrue (_ad .isAssignableTo (objArray , JavaVersion . JAVA_1_4 ));
409+ assertTrue (_ad .isAssignableTo (_ad , JavaVersion . JAVA_5 ));
410+ assertTrue (_ad .isAssignableTo (_ad , JavaVersion . JAVA_1_4 ));
411+ assertFalse (_ad .isAssignableTo (randomArray , JavaVersion . JAVA_5 ));
412+ assertFalse (_ad .isAssignableTo (randomArray , JavaVersion . JAVA_1_4 ));
413+ assertFalse (_ad .isAssignableTo (intArray , JavaVersion . JAVA_5 ));
414+ assertFalse (_ad .isAssignableTo (intArray , JavaVersion . JAVA_1_4 ));
414415 }
415416
416417
417418 public void testIsCastableTo () {
418419 //if castTo is a class type and Object, should work
419420 SymbolData object = llv .symbolTable .get ("java.lang.Object" );
420- assertTrue (_ad .isCastableTo (object , "1.5" ));
421- assertTrue (_ad .isCastableTo (object , "1.4" ));
421+ assertTrue (_ad .isCastableTo (object , JavaVersion . JAVA_5 ));
422+ assertTrue (_ad .isCastableTo (object , JavaVersion . JAVA_1_4 ));
422423
423424 //if castTo is an interface, then it must be Serializable or Clonable
424425 SymbolData serializable = _ad .getInterfaces ().get (0 );
425426 SymbolData clonable = _ad .getInterfaces ().get (1 );
426427
427- assertTrue (_ad .isAssignableTo (serializable , "1.5" ));
428- assertTrue (_ad .isAssignableTo (serializable , "1.4" ));
429- assertTrue (_ad .isAssignableTo (clonable , "1.5" ));
430- assertTrue (_ad .isAssignableTo (clonable , "1.4" ));
428+ assertTrue (_ad .isAssignableTo (serializable , JavaVersion . JAVA_5 ));
429+ assertTrue (_ad .isAssignableTo (serializable , JavaVersion . JAVA_1_4 ));
430+ assertTrue (_ad .isAssignableTo (clonable , JavaVersion . JAVA_5 ));
431+ assertTrue (_ad .isAssignableTo (clonable , JavaVersion . JAVA_1_4 ));
431432
432433 //anything non-array type should break
433434 SymbolData notObject = new SymbolData ("somethingRandom" );
434- assertFalse (_ad .isCastableTo (notObject , "1.5" ));
435- assertFalse (_ad .isCastableTo (notObject , "1.4" ));
435+ assertFalse (_ad .isCastableTo (notObject , JavaVersion . JAVA_5 ));
436+ assertFalse (_ad .isCastableTo (notObject , JavaVersion . JAVA_1_4 ));
436437
437438
438439
@@ -445,14 +446,14 @@ public void testIsCastableTo() {
445446 ArrayData charArray = new ArrayData (SymbolData .CHAR_TYPE , llv , si );
446447 ArrayData objArray = new ArrayData (object , llv , si );
447448
448- assertTrue (_ad .isCastableTo (intArray , "1.5" ));
449- assertTrue (_ad .isCastableTo (intArray , "1.4" ));
450- assertFalse (_ad .isCastableTo (charArray , "1.5" ));
451- assertFalse (_ad .isCastableTo (charArray , "1.4" ));
452- assertFalse (_ad .isCastableTo (doubleArray , "1.5" ));
453- assertFalse (_ad .isCastableTo (doubleArray , "1.4" ));
454- assertFalse (_ad .isCastableTo (objArray , "1.5" ));
455- assertFalse (_ad .isCastableTo (objArray , "1.4" ));
449+ assertTrue (_ad .isCastableTo (intArray , JavaVersion . JAVA_5 ));
450+ assertTrue (_ad .isCastableTo (intArray , JavaVersion . JAVA_1_4 ));
451+ assertFalse (_ad .isCastableTo (charArray , JavaVersion . JAVA_5 ));
452+ assertFalse (_ad .isCastableTo (charArray , JavaVersion . JAVA_1_4 ));
453+ assertFalse (_ad .isCastableTo (doubleArray , JavaVersion . JAVA_5 ));
454+ assertFalse (_ad .isCastableTo (doubleArray , JavaVersion . JAVA_1_4 ));
455+ assertFalse (_ad .isCastableTo (objArray , JavaVersion . JAVA_5 ));
456+ assertFalse (_ad .isCastableTo (objArray , JavaVersion . JAVA_1_4 ));
456457
457458
458459 //if array is an array of reference types, then reference types must be castable to element type
@@ -462,20 +463,20 @@ public void testIsCastableTo() {
462463 notObject .setInterface (false );
463464 ArrayData randomArray = new ArrayData (notObject , llv , si );
464465
465- assertTrue (_ad .isCastableTo (objArray , "1.5" ));
466- assertTrue (_ad .isCastableTo (objArray , "1.4" ));
467- assertTrue (_ad .isCastableTo (_ad , "1.5" ));
468- assertTrue (_ad .isCastableTo (_ad , "1.4" ));
469- assertFalse (_ad .isCastableTo (randomArray , "1.5" ));
470- assertFalse (_ad .isCastableTo (randomArray , "1.4" ));
471- assertFalse (_ad .isCastableTo (intArray , "1.5" ));
472- assertFalse (_ad .isCastableTo (intArray , "1.4" ));
466+ assertTrue (_ad .isCastableTo (objArray , JavaVersion . JAVA_5 ));
467+ assertTrue (_ad .isCastableTo (objArray , JavaVersion . JAVA_1_4 ));
468+ assertTrue (_ad .isCastableTo (_ad , JavaVersion . JAVA_5 ));
469+ assertTrue (_ad .isCastableTo (_ad , JavaVersion . JAVA_1_4 ));
470+ assertFalse (_ad .isCastableTo (randomArray , JavaVersion . JAVA_5 ));
471+ assertFalse (_ad .isCastableTo (randomArray , JavaVersion . JAVA_1_4 ));
472+ assertFalse (_ad .isCastableTo (intArray , JavaVersion . JAVA_5 ));
473+ assertFalse (_ad .isCastableTo (intArray , JavaVersion . JAVA_1_4 ));
473474
474475 _ad = new ArrayData (object , llv , si );
475- assertTrue (_ad .isCastableTo (new ArrayData (integerSd , llv , si ), "1.5" ));
476- assertTrue (_ad .isCastableTo (new ArrayData (integerSd , llv , si ), "1.4" ));
477- assertFalse (_ad .isCastableTo (new ArrayData (SymbolData .INT_TYPE , llv , si ), "1.5" ));
478- assertFalse (_ad .isCastableTo (new ArrayData (SymbolData .INT_TYPE , llv , si ), "1.4" ));
476+ assertTrue (_ad .isCastableTo (new ArrayData (integerSd , llv , si ), JavaVersion . JAVA_5 ));
477+ assertTrue (_ad .isCastableTo (new ArrayData (integerSd , llv , si ), JavaVersion . JAVA_1_4 ));
478+ assertFalse (_ad .isCastableTo (new ArrayData (SymbolData .INT_TYPE , llv , si ), JavaVersion . JAVA_5 ));
479+ assertFalse (_ad .isCastableTo (new ArrayData (SymbolData .INT_TYPE , llv , si ), JavaVersion . JAVA_1_4 ));
479480 }
480481 }
481482}
0 commit comments