src/JavaInterfaceMethodRefTests.st
branchjk_new_structure
changeset 758 be8e84381ce0
child 761 43e017ec7958
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/JavaInterfaceMethodRefTests.st	Sat Apr 09 11:33:24 2011 +0000
@@ -0,0 +1,123 @@
+"{ Package: 'stx:libjava' }"
+
+JavaRuntimeConstantPoolTests subclass:#JavaInterfaceMethodRefTests
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Languages-Java-Tests-RuntimeConstantPool'
+!
+
+
+!JavaInterfaceMethodRefTests methodsFor:'javaInterfaceMethodRef tests'!
+
+testCorrectInstanceCreation
+    | javaClassRef  initString  javaMethodRef |
+
+    initString := 'Ljava/lang/Runnable;'.
+    javaClassRef := JavaClassRef2 for: initString.
+    javaMethodRef := JavaMethodRef2 
+                namedAndTyped: (JavaNameAndType2 name: 'run' descriptor: '()V')
+                inClassIdentifiedByRef: javaClassRef.
+    self assertTrue: (javaMethodRef isResolved not).
+    self assertTrue: (javaMethodRef valueCache isNil).
+    self assertTrue: (javaMethodRef name = 'run').
+    self assertTrue: (javaMethodRef descriptor = '()V').
+    self assertTrue: (javaMethodRef classRef name = 'Ljava/lang/Runnable;').
+
+    "Created: / 08-04-2011 / 14:01:41 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 08-04-2011 / 16:48:31 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+!
+
+testCorrectResolving
+    | javaClassRef  initString  javaMethodRef  expectedResult  result |
+
+    initString := 'Ljava/lang/Runnable;'.
+    javaClassRef := JavaClassRef2 for: initString.
+    javaMethodRef := JavaMethodRef2 
+                namedAndTyped: (JavaNameAndType2 name: 'run' descriptor: '()V')
+                inClassIdentifiedByRef: javaClassRef.
+    result := javaMethodRef resolve.
+    expectedResult := (Java classForName: 'java.lang.Runnable') methodDictionary 
+                at: #'run()V'.
+    self assertTrue: (result = expectedResult).
+
+    "Created: / 08-04-2011 / 14:07:57 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 08-04-2011 / 16:48:48 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+!
+
+testInvalidation
+    | javaClassRef  javaMethodRef |
+
+    javaClassRef := JavaClassRef2 for: 'Ljava/lang/Runnable;'.
+    javaMethodRef := JavaFieldRef2 
+                namedAndTyped: (JavaNameAndType2 name: 'run' descriptor: '()V')
+                inClassIdentifiedByRef: javaClassRef.
+    self assertTrue: (javaMethodRef isResolved not).
+    javaMethodRef resolve.
+    self assertTrue: (javaMethodRef isResolved).
+    self assertTrue: (javaClassRef isResolved).
+    javaMethodRef invalidate.
+    self assertTrue: (javaMethodRef isResolved not).
+    self assertTrue: (javaClassRef isResolved not).
+
+    "Created: / 08-04-2011 / 14:09:06 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 08-04-2011 / 16:49:50 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+!
+
+testInvalidationForClassNegative
+    | javaClassRef  javaMethodRef |
+
+    javaClassRef := JavaClassRef2 for: 'Ljava/lang/Runnable;'.
+    javaMethodRef := JavaFieldRef2 
+                namedAndTyped: (JavaNameAndType2 name: 'run' descriptor: '()V')
+                inClassIdentifiedByRef: javaClassRef.
+    self assertTrue: (javaMethodRef isResolved not).
+    javaMethodRef resolve.
+    self assertTrue: (javaMethodRef isResolved).
+    self assertTrue: (javaClassRef isResolved).
+    javaMethodRef invalidateForClass: 'Ljava/lang/Object;'.
+    self assertTrue: (javaMethodRef isResolved).
+    self assertTrue: (javaClassRef isResolved).
+
+    "Created: / 08-04-2011 / 16:23:06 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+!
+
+testInvalidationForClassPositive
+    | javaClassRef  javaMethodRef |
+
+    javaClassRef := JavaClassRef2 for: 'Ljava/lang/Runnable;'.
+    javaMethodRef := JavaFieldRef2 
+                namedAndTyped: (JavaNameAndType2 name: 'run' descriptor: '()V')
+                inClassIdentifiedByRef: javaClassRef.
+    self assertTrue: (javaMethodRef isResolved not).
+    javaMethodRef resolve.
+    self assertTrue: (javaMethodRef isResolved).
+    self assertTrue: (javaClassRef isResolved).
+    javaMethodRef invalidateForClass: 'Ljava/lang/Runnable;'.
+    self assertTrue: (javaMethodRef isResolved not).
+    self assertTrue: (javaClassRef isResolved not).
+
+    "Created: / 08-04-2011 / 16:23:19 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+!
+
+testResolving
+    | javaClassRef  javaMethodRef |
+
+    javaClassRef := JavaClassRef2 for: 'Ljava/lang/Runnable;'.
+    javaMethodRef := JavaFieldRef2 
+                namedAndTyped: (JavaNameAndType2 name: 'run' descriptor: '()V')
+                inClassIdentifiedByRef: javaClassRef.
+    self assertTrue: (javaMethodRef isResolved not).
+    javaMethodRef resolve.
+    self assertTrue: (javaClassRef isResolved).
+    self assertTrue: (javaMethodRef isResolved).
+
+    "Created: / 08-04-2011 / 14:04:01 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 08-04-2011 / 16:47:57 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+! !
+
+!JavaInterfaceMethodRefTests class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id$'
+! !