--- /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$'
+! !