RegressionTests__JavaScriptTests.st
author Claus Gittinger <cg@exept.de>
Tue, 12 Apr 2005 12:18:36 +0200
changeset 261 3a40bfd39da7
child 262 4b68b98a3232
permissions -rw-r--r--
initial checkin
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
261
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'exept:regression' }"
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"{ NameSpace: RegressionTests }"
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
TestCase subclass:#JavaScriptTests
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	instanceVariableNames:''
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	classVariableNames:''
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
	poolDictionaries:''
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
	category:'Languages-JavaScript-Compiling & Parsing'
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
!
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
!JavaScriptTests class methodsFor:'documentation'!
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
documentation
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
"
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
    documentation to be added.
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
    [author:]
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
        cg (cg@FUSI)
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
    [instance variables:]
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
    [class variables:]
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
    [see also:]
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
"
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
!
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
history
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
    "Created: / 12-04-2005 / 11:54:25 / cg"
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
! !
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
!JavaScriptTests methodsFor:'initialize / release'!
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
setUp
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
    "common setup - invoked before testing."
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
    super setUp
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
!
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
tearDown
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    "common cleanup - invoked after testing."
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
    super tearDown
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
! !
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
!JavaScriptTests methodsFor:'tests'!
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
test_01_parse_literals
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
    |spec|
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
    spec := #(
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
                        ('1'                    #isInteger       1)
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
                        ('0'                    #isInteger       0)
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
                        ('-1'                   #isInteger       -1)
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
                        ('12345678901234567890' #isInteger       12345678901234567890)
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
                        ('0x0'                  #isInteger       0)
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
                        ('0x1'                  #isInteger       1)
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
                        ('0xFFFF'               #isInteger       16rFFFF)
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
                        ('0xffff'               #isInteger       16rFFFF)
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
                        ('0xFFFFFFFFFFFFFFFF'   #isInteger       16rFFFFFFFFFFFFFFFF)
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
                        ('0777'                 #isInteger       8r777)
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
                        ('1.2345'               #isFloat         1.2345)
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
                        ('-1.2345'              #isFloat         -1.2345)
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
                        ('nil'                  #isNil           nil)
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
                        ('null'                 #isNil           nil)
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
                        ('true'                 nil              true)
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
                        ('false'                nil              false)
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
                        ('"hello"'              #isString        'hello' )
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
                        ('"\t"'                 #isString        (#eval 'Character tab asString') )
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
                        ('"\r"'                 #isString        (#eval 'Character return asString') )
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
                        ('"\n"'                 #isString        (#eval 'Character nl asString') )
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
                        ('[ 1 , 2 , 3]'         #isArray         #(1 2 3) )
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
                        ('[1,2,3]'              #isArray         #(1 2 3) )
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
                        ('[1,2,3]'              #isArray         #(1 2 3) )
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
                        ('["a","b","c"]'        #isArray         #('a' 'b' 'c') )
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
                        ('[]'                   #isArray         #() )
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
                        ('[null]'               #isArray         #( nil ) )
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
                        ('[1,[2,[3]]]'              #isArray         #(1 (2 (3))) )
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
               ).
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
    spec do:[:triple |
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
        |str checkSelectorOrNil valExpected val|
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
        str := triple first.
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
        checkSelectorOrNil := triple second.
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
        valExpected := triple third.
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
        valExpected isArray ifTrue:[
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
            (valExpected size > 0 and:[valExpected first == #eval]) ifTrue:[
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
                valExpected := Parser evaluate:valExpected second
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
            ].
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
        ].
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
        val := (JavaScriptParser parseExpression:str) evaluate.
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
        checkSelectorOrNil notNil ifTrue:[
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
            self assert:(val perform:checkSelectorOrNil).
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
        ].
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
        self assert:(val = valExpected).
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
    ].
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
    "
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
     self run:#test_01_parse_literals
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
     self new test_01_parse_literals
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
    "
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
!
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
test_02_parse_literals2
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
    |spec|
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
    spec := #(
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
                        ('"\x01"'               #isString        (#eval '(Character value:1) asString') )
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
               ).
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
    spec do:[:triple |
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
        |str checkSelectorOrNil valExpected val|
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
        str := triple first.
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
        checkSelectorOrNil := triple second.
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
        valExpected := triple third.
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
        valExpected isArray ifTrue:[
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
            valExpected first == #eval ifTrue:[
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
                valExpected := Parser evaluate:valExpected second
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
            ] ifFalse:[
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
                self error.
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
            ].
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
        ].
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
        val := (JavaScriptParser parseExpression:str) evaluate.
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
        checkSelectorOrNil notNil ifTrue:[
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
            self assert:(val perform:checkSelectorOrNil).
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
        ].
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
        self assert:(val = valExpected).
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
    ].
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
    "
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
     self run:#test_02_parse_literals2
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
     self new test_02_parse_literals2
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
    "
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
! !
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
!JavaScriptTests class methodsFor:'documentation'!
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
version
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
    ^ '$Header$'
3a40bfd39da7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
! !