SmallSense__GroovyCompletionEngineSimpleTests.st
changeset 234 97857872ee47
child 249 8bc64027b189
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SmallSense__GroovyCompletionEngineSimpleTests.st	Fri May 23 12:58:31 2014 +0100
@@ -0,0 +1,401 @@
+"{ Encoding: utf8 }"
+
+"{ Package: 'jv:smallsense' }"
+
+"{ NameSpace: SmallSense }"
+
+AbstractJavaCompletionEngineTests subclass:#GroovyCompletionEngineSimpleTests
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Tests'
+!
+
+!GroovyCompletionEngineSimpleTests methodsFor:'accessing-classes'!
+
+completionEngineClass
+    ^ GroovyCompletionEngineSimple
+
+    "Created: / 22-05-2014 / 16:39:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!GroovyCompletionEngineSimpleTests methodsFor:'tests - analysis'!
+
+test_analyze_01a
+
+    self complete:'import java.util.Array;┃'.
+
+    self assert: (engine instVarNamed: #imports) size == 1.
+    self assert: (engine instVarNamed: #imports) first = 'java.util.Array'
+
+    "Created: / 22-05-2014 / 17:08:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_analyze_01b
+
+    self complete:'import java.util.*;┃'.
+
+    self assert: (engine instVarNamed: #imports) size == 1.
+    self assert: (engine instVarNamed: #imports) first = 'java.util.*'
+
+    "Created: / 22-05-2014 / 17:08:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_analyze_01c
+
+    self complete:'import java.util.*;
+                   import java.lang.reflect.Field;┃'.
+
+    self assert: (engine instVarNamed: #imports) size == 2.
+    self assert: (engine instVarNamed: #imports) first = 'java.util.*'.
+    self assert: (engine instVarNamed: #imports) second = 'java.lang.reflect.Field'.
+
+    "Created: / 22-05-2014 / 17:09:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_analyze_02_boolean
+
+    self complete:'boolean  var; ┃'.
+
+    self assert: (engine instVarNamed: #locals) size == 1.
+    self assert: ((engine instVarNamed: #locals) includesKey: 'var') .
+    self assert: ((engine instVarNamed: #locals) at: 'var') = 'boolean' .
+
+    "Created: / 23-05-2014 / 09:24:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_analyze_02_byte
+
+    self complete:'byte var; ┃'.
+
+    self assert: (engine instVarNamed: #locals) size == 1.
+    self assert: ((engine instVarNamed: #locals) includesKey: 'var') .
+    self assert: ((engine instVarNamed: #locals) at: 'var') = 'byte' .
+
+    "Created: / 23-05-2014 / 09:23:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_analyze_02_char
+
+    self complete:'char  var; ┃'.
+
+    self assert: (engine instVarNamed: #locals) size == 1.
+    self assert: ((engine instVarNamed: #locals) includesKey: 'var') .
+    self assert: ((engine instVarNamed: #locals) at: 'var') = 'char' .
+
+    "Created: / 23-05-2014 / 09:24:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_analyze_02_def
+
+    self complete:'def var; ┃'.
+
+    self assert: (engine instVarNamed: #locals) size == 1.
+    self assert: ((engine instVarNamed: #locals) includesKey: 'var') .
+    self assert: ((engine instVarNamed: #locals) at: 'var') isNil .
+
+    "Created: / 23-05-2014 / 09:26:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_analyze_02_double
+
+    self complete:'double  var; ┃'.
+
+    self assert: (engine instVarNamed: #locals) size == 1.
+    self assert: ((engine instVarNamed: #locals) includesKey: 'var') .
+    self assert: ((engine instVarNamed: #locals) at: 'var') = 'double' .
+
+    "Created: / 23-05-2014 / 09:24:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_analyze_02_float
+
+    self complete:'float  var; ┃'.
+
+    self assert: (engine instVarNamed: #locals) size == 1.
+    self assert: ((engine instVarNamed: #locals) includesKey: 'var') .
+    self assert: ((engine instVarNamed: #locals) at: 'var') = 'float' .
+
+    "Created: / 23-05-2014 / 09:24:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_analyze_02_int_1
+
+    self complete:'int var; ┃'.
+
+    self assert: (engine instVarNamed: #locals) size == 1.
+    self assert: ((engine instVarNamed: #locals) includesKey: 'var') .
+    self assert: ((engine instVarNamed: #locals) at: 'var') = 'int' .
+
+    "Created: / 23-05-2014 / 09:19:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_analyze_02_int_2
+
+    self complete:'int var = 10; ┃'.
+
+    self assert: (engine instVarNamed: #locals) size == 1.
+    self assert: ((engine instVarNamed: #locals) includesKey: 'var') .
+    self assert: ((engine instVarNamed: #locals) at: 'var') = 'int' .
+
+    "Created: / 23-05-2014 / 09:22:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_analyze_02_long
+
+    self complete:'long var; ┃'.
+
+    self assert: (engine instVarNamed: #locals) size == 1.
+    self assert: ((engine instVarNamed: #locals) includesKey: 'var') .
+    self assert: ((engine instVarNamed: #locals) at: 'var') = 'long' .
+
+    "Created: / 23-05-2014 / 09:23:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_analyze_02_ref_full
+
+    self complete:'java.util.ArrayList var; ┃'.
+
+    self assert: (engine instVarNamed: #locals) size == 1.
+    self assert: ((engine instVarNamed: #locals) includesKey: 'var') .
+    self assert: ((engine instVarNamed: #locals) at: 'var') = 'java.util.ArrayList' .
+
+    "Created: / 23-05-2014 / 09:27:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_analyze_02_ref_short
+
+    self complete:'ArrayList var; ┃'.
+
+    self assert: (engine instVarNamed: #locals) size == 1.
+    self assert: ((engine instVarNamed: #locals) includesKey: 'var') .
+    self assert: ((engine instVarNamed: #locals) at: 'var') = 'ArrayList' .
+
+    "Created: / 23-05-2014 / 09:26:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_analyze_02_short
+
+    self complete:'short var; ┃'.
+
+    self assert: (engine instVarNamed: #locals) size == 1.
+    self assert: ((engine instVarNamed: #locals) includesKey: 'var') .
+    self assert: ((engine instVarNamed: #locals) at: 'var') = 'short' .
+
+    "Created: / 23-05-2014 / 09:23:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_analyze_03a
+
+    self complete:' int var1; 
+                    def var2 = var1 + ┃'.
+
+    self assert: (engine instVarNamed: #locals) size == 2.
+    self assert: ((engine instVarNamed: #locals) includesKey: 'var1') .
+    self assert: ((engine instVarNamed: #locals) at: 'var1') = 'int' .
+
+    self assert: ((engine instVarNamed: #locals) includesKey: 'var2') .
+    self assert: ((engine instVarNamed: #locals) at: 'var2') = nil .
+
+    "Created: / 23-05-2014 / 10:32:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!GroovyCompletionEngineSimpleTests methodsFor:'tests - completion'!
+
+test_complete_01a
+
+    self complete:'import java.uti┃'.
+
+    self assert: result notEmpty.
+    self assert: (result allSatisfy:[:each | each class == JavaImportPO ]).
+    self assert: (result contains:[:each | each import = 'java.util.*' ]).
+    self assert: (result contains:[:each | each import = 'java.util.zip.*' ]).
+    self assert: (result contains:[:each | each import = 'java.util.ArrayList' ]).
+
+    "Created: / 22-05-2014 / 17:28:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_complete_02a
+
+    self complete:'im┃'.
+
+    self assert: result notEmpty.
+    self assert: (result contains:[:each | each isSmallSenseSnippetPO and:[each value = 'import '] ]).
+
+    "Created: / 22-05-2014 / 17:33:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_complete_03a
+    "
+    Test variable completion"
+
+    self complete:'int  ival = 10;
+                   List ilist = new ArrayList();
+                   il┃'.
+
+    self assert: result size >= 2.
+    self assert: (result contains:[:each | each isSmallSenseVariablePO and:[each name = 'ilist']]).
+    self assert: (result contains:[:each | each isSmallSenseVariablePO and:[each name = 'ival']]) .
+
+    "Created: / 23-05-2014 / 10:30:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_complete_03b
+    "
+    Test variable completion"
+
+    self complete:'int  ival = 10;
+                   List ilist = new ArrayList();
+                   i┃'.
+
+    self assert: result size >= 2.
+    self assert: (result contains:[:each | each isSmallSenseVariablePO and:[each name = 'ilist'] ]).
+    self assert: (result contains:[:each | each isSmallSenseVariablePO and:[each name = 'ival'] ]).
+
+    "Created: / 23-05-2014 / 10:36:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_complete_03c
+    "
+    Test variable completion"
+
+    self complete:'int  ival = 10;
+                   List ilist = new ArrayList();
+                   ilist.add( i┃ )'.
+
+    self assert: result size >= 2.
+    self assert: (result contains:[:each | each isSmallSenseVariablePO and:[each name = 'ilist'] ]).
+    self assert: (result contains:[:each | each isSmallSenseVariablePO and:[each name = 'ival'] ]).
+
+    "Created: / 23-05-2014 / 10:38:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_complete_03d
+    "
+    Test pseudo-variable completion"
+
+    self complete:'th┃'.
+
+    self assert: result size >= 1.
+    self assert: (result contains:[:each | each isSmallSenseSnippetPO and:[each value = 'this '] ]).
+
+    "Created: / 23-05-2014 / 10:39:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_complete_04a
+    "
+    Test class completion
+    "
+
+    | java_lang_ArrayList ctors pos |
+
+    self complete:'def list = new Arr┃'.
+
+    java_lang_ArrayList := context environment == Smalltalk 
+                            ifTrue:[ context environment classNamed: #'JAVA::java::util::ArrayList'  ]
+                            ifFalse:[ context environment classNamed: #'java/util/ArrayList'].
+    ctors := java_lang_ArrayList methodDictionary values select:[:e | e selector startsWith: '<init>' ].
+    pos := result select:[:each | each class == JavaConstructorPO and:[ each classes anElement == java_lang_ArrayList ] ].
+
+    self assert: result size >= ctors size.
+    ctors do:[:ctor |  
+        self assert: (pos contains:[:po | po selector == ctor selector ]).
+    ].
+
+    "Created: / 23-05-2014 / 11:12:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_complete_04b
+    "
+    Test class completion
+    "
+
+    | java_lang_ArrayList ctors pos |
+
+    self complete:'def list = new java.util.Arr┃'.
+
+    java_lang_ArrayList := context environment == Smalltalk 
+                            ifTrue:[ context environment classNamed: #'JAVA::java::util::ArrayList'  ]
+                            ifFalse:[ context environment classNamed: #'java/util/ArrayList'].
+    ctors := java_lang_ArrayList methodDictionary values select:[:e | e selector startsWith: '<init>' ].
+    pos := result select:[:each | each class == JavaConstructorPO and:[ each classes anElement == java_lang_ArrayList ] ].
+
+    self assert: result size >= ctors size.
+    ctors do:[:ctor |  
+        self assert: (pos contains:[:po | po selector == ctor selector ]).
+    ].
+
+    "Created: / 23-05-2014 / 11:32:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_complete_04c
+    "
+    Test class completion
+    "
+
+    | java_lang_ArrayList ctors pos |
+
+    self complete:'def list = new java.util.┃'.
+
+    java_lang_ArrayList := context environment == Smalltalk 
+                            ifTrue:[ context environment classNamed: #'JAVA::java::util::ArrayList'  ]
+                            ifFalse:[ context environment classNamed: #'java/util/ArrayList'].
+    ctors := java_lang_ArrayList methodDictionary values select:[:e | e selector startsWith: '<init>' ].
+    pos := result select:[:each | each class == JavaConstructorPO and:[ each classes anElement == java_lang_ArrayList ] ].
+
+    self assert: result size >= ctors size.
+    ctors do:[:ctor |  
+        self assert: (pos contains:[:po | po selector == ctor selector ]).
+    ].
+
+    "Created: / 23-05-2014 / 11:33:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_complete_04d
+    "
+    Test class completion
+    "
+
+    | java_lang_ArrayList ctors pos |
+
+    self complete:'def list = new java.ut┃'.
+
+    java_lang_ArrayList := context environment == Smalltalk 
+                            ifTrue:[ context environment classNamed: #'JAVA::java::util::ArrayList'  ]
+                            ifFalse:[ context environment classNamed: #'java/util/ArrayList'].
+    ctors := java_lang_ArrayList methodDictionary values select:[:e | e selector startsWith: '<init>' ].
+    pos := result select:[:each | each class == JavaConstructorPO and:[ each classes anElement == java_lang_ArrayList ] ].
+
+    self assert: result size >= ctors size.
+    ctors do:[:ctor |  
+        self assert: (pos contains:[:po | po selector == ctor selector ]).
+    ].
+
+    "Created: / 23-05-2014 / 11:41:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_complete_05a
+    "
+    Test method completion
+    "
+
+    | java_lang_ArrayList methods pos |
+
+    self complete:'def list = new java.util.ArrayList();
+                   list.addA┃'.
+
+    java_lang_ArrayList := context environment == Smalltalk 
+                            ifTrue:[ context environment classNamed: #'JAVA::java::util::ArrayList'  ]
+                            ifFalse:[ context environment classNamed: #'java/util/ArrayList'].
+
+    methods := java_lang_ArrayList methodDictionary values select:[:e | e selector startsWith: 'addA' ].
+    pos := result select:[:each | each isSmallSenseMethodPO and:[ each selector startsWith: 'addA' ] ].
+
+    self assert: result size >= methods size.
+    methods do:[:method |  
+        self assert: (pos contains:[:po | po selector == method selector ]).
+    ].
+
+    "Created: / 23-05-2014 / 11:43:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+