"{ Package: 'stx:libjava' }"
TestCase subclass:#JavaConstantPoolsTests
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'Languages-Java-Tests-RuntimeConstantPool'
!
!JavaConstantPoolsTests class methodsFor:'resources'!
resources
^ Array with: JavaInitializedResource with: JavaTestsResource.
"Created: / 26-04-2011 / 13:03:05 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
! !
!JavaConstantPoolsTests methodsFor:'tests'!
testInvalidateAll
| newConstantPool tmpConstantPoolCache |
tmpConstantPoolCache := JavaConstantPool allConstantPools.
JavaConstantPool allConstantPools: OrderedCollection new.
newConstantPool := JavaConstantPool new: 8.
newConstantPool at: 1 put: 6.
newConstantPool at: 2 put: 'hello'.
newConstantPool at: 3 put: (JavaClassRef2 for: 'Ljava/lang/Object;').
newConstantPool at: 4
put: (JavaMethodRef2
namedAndTyped: (JavaNameAndType2 name: '<init>' descriptor: '()V')
inClassIdentifiedByRef: (newConstantPool at: 3)).
newConstantPool at: 5 put: (JavaClassRef2 for: 'Ljava/lang/String;').
newConstantPool at: 6
put: (JavaFieldRef2
namedAndTyped: (JavaNameAndType2 name: 'value' descriptor: '[C')
inClassIdentifiedByRef: (newConstantPool at: 5)).
newConstantPool at: 7 put: (JavaClassRef2 for: 'Ljava/lang/Runnable;').
newConstantPool at: 8
put: (JavaInterfaceMethodRef2
namedAndTyped: (JavaNameAndType2 name: 'run' descriptor: '()V')
inClassIdentifiedByRef: (newConstantPool at: 7)).
JavaConstantPool allConstantPools do:
[ :each | self
assertTrue: (JavaConstantPool allConstantPools includes: newConstantPool) ].
JavaConstantPool allConstantPools: tmpConstantPoolCache.
"Created: / 08-04-2011 / 17:03:56 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
"Modified: / 11-04-2011 / 18:50:24 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
!
testInvalidateForClass
| newConstantPool tmpConstantPoolCache |
"/backup cps
tmpConstantPoolCache := JavaConstantPool allConstantPools.
JavaConstantPool allConstantPools: OrderedCollection new.
newConstantPool := JavaConstantPool new: 8.
newConstantPool at: 1 put: 6.
newConstantPool at: 2 put: 'hello'.
newConstantPool at: 3
put: (JavaClassRef2
for: 'Lstx/libjava/tests/mocks/ImplementorOfPublicInterface;').
newConstantPool at: 4
put: (JavaMethodRef2 namedAndTyped: (JavaNameAndType2 name: 'publicMethod'
descriptor: '()Ljava/lang/String;')
inClassIdentifiedByRef: (newConstantPool at: 3)).
newConstantPool at: 5
put: (JavaClassRef2 for: 'Lstx/libjava/tests/mocks/PublicClass;').
newConstantPool at: 6
put: (JavaFieldRef2 namedAndTyped: (JavaNameAndType2 name: 'publicField'
descriptor: 'Ljava/lang/String;')
inClassIdentifiedByRef: (newConstantPool at: 5)).
newConstantPool at: 7 put: (JavaClassRef2 for: 'Ljava/lang/Runnable;').
newConstantPool at: 8
put: (JavaInterfaceMethodRef2
namedAndTyped: (JavaNameAndType2 name: 'run' descriptor: '()V')
inClassIdentifiedByRef: (newConstantPool at: 7)).
"/end of initialization part
newConstantPool do: [:each | each isJavaRef ifTrue: [ each resolve ] ].
"/end of resolving part
JavaConstantPool invalidateReferencesToClass: 'Lstx/libjava/tests/mocks/PublicClass;'.
self assertTrue: (newConstantPool at: 3) isResolved.
self assertTrue: (newConstantPool at: 7) isResolved.
self assertTrue: (newConstantPool at: 5) isResolved not.
"/and put pack what was there before
JavaConstantPool allConstantPools: tmpConstantPoolCache.
"Created: / 08-04-2011 / 17:10:42 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
"Modified: / 14-04-2011 / 15:41:35 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
!
testNewCreatedCPIsInCache
|newConstantPool|
newConstantPool := JavaConstantPool new: 500.
self assertTrue: (JavaConstantPool allConstantPools includes: newConstantPool).
JavaConstantPool allConstantPools remove: newConstantPool.
"Created: / 08-04-2011 / 16:57:59 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
! !
!JavaConstantPoolsTests class methodsFor:'documentation'!
version_SVN
^ '$Id$'
! !