src/JavaConstantPoolsTests.st
author vranyj1
Sun, 01 May 2011 12:52:23 +0000
branchjk_new_structure
changeset 761 43e017ec7958
parent 758 be8e84381ce0
child 764 3c1d3f2d29a5
permissions -rw-r--r--
Merged with /branches/jk

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