src/JavaClassReader2Tests.st
author hlopkmar
Thu, 12 May 2011 14:28:39 +0000
branchjk_new_structure
changeset 773 ff7dbe5581a3
parent 771 fb8026dda011
child 774 ac54730a2b74
permissions -rw-r--r--
cleaned tests class hierarchy, small fixes

"{ Package: 'stx:libjava' }"

AbstractJavaTestCase subclass:#JavaClassReader2Tests
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	category:'Languages-Java-Tests-RuntimeConstantPool'
!


!JavaClassReader2Tests methodsFor:'infrastructure'!

setUp
JavaClassReader useNewClassReader.

    "Created: / 10-05-2011 / 14:44:04 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
!

tearDown
    JavaClassReader useOldClassReader.

    "Created: / 10-05-2011 / 14:44:12 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
! !

!JavaClassReader2Tests methodsFor:'tests'!

testJavaInitializationWithNewReader
    JavaClassReader useNewClassReader.
    Java flushAllJavaResources.
    Java initialize.
    JavaVM initializeVM.
    JavaClassReader useOldClassReader.

    "Created: / 09-05-2011 / 23:17:30 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
    "Modified: / 10-05-2011 / 13:43:33 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
!

testJavaInitializationWithOldReader
    JavaClassReader useOldClassReader.
    Java flushAllJavaResources.
    Java initialize.
    JavaVM initializeVM.
    JavaClassReader useOldClassReader.

    "Created: / 10-05-2011 / 16:16:53 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
!

testReadingClass
    | reader  constantPool  result |

    reader := JavaClassReader2 new.
    constantPool := JavaConstantPool new: 1.
    constantPool at: 1 put: 'Ljava/lang/Object;'.
    reader constants: constantPool.
    reader stream: (ReadStream on: #( 1 0 )).
    result := reader readConstant_Class.
    self assertTrue: (result notNil).
    self assertTrue: (result isJavaRef).
    self assertTrue: (result isNewJavaRef).
    self assertTrue: (result name = 'Ljava/lang/Object;').

    "Created: / 10-05-2011 / 13:52:35 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
!

testReadingField
    | reader  constantPool  result |

    reader := JavaClassReader2 new.
    constantPool := JavaConstantPool new: 4.
    constantPool at: 1 put: (self getClassRefFor: 'class').
    constantPool at: 2 put: (self getName: 'foo' descriptor: 'bar').
    reader constants: constantPool.
    reader stream: (ReadStream on: #( 1 0 2 0 )).
    result := reader readConstant_Fieldref.
    self assertTrue: (result notNil).
    self assertTrue: (result isJavaRef).
    self assertTrue: (result isNewJavaRef).
    self assertTrue: (result classRef isNewJavaRef).
    self assertTrue: (result classRef isNewJavaRef).
    self assertTrue: (result nameAndType isNewJavaNameAndType).
    self assertTrue: (result nameAndType name = 'foo').
    self assertTrue: (result nameAndType descriptor = 'bar').

    "Created: / 10-05-2011 / 14:12:07 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
    "Modified: / 10-05-2011 / 16:14:39 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
!

testReadingInterfaceMethod
    | reader  constantPool  result |

    reader := JavaClassReader2 new.
    constantPool := JavaConstantPool new: 4.
    constantPool at: 1 put: (self getClassRefFor: 'class').
    constantPool at: 2 put: (self getName: 'foo' descriptor: 'bar').
    reader constants: constantPool.
    reader stream: (ReadStream on: #( 1 0 2 0 )).
    result := reader readConstant_InterfaceMethodref.
    self assertTrue: (result notNil).
    self assertTrue: (result isJavaRef).
    self assertTrue: (result isNewJavaRef).
    self assertTrue: (result classRef isNewJavaRef).
    self assertTrue: (result classRef isNewJavaRef).
    self assertTrue: (result nameAndType isNewJavaNameAndType).
    self assertTrue: (result nameAndType name = 'foo').
    self assertTrue: (result nameAndType descriptor = 'bar').

    "Created: / 10-05-2011 / 14:12:21 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
    "Modified: / 10-05-2011 / 16:14:44 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
!

testReadingMethod
    | reader  constantPool  result |

    reader := JavaClassReader2 new.
    constantPool := JavaConstantPool new: 4.
    constantPool at: 1 put: (self getClassRefFor: 'class').
    constantPool at: 2 put: (self getName: 'foo' descriptor: 'bar').
    reader constants: constantPool.
    reader stream: (ReadStream on: #( 1 0 2 0 )).
    result := reader readConstant_Methodref.
    self assertTrue: (result notNil).
    self assertTrue: (result isJavaRef).
    self assertTrue: (result isNewJavaRef).
    self assertTrue: (result classRef isNewJavaRef).
    self assertTrue: (result classRef isNewJavaRef).
    self assertTrue: (result nameAndType isNewJavaNameAndType).
    self assertTrue: (result nameAndType name = 'foo').
    self assertTrue: (result nameAndType descriptor = 'bar').

    "Created: / 10-05-2011 / 14:10:25 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
    "Modified: / 10-05-2011 / 16:14:48 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
!

testReadingNameAndType
    | reader  constantPool  result |

    reader := JavaClassReader2 new.
    constantPool := JavaConstantPool new: 2.
    constantPool at: 1 put: 'foo'.
    constantPool at: 2 put: 'bar'.
    reader constants: constantPool.
    reader stream: (ReadStream on: #( 1 0 2 0 )).
    result := reader readConstant_NameAndType.
    self assertTrue: (result notNil).
    self assertTrue: (result isJavaNameAndType).
    self assertTrue: (result isNewJavaNameAndType).
    self assertTrue: (result name = 'foo').
    self assertTrue: (result descriptor = 'bar').

    "Created: / 10-05-2011 / 13:56:37 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
!

testReadingStream
|result|    
result := JavaClassReader2 readStream: self getCrateClassReadStream.
self assertTrue: (result notNil).

    "Created: / 10-05-2011 / 12:16:43 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
!

testWholeConstantPoolContainsFullyInitializedItems
    | result |

    result := JavaClassReader readStream: self getCrateClassReadStream.
    result constantPool do: 
            [:each | 
            each isJavaRef 
                ifTrue: [ self assertTrue: each isNewJavaRef. self assertTrue: each owner notNil. self assertTrue: each constantPool notNil.]
                ifFalse: 
                    [ each isJavaNameAndType 
                        ifTrue: [ self assertTrue: each isNewJavaNameAndType. self assertTrue: each owner notNil. self assertTrue: each constantPool notNil.] ] ].

    "Created: / 10-05-2011 / 17:01:12 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
!

testWholeConstantPoolContainsOnlyNewRefs
    | result |

    result := JavaClassReader readStream: self getCrateClassReadStream.
    result constantPool do: 
            [:each | 
            each isJavaRef 
                ifTrue: [ self assertTrue: each isNewJavaRef ]
                ifFalse: 
                    [ each isJavaNameAndType 
                        ifTrue: [ self assertTrue: each isNewJavaNameAndType ] ] ].

    "Created: / 10-05-2011 / 12:18:58 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
    "Modified: / 10-05-2011 / 16:59:15 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
! !

!JavaClassReader2Tests class methodsFor:'documentation'!

version_SVN
    ^ '$Id$'
! !