RegressionTests__JavaScriptTests.st
changeset 261 3a40bfd39da7
child 262 4b68b98a3232
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/RegressionTests__JavaScriptTests.st	Tue Apr 12 12:18:36 2005 +0200
@@ -0,0 +1,152 @@
+"{ Package: 'exept:regression' }"
+
+"{ NameSpace: RegressionTests }"
+
+TestCase subclass:#JavaScriptTests
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Languages-JavaScript-Compiling & Parsing'
+!
+
+!JavaScriptTests class methodsFor:'documentation'!
+
+documentation
+"
+    documentation to be added.
+
+    [author:]
+        cg (cg@FUSI)
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+!
+
+history
+    "Created: / 12-04-2005 / 11:54:25 / cg"
+! !
+
+!JavaScriptTests methodsFor:'initialize / release'!
+
+setUp
+    "common setup - invoked before testing."
+
+    super setUp
+!
+
+tearDown
+    "common cleanup - invoked after testing."
+
+    super tearDown
+! !
+
+!JavaScriptTests methodsFor:'tests'!
+
+test_01_parse_literals
+    |spec|
+
+    spec := #(
+                        ('1'                    #isInteger       1)
+                        ('0'                    #isInteger       0)
+                        ('-1'                   #isInteger       -1)
+                        ('12345678901234567890' #isInteger       12345678901234567890)
+                        ('0x0'                  #isInteger       0)
+                        ('0x1'                  #isInteger       1)
+                        ('0xFFFF'               #isInteger       16rFFFF)
+                        ('0xffff'               #isInteger       16rFFFF)
+                        ('0xFFFFFFFFFFFFFFFF'   #isInteger       16rFFFFFFFFFFFFFFFF)
+                        ('0777'                 #isInteger       8r777)
+
+                        ('1.2345'               #isFloat         1.2345)
+                        ('-1.2345'              #isFloat         -1.2345)
+
+                        ('nil'                  #isNil           nil)
+                        ('null'                 #isNil           nil)
+                        ('true'                 nil              true)
+                        ('false'                nil              false)
+
+                        ('"hello"'              #isString        'hello' )
+                        ('"\t"'                 #isString        (#eval 'Character tab asString') )
+                        ('"\r"'                 #isString        (#eval 'Character return asString') )
+                        ('"\n"'                 #isString        (#eval 'Character nl asString') )
+
+                        ('[ 1 , 2 , 3]'         #isArray         #(1 2 3) )
+                        ('[1,2,3]'              #isArray         #(1 2 3) )
+                        ('[1,2,3]'              #isArray         #(1 2 3) )
+                        ('["a","b","c"]'        #isArray         #('a' 'b' 'c') )
+                        ('[]'                   #isArray         #() )
+                        ('[null]'               #isArray         #( nil ) )
+
+                        ('[1,[2,[3]]]'              #isArray         #(1 (2 (3))) )
+
+               ).
+
+    spec do:[:triple |
+        |str checkSelectorOrNil valExpected val|
+
+        str := triple first.
+        checkSelectorOrNil := triple second.
+        valExpected := triple third.
+        valExpected isArray ifTrue:[
+            (valExpected size > 0 and:[valExpected first == #eval]) ifTrue:[
+                valExpected := Parser evaluate:valExpected second
+            ].
+        ].
+
+        val := (JavaScriptParser parseExpression:str) evaluate.
+        checkSelectorOrNil notNil ifTrue:[
+            self assert:(val perform:checkSelectorOrNil).
+        ].
+        self assert:(val = valExpected).
+    ].
+
+    "
+     self run:#test_01_parse_literals
+     self new test_01_parse_literals
+    "
+!
+
+test_02_parse_literals2
+    |spec|
+
+    spec := #(
+                        ('"\x01"'               #isString        (#eval '(Character value:1) asString') )
+               ).
+
+    spec do:[:triple |
+        |str checkSelectorOrNil valExpected val|
+
+        str := triple first.
+        checkSelectorOrNil := triple second.
+        valExpected := triple third.
+        valExpected isArray ifTrue:[
+            valExpected first == #eval ifTrue:[
+                valExpected := Parser evaluate:valExpected second
+            ] ifFalse:[
+                self error.
+            ].
+        ].
+
+        val := (JavaScriptParser parseExpression:str) evaluate.
+        checkSelectorOrNil notNil ifTrue:[
+            self assert:(val perform:checkSelectorOrNil).
+        ].
+        self assert:(val = valExpected).
+    ].
+
+    "
+     self run:#test_02_parse_literals2
+     self new test_02_parse_literals2
+    "
+! !
+
+!JavaScriptTests class methodsFor:'documentation'!
+
+version
+    ^ '$Header$'
+! !