"{ 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$'
! !