ParserTests.st
author Claus Gittinger <cg@exept.de>
Tue, 28 Jun 2011 22:25:28 +0200
changeset 581 b51102129a58
parent 580 1b6e2976cb08
child 749 97b804d7b9cf
permissions -rw-r--r--
x
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
580
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
 COPYRIGHT (c) 2006 by eXept Software AG
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
	      All Rights Reserved
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
 This software is furnished under a license and may be used
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
 hereby transferred.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
"{ Package: 'exept:regression' }"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
"{ NameSpace: RegressionTests }"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
TestCase subclass:#ParserTests
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
	instanceVariableNames:'mockClass'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
	classVariableNames:''
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
	poolDictionaries:''
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
	category:'System-Compiler'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
!ParserTests class methodsFor:'documentation'!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
copyright
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
 COPYRIGHT (c) 2006 by eXept Software AG
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
	      All Rights Reserved
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
 This software is furnished under a license and may be used
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
 only in accordance with the terms of that license and with the
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
 inclusion of the above copyright notice.   This software may not
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
 be provided or otherwise made available to, or used by, any
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
 other person.  No title to or ownership of the software is
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
 hereby transferred.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
! !
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
!ParserTests methodsFor:'accessing'!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
mockClass
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
    ^ mockClass
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
mockClass:something
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
    mockClass := something.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
parserClass
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
    ^Parser
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
    "Created: / 01-07-2010 / 11:53:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
    "Modified: / 01-07-2010 / 17:38:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
! !
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
!ParserTests methodsFor:'running'!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
setUp
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
    "prepares the testing environment which consists of mock class instance
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
     for sample annotated methods"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
    |testClass|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
    testClass := self class 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
                subclass:'AnnotationTestedClass'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
                classInstanceVariableNames:''
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
                instanceVariableNames:''
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
                classVariableNames:''
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
                poolDictionaries:''.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
    self mockClass:testClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
    "Created: / 29-11-2009 / 20:52:00 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
    "Modified: / 29-11-2009 / 22:09:27 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
    "Modified: / 12-07-2010 / 09:33:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
tearDown
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
    "release allocated resources for testing environment"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
    self mockClass: nil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    "Created: / 29-11-2009 / 20:52:13 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
    "Modified: / 29-11-2009 / 22:09:33 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
! !
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
581
Claus Gittinger <cg@exept.de>
parents: 580
diff changeset
    86
!ParserTests methodsFor:'smoke test'!
Claus Gittinger <cg@exept.de>
parents: 580
diff changeset
    87
Claus Gittinger <cg@exept.de>
parents: 580
diff changeset
    88
testParseAllMethods
Claus Gittinger <cg@exept.de>
parents: 580
diff changeset
    89
    Smalltalk allClassesDo:[:cls |
Claus Gittinger <cg@exept.de>
parents: 580
diff changeset
    90
        Transcript showCR:cls.
Claus Gittinger <cg@exept.de>
parents: 580
diff changeset
    91
        cls instAndClassMethodsDo:[:mthd |
Claus Gittinger <cg@exept.de>
parents: 580
diff changeset
    92
            Parser parseMethod:mthd source in:mthd mclass
Claus Gittinger <cg@exept.de>
parents: 580
diff changeset
    93
        ]
Claus Gittinger <cg@exept.de>
parents: 580
diff changeset
    94
    ].
Claus Gittinger <cg@exept.de>
parents: 580
diff changeset
    95
Claus Gittinger <cg@exept.de>
parents: 580
diff changeset
    96
    "Created: / 28-06-2011 / 22:23:43 / cg"
Claus Gittinger <cg@exept.de>
parents: 580
diff changeset
    97
! !
Claus Gittinger <cg@exept.de>
parents: 580
diff changeset
    98
580
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
!ParserTests methodsFor:'tests - annotations'!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
testAnnotationWithArrayLiteral
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
    "Positive testing the structure of unknown annotation definition: the annotation with #(<array>) literal; see grammar"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
    |parserState parseErrorOccured annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
    " the signal is raised by Parser2::ParseError>>raiseRequest but there is no way how to handle its signal"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
    parseErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
            parseErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
                        parseMethod:'annotationWithArrayLiteralExample <annotation: #(1 2 3 4)> |x| x:=1. ^x. '
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
    self assert:parserState errorFlag = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
    self assert:parseErrorOccured = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
     " find the annotations record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
     " check the first annotation defined"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
    self assert:(annotation at:1) = 'annotation:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
    self assert:(arguments at:1) = #( 1 2 3 4 ).
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
    "Created: / 12-01-2010 / 13:43:19 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
testAnnotationWithByteArrayLiteral
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
    "Positive testing the structure of unknown annotation definition: the annotation with #[<byte array>] literal; see grammar"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
    |parserState parseErrorOccured annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
    " the signal is raised by Parser2::ParseError>>raiseRequest but there is no way how to handle its signal"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
    parseErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
            parseErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
                        parseMethod:'annotationWithByteArrayLiteralExample <annotation: #[64 128 192]> |x| x:=1. ^x. '
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
    self assert:parserState errorFlag = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
    self assert:parseErrorOccured = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
     " find the annotations record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
     " check the first annotation defined"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
    self assert:(annotation at:1) = 'annotation:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
    self assert:(arguments at:1) = #[ 64 128 192 ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
    "Created: / 12-01-2010 / 13:35:36 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
testAnnotationWithCharacterLiteral
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
    "Positive testing the structure of unknown annotation definition: the annotation with character literal; see grammar"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
    |parserState parseErrorOccured annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
    " the signal is raised by Parser2::ParseError>>raiseRequest but there is no way how to handle its signal"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
    parseErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
            parseErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
                        parseMethod:'annotationWithCharacterLiteralExample <annotation: $A> |x| x:=1. ^x. '
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
    self assert:parserState errorFlag = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
    self assert:parseErrorOccured = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
     " find the annotations record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
     " check the first annotation defined"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
    self assert:(annotation at:1) = 'annotation:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
    self assert:(arguments at:1) = $A.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   211
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   212
    "Created: / 12-01-2010 / 13:20:37 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   213
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   214
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
testAnnotationWithFalseLiteral
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
    "Positive testing the structure of unknown annotation definition: the annotation with false literal; see grammar"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
    |parserState parseErrorOccured annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   221
    " the signal is raised by Parser2::ParseError>>raiseRequest but there is no way how to handle its signal"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
    parseErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   225
            parseErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
                        parseMethod:'annotationWithFalseLiteralExample <annotation: false> |x| x:=1. ^x. '
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
    self assert:parserState errorFlag = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
    self assert:parseErrorOccured = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
     " find the annotations record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
     " check the first annotation defined"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
    self assert:(annotation at:1) = 'annotation:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
    self assert:(arguments at:1) = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
    "Created: / 12-01-2010 / 13:13:26 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
testAnnotationWithInvalidArgument
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
    "Negative testing the structure of unknown annotation definition: the annotation with the non-literal argument; see grammar"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
    |parserState parseErrorOccured|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   257
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   258
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   259
    parseErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   260
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   261
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   262
            parseErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   263
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   264
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   265
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   266
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   267
                        parseMethod:'annotationWithInvalidArgumentExample <annotation: annotation:> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   268
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   269
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   270
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   271
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   272
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   273
    self assert:parserState errorFlag = true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   274
    self assert:parseErrorOccured = true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   275
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   276
    "Created: / 12-01-2010 / 13:48:48 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   277
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   278
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   279
testAnnotationWithInvalidContentFollowed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   280
    "Negative testing the structure of unknown annotation definition: the annotation with valid argument followed by invalid content; see grammar"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   281
    "Test Note: based on the previous parser behaviour this type of situation is not considered as serious,
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   282
     it's considered as ignorable, informing requester and proceeding execution"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   283
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   284
    |parserState annotation arguments ignorableErrorOccured|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   285
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   286
    ignorableErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   287
     " create method for annotation testing purpose " " the signal is raised by Parser2::ParseError>>raiseRequest but there is no way how to handle its signal"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   288
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   289
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   290
            ignorableErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   291
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   292
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   293
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   294
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   295
                        parseMethod:'annotationWithInvalidContentFollowedExample <annotation: #argument #argument> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   296
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   297
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   298
     " ignorable error should occured "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   299
    self assert:ignorableErrorOccured = true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   301
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   302
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   303
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   306
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   307
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   308
    self assert:(annotation at:1) = 'annotation:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   309
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   311
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   312
    self assert:(arguments at:1) = #argument.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   313
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   314
    "Created: / 12-01-2010 / 13:52:16 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   315
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   316
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   317
testAnnotationWithKeywordLiteral
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   318
    "Positive testing the structure of unknown annotation definition: the annotation with #<keyword> literal; see grammar"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   319
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
    |parserState parseErrorOccured annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
    " the signal is raised by Parser2::ParseError>>raiseRequest but there is no way how to handle its signal"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
    parseErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   325
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   326
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
            parseErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   328
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   332
                        parseMethod:'annotationWithKeywordLiteralExample <annotation: #equals:> |x| x:=1. ^x. '
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   335
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   336
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   337
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   338
    self assert:parserState errorFlag = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   339
    self assert:parseErrorOccured = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   340
     " find the annotations record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   341
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   342
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   343
     " check the first annotation defined"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   344
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   345
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   346
    self assert:(annotation at:1) = 'annotation:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   347
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   348
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   349
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   350
    self assert:(arguments at:1) = #equals:.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   351
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   352
    "Created: / 12-01-2010 / 13:30:47 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   353
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   354
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   355
testAnnotationWithMultiKeywordLiteral
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   356
    "Positive testing the structure of unknown annotation definition: the annotation with #<multikeyword> literal; see grammar"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   357
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   358
    |parserState parseErrorOccured annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   359
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   360
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   361
    " the signal is raised by Parser2::ParseError>>raiseRequest but there is no way how to handle its signal"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   362
    parseErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   363
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   364
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   365
            parseErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   366
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   367
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   368
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   369
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   370
                        parseMethod:'annotationWithMultiKeywordLiteralExample <annotation: #equals:from:> |x| x:=1. ^x. '
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   371
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   372
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   373
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   374
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   375
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   376
    self assert:parserState errorFlag = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   377
    self assert:parseErrorOccured = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   378
     " find the annotations record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   379
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   380
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   381
     " check the first annotation defined"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   382
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   383
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   384
    self assert:(annotation at:1) = 'annotation:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   385
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   386
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   387
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   388
    self assert:(arguments at:1) = #equals:from:.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   389
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   390
    "Created: / 12-01-2010 / 13:31:41 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   391
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   392
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   393
testAnnotationWithNegativeNumberLiteral
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   394
    "Positive testing the structure of unknown annotation definition: the annotation with negative_number literal; see grammar"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   395
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   396
    |parserState parseErrorOccured annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   397
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   398
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   399
    " the signal is raised by Parser2::ParseError>>raiseRequest but there is no way how to handle its signal"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   400
    parseErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   401
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   402
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   403
            parseErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   404
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   405
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   406
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   407
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   408
                        parseMethod:'annotationWithNegativeNumberLiteralExample <annotation: -123> |x| x:=1. ^x. '
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   409
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   410
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   411
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   412
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   413
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   414
    self assert:parserState errorFlag = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   415
    self assert:parseErrorOccured = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   416
     " find the annotations record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   417
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   418
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   419
     " check the first annotation defined"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   420
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   421
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   422
    self assert:(annotation at:1) = 'annotation:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   423
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   424
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   425
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   426
    self assert:(arguments at:1) = -123.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   427
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   428
    "Created: / 12-01-2010 / 13:18:46 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   429
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   430
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   431
testAnnotationWithNilLiteral
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   432
    "Positive testing the structure of unknown annotation definition: the annotation with nil literal; see grammar"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   433
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   434
    |parserState parseErrorOccured annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   435
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   436
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   437
    " the signal is raised by Parser2::ParseError>>raiseRequest but there is no way how to handle its signal"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   438
    parseErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   439
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   440
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   441
            parseErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   442
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   443
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   444
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   445
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   446
                        parseMethod:'annotationWithFalseLiteralExample <annotation: nil> |x| x:=1. ^x. '
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   447
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   448
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   449
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   450
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   451
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   452
    self assert:parserState errorFlag = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   453
    self assert:parseErrorOccured = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   454
     " find the annotations record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   455
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   456
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   457
     " check the first annotation defined"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   458
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   459
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   460
    self assert:(annotation at:1) = 'annotation:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   461
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   462
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   463
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   464
    self assert:(arguments at:1) isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   465
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   466
    "Created: / 12-01-2010 / 13:13:59 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   467
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   468
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   469
testAnnotationWithNumberLiteral
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   470
    "Positive testing the structure of unknown annotation definition: the annotation with number literal; see grammar"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   471
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   472
    |parserState parseErrorOccured annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   473
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   474
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   475
    " the signal is raised by Parser2::ParseError>>raiseRequest but there is no way how to handle its signal"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   476
    parseErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   477
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   478
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   479
            parseErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   480
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   481
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   482
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   483
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   484
                        parseMethod:'annotationWithNumberLiteralExample <annotation: 123> |x| x:=1. ^x. '
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   485
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   486
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   487
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   488
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   489
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   490
    self assert:parserState errorFlag = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   491
    self assert:parseErrorOccured = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   492
     " find the annotations record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   493
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   494
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   495
     " check the first annotation defined"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   496
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   497
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   498
    self assert:(annotation at:1) = 'annotation:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   499
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   500
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   501
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   502
    self assert:(arguments at:1) = 123.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   503
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   504
    "Created: / 12-01-2010 / 13:18:15 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   505
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   506
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   507
testAnnotationWithStringLiteral
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   508
    "Positive testing the structure of unknown annotation definition: the annotation with string literal; see grammar"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   509
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   510
    |parserState parseErrorOccured annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   511
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   512
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   513
    " the signal is raised by Parser2::ParseError>>raiseRequest but there is no way how to handle its signal"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   514
    parseErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   515
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   516
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   517
            parseErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   518
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   519
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   520
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   521
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   522
                        parseMethod:'annotationWithCharacterLiteralExample <annotation: ''Hello world!!''> |x| x:=1. ^x. '
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   523
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   524
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   525
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   526
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   527
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   528
    self assert:parserState errorFlag = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   529
    self assert:parseErrorOccured = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   530
     " find the annotations record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   531
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   532
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   533
     " check the first annotation defined"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   534
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   535
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   536
    self assert:(annotation at:1) = 'annotation:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   537
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   538
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   539
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   540
    self assert:(arguments at:1) = 'Hello world!!'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   541
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   542
    "Created: / 12-01-2010 / 13:21:43 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   543
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   544
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   545
testAnnotationWithSymbolLiteral
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   546
    "Positive testing the structure of unknown annotation definition: the annotation with #<characters> | #<name> literal; see grammar"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   547
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   548
    |parserState parseErrorOccured annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   549
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   550
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   551
    " the signal is raised by Parser2::ParseError>>raiseRequest but there is no way how to handle its signal"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   552
    parseErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   553
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   554
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   555
            parseErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   556
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   557
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   558
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   559
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   560
                        parseMethod:'annotationWithSymbolLiteralExample <annotation: #symbol> |x| x:=1. ^x. '
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   561
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   562
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   563
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   564
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   565
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   566
    self assert:parserState errorFlag = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   567
    self assert:parseErrorOccured = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   568
     " find the annotations record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   569
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   570
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   571
     " check the first annotation defined"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   572
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   573
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   574
    self assert:(annotation at:1) = 'annotation:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   575
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   576
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   577
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   578
    self assert:(arguments at:1) = #symbol.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   579
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   580
    "Created: / 12-01-2010 / 13:26:54 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   581
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   582
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   583
testAnnotationWithSymbolLiteral2
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   584
    "Positive testing the structure of unknown annotation definition: the annotation with #<characters> | #<name> literal; see grammar"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   585
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   586
    |parserState parseErrorOccured annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   587
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   588
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   589
    " the signal is raised by Parser2::ParseError>>raiseRequest but there is no way how to handle its signal"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   590
    parseErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   591
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   592
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   593
            parseErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   594
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   595
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   596
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   597
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   598
                        parseMethod:'annotationWithSymbolLiteralExample <annotation: symbol> |x| x:=1. ^x. '
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   599
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   600
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   601
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   602
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   603
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   604
    self assert:parserState errorFlag = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   605
    self assert:parseErrorOccured = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   606
     " find the annotations record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   607
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   608
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   609
     " check the first annotation defined"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   610
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   611
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   612
    self assert:(annotation at:1) = 'annotation:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   613
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   614
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   615
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   616
    self assert:(arguments at:1) = #symbol.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   617
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   618
    "Created: / 11-07-2010 / 23:00:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   619
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   620
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   621
testAnnotationWithTrueLiteral
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   622
    "Positive testing the structure of unknown annotation definition: the annotation with true literal; see grammar"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   623
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   624
    |parserState parseErrorOccured annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   625
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   626
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   627
    " the signal is raised by Parser2::ParseError>>raiseRequest but there is no way how to handle its signal"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   628
    parseErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   629
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   630
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   631
            parseErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   632
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   633
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   634
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   635
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   636
                        parseMethod:'annotationWithTrueLiteralExample <annotation: true> |x| x:=1. ^x. '
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   637
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   638
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   639
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   640
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   641
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   642
    self assert:parserState errorFlag = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   643
    self assert:parseErrorOccured = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   644
     " find the annotations record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   645
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   646
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   647
     " check the first annotation defined"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   648
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   649
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   650
    self assert:(annotation at:1) = 'annotation:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   651
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   652
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   653
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   654
    self assert:(arguments at:1) = true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   655
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   656
    "Created: / 12-01-2010 / 13:11:22 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   657
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   658
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   659
testCompoundAnnotationLiteral
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   660
    "Positive testing the structure of unknown annotation definition: the annotation is compound of more keywords defining the annotation type; see grammar"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   661
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   662
    |parserState parseErrorOccured annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   663
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   664
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   665
    " the signal is raised by Parser2::ParseError>>raiseRequest but there is no way how to handle its signal"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   666
    parseErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   667
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   668
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   669
            parseErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   670
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   671
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   672
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   673
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   674
                        parseMethod:'compoundAnnotationLiteralExample <annotation: true alt: false> |x| x:=1. ^x. '
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   675
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   676
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   677
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   678
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   679
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   680
    self assert:parserState errorFlag = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   681
    self assert:parseErrorOccured = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   682
     " find the annotations record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   683
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   684
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   685
     " check the first annotation defined"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   686
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   687
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   688
    self assert:(annotation at:1) = 'annotation:alt:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   689
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   690
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   691
    self assert:arguments size = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   692
    self assert:(arguments at:1) = true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   693
    self assert:(arguments at:2) = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   694
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   695
    "Created: / 12-01-2010 / 13:47:00 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   696
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   697
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   698
testDislocationAfterMethodBody
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   699
    "Negative testing the location of annotation definition: the annotation is situated after MethodSequenceNode; see grammar"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   700
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   701
    |parserState parseErrorOccured|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   702
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   703
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   704
    " the signal is raised by Parser2::ParseError>>raiseRequest but there is no way how to handle its signal"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   705
    parseErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   706
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   707
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   708
            parseErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   709
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   710
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   711
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   712
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   713
                        parseMethod:'dislocationInMethodHeaderExample |x| x:=1. ^x. <annotation: #argument>'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   714
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   715
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   716
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   717
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   718
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   719
    self assert:parserState errorFlag = true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   720
    self assert:parseErrorOccured = true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   721
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   722
    "Created: / 12-01-2010 / 12:42:03 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   723
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   724
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   725
testDislocationInMethodBody
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   726
    "Negative testing the location of annotation definition: the annotation is situated in MethodSequenceNode; see grammar"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   727
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   728
    |parserState parseErrorOccured|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   729
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   730
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   731
    parseErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   732
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   733
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   734
            parseErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   735
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   736
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   737
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   738
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   739
                        parseMethod:'dislocationInMethodHeaderExample |x| <annotation: #argument> x:=1. ^x.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   740
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   741
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   742
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   743
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   744
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   745
    self assert:parserState errorFlag = true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   746
    self assert:parseErrorOccured = true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   747
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   748
    "Created: / 12-01-2010 / 12:31:24 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   749
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   750
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   751
testDislocationInMethodHeader
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   752
    "Negative testing the location of annotation definition: the annotation is situated before <name>|BinaryMethodName|KeywordMethodName; see grammar"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   753
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   754
    |parserState parseErrorOccured|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   755
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   756
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   757
    " the signal is raised by Parser2::ParseError>>raiseRequest but there is no way how to handle its signal"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   758
    parseErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   759
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   760
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   761
            parseErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   762
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   763
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   764
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   765
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   766
                        parseMethod:'<annotation: #argument> dislocationInMethodHeaderExample ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   767
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   768
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   769
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   770
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   771
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   772
    self assert:parserState errorFlag = true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   773
    self assert:parseErrorOccured = true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   774
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   775
    "Created: / 12-01-2010 / 12:29:46 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   776
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   777
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   778
testEmptyAnnotation
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   779
    "Positive testing the structure of unknown annotation definition: the empty annotation; see grammar"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   780
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   781
    |parserState parseErrorOccured annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   782
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   783
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   784
    " the signal is raised by Parser2::ParseError>>raiseRequest but there is no way how to handle its signal"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   785
    parseErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   786
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   787
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   788
            parseErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   789
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   790
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   791
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   792
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   793
                        parseMethod:'emptyAnnotationExample <annotation> |x| x:=1. ^x. '
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   794
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   795
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   796
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   797
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   798
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   799
    self assert:parserState errorFlag = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   800
    self assert:parseErrorOccured = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   801
     " find the annotations record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   802
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   803
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   804
     " check the first annotation defined"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   805
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   806
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   807
    self assert:(annotation at:1) = 'annotation'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   808
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   809
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   810
    self assert:arguments size = 0.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   811
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   812
    "Created: / 12-01-2010 / 13:08:15 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   813
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   814
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   815
testMultipleAnnotationsInMethod
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   816
    "Positive testing the multiple annotation definition and theirs order: the annotations are situated in defined location; see grammar"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   817
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   818
    |parserState parseErrorOccured annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   819
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   820
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   821
    parseErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   822
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   823
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   824
            parseErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   825
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   826
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   827
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   828
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   829
                        parseMethod:'multipleAnnotationsInMethodExample <annotation1: #argument> <annotation2: #argument> |x| x:=1. ^x.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   830
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   831
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   832
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   833
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   834
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   835
    self assert:parserState errorFlag = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   836
    self assert:parseErrorOccured = false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   837
     " find the annotations record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   838
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   839
    self assert:(parserState annotations size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   840
     " check the first annotation defined"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   841
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   842
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   843
    self assert:(annotation at:1) = 'annotation1:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   844
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   845
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   846
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   847
    self assert:(arguments at:1) = #argument.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   848
     " check the second annotation defined"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   849
    annotation := parserState annotations at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   850
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   851
    self assert:(annotation at:1) = 'annotation2:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   852
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   853
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   854
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   855
    self assert:(arguments at:1) = #argument.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   856
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   857
    "Created: / 12-01-2010 / 12:47:57 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   858
! !
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   859
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   860
!ParserTests methodsFor:'tests - context'!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   861
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   862
testContextWithInvalidArgument
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   863
    "Negative testing the context annotation structure for the no-literal argument"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   864
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   865
    |parserState|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   866
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   867
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   868
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   869
                parseMethod:'contextWithNoArgumentsExample <context: context:> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   870
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   871
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   872
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   873
    self assert:parserState == #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   874
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   875
    "Created: / 11-01-2010 / 22:50:54 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   876
    "Modified: / 01-07-2010 / 16:30:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   877
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   878
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   879
testContextWithInvalidContentFollowed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   880
    "Negative testing the context annotation structure 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   881
     with valid argument followed by invalid content (following literal): <context: #return #return>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   882
    "Test Note: based on the previous parser behaviour this type of situation is not considered as serious,
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   883
     it's considered as ignorable, informing requester and proceeding execution"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   884
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   885
    |parserState annotation arguments ignorableErrorOccured|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   886
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   887
    ignorableErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   888
     " create method for annotation testing purpose " " the signal is raised by Parser2::ParseError>>raiseRequest but there is no way how to handle its signal"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   889
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   890
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   891
            ignorableErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   892
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   893
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   894
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   895
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   896
                        parseMethod:'contextWithInvalidContentFollowedExample <context: #return #return> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   897
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   898
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   899
     " ignorable error should occured "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   900
    self should:ignorableErrorOccured.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   901
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   902
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   903
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   904
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   905
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   906
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   907
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   908
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   909
    self assert:(annotation at:1) = 'context:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   910
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   911
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   912
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   913
    self assert:(arguments at:1) = #return.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   914
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   915
    "Created: / 09-01-2010 / 13:14:26 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   916
    "Modified: / 11-01-2010 / 23:15:15 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   917
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   918
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   919
testContextWithNoArguments
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   920
    "Negative testing the context annotation structure for the no argument annotation structure <context>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   921
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   922
    |parserState annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   923
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   924
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   925
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   926
                parseMethod:'contextWithNoArgumentsExample <context> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   927
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   928
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   929
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   930
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   931
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   932
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   933
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   934
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   935
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   936
    self assert:(annotation at:1) = 'context'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   937
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   938
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   939
    self assert:arguments size = 0.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   940
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   941
    "Created: / 09-01-2010 / 12:41:53 / Pavel Pospíchal <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   942
    "Modified: / 11-01-2010 / 23:15:24 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   943
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   944
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   945
testStxContext
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   946
    "Testing the context annotation structure used in St/X virtual machine"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   947
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   948
    |parserState annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   949
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   950
    " create method for annotation testing purpose : GenericException>>raiseRequest"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   951
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   952
                parseMethod:'stxContextExample <context: #return> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   953
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   954
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   955
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   956
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   957
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   958
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   959
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   960
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   961
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   962
    self assert:(annotation at:1) = 'context:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   963
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   964
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   965
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   966
    self assert:(arguments at:1) = #return.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   967
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   968
    "Created: / 29-11-2009 / 09:37:38 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   969
    "Modified: / 11-01-2010 / 22:33:21 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   970
! !
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   971
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   972
!ParserTests methodsFor:'tests - exception'!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   973
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   974
testExceptionWithInvalidArgument
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   975
    "Negative testing the exception annotation structure for the no-literal argument"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   976
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   977
    |parserState|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   978
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   979
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   980
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   981
                parseMethod:'exceptionWithInvalidArgumentExample <exception: exception:> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   982
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   983
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   984
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   985
    self assert:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   986
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   987
    "Created: / 11-01-2010 / 22:57:43 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   988
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   989
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   990
testExceptionWithInvalidContentFollowed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   991
    "Negative testing the exception annotation structure 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   992
     with valid argument followed by invalid content (following literal): <exception: #handle #handle>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   993
    "Test Note: based on the previous parser behaviour this type of situation is not considered as serious,
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   994
     it's considered as ignorable, informing requester and proceeding execution"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   995
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   996
    |parserState annotation arguments ignorableErrorOccured|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   997
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   998
    ignorableErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   999
     " create method for annotation testing purpose " " the signal is raised by Parser2::ParseError>>raiseRequest but there is no way how to handle its signal"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1000
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1001
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1002
            ignorableErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1003
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1004
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1005
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1006
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1007
                        parseMethod:'exceptionWithInvalidContentFollowedExample <exception: #handle #handle> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1008
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1009
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1010
     " ignorable error should occured "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1011
    self should:ignorableErrorOccured.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1012
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1013
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1014
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1015
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1016
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1017
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1018
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1019
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1020
    self assert:(annotation at:1) = 'exception:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1021
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1022
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1023
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1024
    self assert:(arguments at:1) = #handle.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1025
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1026
    "Created: / 11-01-2010 / 23:02:28 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1027
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1028
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1029
testExceptionWithNoArguments
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1030
    "Negative testing the exception annotation structure for the no argument annotation structure <exception>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1031
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1032
    |parserState annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1033
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1034
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1035
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1036
                parseMethod:'exceptionWithNoArgumentsExample <exception> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1037
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1038
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1039
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1040
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1041
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1042
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1043
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1044
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1045
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1046
    self assert:(annotation at:1) = 'exception'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1047
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1048
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1049
    self assert:arguments size = 0.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1050
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1051
    "Created: / 11-01-2010 / 23:06:31 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1052
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1053
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1054
testSt80HandleException
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1055
    "Testing the exception annotation structure used in St-80 virtual machine"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1056
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1057
    |parserState annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1058
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1059
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1060
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1061
                parseMethod:'st80HandleExceptionExample <exception: #handle> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1062
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1063
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1064
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1065
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1066
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1067
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1068
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1069
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1070
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1071
    self assert:(annotation at:1) = 'exception:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1072
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1073
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1074
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1075
    self assert:(arguments at:1) = #handle.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1076
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1077
    "Created: / 29-11-2009 / 09:36:20 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1078
    "Modified: / 07-12-2009 / 01:38:31 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1079
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1080
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1081
testSt80RaiseException
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1082
    "Testing the exception annotation structure used in St-80 virtual machine"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1083
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1084
    |parserState annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1085
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1086
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1087
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1088
                parseMethod:'st80RaiseExceptionExample <exception: #raise> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1089
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1090
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1091
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1092
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1093
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1094
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1095
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1096
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1097
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1098
    self assert:(annotation at:1) = 'exception:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1099
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1100
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1101
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1102
    self assert:(arguments at:1) = #raise.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1103
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1104
    "Created: / 29-11-2009 / 22:36:00 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1105
    "Modified: / 12-12-2009 / 21:39:21 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1106
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1107
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1108
testSt80UnwindException
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1109
    "Testing the exception annotation structure used in St-80 virtual machine"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1110
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1111
    |parserState annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1112
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1113
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1114
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1115
                parseMethod:'st80UnwindExceptionExample <exception: #unwind> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1116
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1117
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1118
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1119
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1120
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1121
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1122
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1123
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1124
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1125
    self assert:(annotation at:1) = 'exception:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1126
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1127
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1128
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1129
    self assert:(arguments at:1) = #unwind.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1130
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1131
    "Created: / 29-11-2009 / 22:36:49 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1132
    "Modified: / 12-12-2009 / 21:39:35 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1133
! !
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1134
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1135
!ParserTests methodsFor:'tests - external function'!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1136
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1137
testDolphinExternalFunctionByStdcall
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1138
    "Testing the external function annotation structure"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1139
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1140
    |parserState annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1141
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1142
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1143
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1144
                parseMethod:'dolphinExternalFunctionByStdcallExample <stdcall: ''hresult CloseThemeData handle''> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1145
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1146
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1147
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1148
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1149
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1150
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1151
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1152
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1153
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1154
    self assert:(annotation at:1) = 'stdcall:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1155
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1156
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1157
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1158
    self assert:(arguments at:1) = 'hresult CloseThemeData handle'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1159
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1160
    "Created: / 29-11-2009 / 09:50:11 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1161
    "Modified: / 12-01-2010 / 11:56:15 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1162
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1163
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1164
testSqueakExternalFunctionByApicall
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1165
    "Testing the external function annotation structure"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1166
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1167
    |parserState annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1168
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1169
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1170
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1171
                parseMethod:'squeakExternalFunctionByApicallExample <apicall: ''long GetCurrentProcessId (void)'' module: ''kernel32.dll''> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1172
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1173
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1174
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1175
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1176
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1177
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1178
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1179
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1180
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1181
    self assert:(annotation at:1) = 'apicall:module:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1182
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1183
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1184
    self assert:arguments size = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1185
    self assert:(arguments at:1) = 'long GetCurrentProcessId (void)'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1186
    self assert:(arguments at:2) = 'kernel32.dll'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1187
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1188
    "Created: / 29-11-2009 / 09:49:04 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1189
    "Modified: / 11-01-2010 / 23:29:51 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1190
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1191
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1192
testSqueakExternalFunctionByCdecl
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1193
    "Testing the external function annotation structure"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1194
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1195
    |parserState annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1196
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1197
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1198
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1199
                parseMethod:'squeakExternalFunctionByCdeclExample <cdecl: ''long fstat (long MacStat* )'' module: ''libc.dylib''> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1200
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1201
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1202
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1203
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1204
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1205
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1206
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1207
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1208
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1209
    self assert:(annotation at:1) = 'cdecl:module:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1210
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1211
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1212
    self assert:arguments size = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1213
    self assert:(arguments at:1) = 'long fstat (long MacStat* )'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1214
    self assert:(arguments at:2) = 'libc.dylib'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1215
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1216
    "Created: / 29-11-2009 / 09:49:36 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1217
    "Modified: / 11-01-2010 / 23:18:04 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1218
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1219
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1220
testStVExternalFunctionByApi
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1221
    "Testing the external function annotation structure"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1222
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1223
    |parserState annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1224
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1225
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1226
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1227
                parseMethod:'stVExternalFunctionByApiExample <api: ''_func _int32 void''> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1228
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1229
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1230
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1231
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1232
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1233
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1234
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1235
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1236
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1237
    self assert:(annotation at:1) = 'api:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1238
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1239
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1240
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1241
    self assert:(arguments at:1) = '_func _int32 void'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1242
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1243
    "Created: / 29-11-2009 / 09:47:49 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1244
    "Modified: / 12-12-2009 / 22:08:06 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1245
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1246
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1247
testStVExternalFunctionByOle
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1248
    "Testing the external function annotation structure"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1249
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1250
    |parserState annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1251
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1252
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1253
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1254
                parseMethod:'stVExternalFunctionByOleExample <ole: ''return varchar2 varchar2''> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1255
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1256
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1257
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1258
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1259
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1260
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1261
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1262
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1263
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1264
    self assert:(annotation at:1) = 'ole:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1265
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1266
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1267
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1268
    self assert:(arguments at:1) = 'return varchar2 varchar2'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1269
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1270
    "Created: / 29-11-2009 / 09:48:25 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1271
    "Modified: / 10-12-2009 / 11:18:29 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1272
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1273
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1274
testVwExternalFunctionByC
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1275
    "Testing the external function annotation structure"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1276
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1277
    |parserState annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1278
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1279
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1280
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1281
                parseMethod:'vwExternalFunctionByCExample <c: ''void func(int x)''> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1282
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1283
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1284
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1285
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1286
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1287
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1288
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1289
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1290
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1291
    self assert:(annotation at:1) = 'c:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1292
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1293
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1294
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1295
    self assert:(arguments at:1) = 'void func(int x)'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1296
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1297
    "Created: / 29-11-2009 / 09:46:31 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1298
    "Modified: / 12-12-2009 / 22:08:24 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1299
! !
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1300
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1301
!ParserTests methodsFor:'tests - primitive'!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1302
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1303
testNewSTXPrimitive
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1304
    "Testing the primitive annotation structure used in St/X virtual machine"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1305
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1306
    |parserState annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1307
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1308
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1309
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1310
                parseMethod:'newSTXPrimitiveExample <primitive> ^self'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1311
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1312
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1313
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1314
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1315
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1316
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1317
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1318
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1319
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1320
    self assert:(annotation at:1) = 'primitive'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1321
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1322
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1323
    self assert:arguments size = 0.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1324
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1325
    "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1326
     The primitive specifies method as logic which needs special handling
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1327
     before setting up a stack frame for the method to make it run. The example structure
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1328
     of primitive annotation is following:
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1329
        <primitive>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1330
    "Created: / 29-11-2009 / 09:34:36 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1331
    "Modified: / 06-12-2009 / 21:46:35 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1332
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1333
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1334
testPrimitiveWithInvalidArgument
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1335
    "Negative testing the context annotation structure for the no-literal argument"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1336
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1337
    |parserState|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1338
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1339
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1340
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1341
                parseMethod:'primitiveWithInvalidArgumentExample <primitive: primitive:> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1342
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1343
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1344
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1345
    self assert:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1346
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1347
    "Created: / 12-01-2010 / 08:40:28 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1348
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1349
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1350
testPrimitiveWithInvalidContentFollowed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1351
    "Negative testing the primitive annotation structure 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1352
     with valid argument followed by invalid content (following literal): <context: #return #return>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1353
    "Test Note: based on the previous parser behaviour this type of situation is not considered as serious,
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1354
     it's considered as ignorable, informing requester and proceeding execution"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1355
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1356
    |parserState annotation arguments ignorableErrorOccured|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1357
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1358
    ignorableErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1359
     " create method for annotation testing purpose " " the signal is raised by Parser2::ParseError>>raiseRequest but there is no way how to handle its signal"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1360
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1361
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1362
            ignorableErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1363
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1364
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1365
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1366
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1367
                        parseMethod:'primitiveWithInvalidContentFollowedExample <primitive: ''test'' ''test''> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1368
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1369
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1370
     " ignorable error should occured "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1371
    self should:ignorableErrorOccured.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1372
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1373
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1374
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1375
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1376
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1377
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1378
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1379
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1380
    self assert:(annotation at:1) = 'primitive:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1381
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1382
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1383
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1384
    self assert:(arguments at:1) = 'test'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1385
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1386
    "Created: / 12-01-2010 / 08:42:01 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1387
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1388
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1389
testSqueakPrimitive
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1390
    "Testing the named primitive annotation structure used in Squeak virtual machine"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1391
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1392
    |parserState annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1393
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1394
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1395
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1396
                parseMethod:'squeakPrimitiveExample <primitive: ''test''> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1397
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1398
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1399
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1400
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1401
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1402
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1403
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1404
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1405
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1406
    self assert:(annotation at:1) = 'primitive:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1407
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1408
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1409
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1410
    self assert:(arguments at:1) = 'test'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1411
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1412
    "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1413
     The named primitive specifies identifier value used to look up logic which is processed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1414
     before setting up a stack frame for the method to make it run. The example structure
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1415
     of named primitive annotation is following:
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1416
        <primitive: test>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1417
    "Created: / 29-11-2009 / 09:34:05 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1418
    "Modified: / 07-12-2009 / 01:29:29 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1419
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1420
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1421
testSt80Primitive
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1422
    "Testing the numbered primitive annotation structure used in ST-80 virtual machine"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1423
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1424
    |parserState annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1425
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1426
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1427
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1428
                parseMethod:'st80PrimitiveExample <primitive: 1> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1429
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1430
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1431
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1432
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1433
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1434
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1435
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1436
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1437
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1438
    self assert:(annotation at:1) = 'primitive:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1439
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1440
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1441
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1442
    self assert:(arguments at:1) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1443
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1444
    "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1445
     The numbered primitive specifies index value used to look up logic which is processed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1446
     before setting up a stack frame for the method to make it run. The example structure
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1447
     of numbered primitive annotation is following:
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1448
        <primitive: 1>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1449
    "Created: / 29-11-2009 / 09:33:18 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1450
    "Modified: / 07-12-2009 / 01:20:27 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1451
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1452
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1453
testVAgePrimitive
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1454
    "Testing the named primitive annotation structure used in Visual Age virtual machine"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1455
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1456
    |parserState annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1457
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1458
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1459
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1460
                parseMethod:'vAgePrimitiveExample <primitive: #test> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1461
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1462
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1463
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1464
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1465
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1466
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1467
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1468
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1469
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1470
    self assert:(annotation at:1) = 'primitive:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1471
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1472
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1473
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1474
    self assert:(arguments at:1) = #test.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1475
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1476
    "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1477
     The named primitive specifies identifier value used to look up logic which is processed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1478
     before setting up a stack frame for the method to make it run. The example structure
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1479
     of named primitive annotation is following:
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1480
        <primitive: test>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1481
    "Created: / 29-11-2009 / 09:34:59 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1482
    "Modified: / 12-12-2009 / 22:09:48 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1483
! !
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1484
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1485
!ParserTests methodsFor:'tests - resource'!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1486
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1487
testResourceWithInvalidArgument
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1488
    "Negative testing the context annotation structure for the no-literal argument"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1489
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1490
    |parserState|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1491
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1492
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1493
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1494
                parseMethod:'resourceWithInvalidArgumentExample <resource: resource:> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1495
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1496
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1497
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1498
    self assert:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1499
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1500
    "Created: / 12-01-2010 / 11:28:13 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1501
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1502
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1503
testResourceWithInvalidContentFollowed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1504
    "Negative testing the resource annotation structure 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1505
     with valid argument followed by invalid content (following literal): <resource: #symbol #(array of symbols)>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1506
    "Test Note: based on the previous parser behaviour this type of situation is not considered as serious,
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1507
     it's considered as ignorable, informing requester and proceeding execution"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1508
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1509
    |parserState annotation arguments ignorableErrorOccured|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1510
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1511
    ignorableErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1512
     " create method for annotation testing purpose " " the signal is raised by Parser2::ParseError>>raiseRequest but there is no way how to handle its signal"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1513
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1514
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1515
            ignorableErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1516
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1517
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1518
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1519
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1520
                        parseMethod:'resourceWithInvalidContentFollowedExample <resource: #symbol #(1 2 3)> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1521
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1522
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1523
     " ignorable error should occured "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1524
    self should:ignorableErrorOccured.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1525
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1526
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1527
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1528
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1529
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1530
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1531
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1532
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1533
    self assert:(annotation at:1) = 'resource:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1534
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1535
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1536
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1537
    self assert:(arguments at:1) = #symbol.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1538
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1539
    "Created: / 12-01-2010 / 11:33:22 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1540
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1541
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1542
testResourceWithNoArguments
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1543
    "Negative testing the resource annotation structure for the no argument annotation structure <resource>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1544
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1545
    |parserState annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1546
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1547
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1548
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1549
                parseMethod:'resourceWithNoArgumentsExample <resource> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1550
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1551
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1552
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1553
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1554
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1555
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1556
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1557
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1558
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1559
    self assert:(annotation at:1) = 'resource'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1560
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1561
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1562
    self assert:arguments size = 0.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1563
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1564
    "Created: / 12-01-2010 / 11:35:21 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1565
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1566
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1567
testSingleResourcePragma
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1568
    "Testing the resource annotation structure"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1569
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1570
    |parserState annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1571
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1572
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1573
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1574
                parseMethod:'resourcePragmaExample <resource: #skipInDebuggersWalkBack> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1575
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1576
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1577
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1578
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1579
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1580
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1581
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1582
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1583
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1584
    self assert:(annotation at:1) = 'resource:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1585
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1586
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1587
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1588
    self assert:(arguments at:1) = #skipInDebuggersWalkBack.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1589
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1590
    "Created: / 29-11-2009 / 09:40:17 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1591
    "Modified: / 12-12-2009 / 22:10:53 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1592
! !
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1593
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1594
!ParserTests methodsFor:'tests - sysprim'!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1595
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1596
testSysPrimitiveWithInvalidArgument
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1597
    "Negative testing the context annotation structure for the no-literal argument"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1598
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1599
    |parserState|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1600
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1601
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1602
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1603
                parseMethod:'sysPrimitiveWithInvalidArgumentExample <sysprim: sysprim:> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1604
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1605
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1606
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1607
    self assert:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1608
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1609
    "Created: / 12-01-2010 / 11:49:19 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1610
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1611
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1612
testSysPrimitiveWithInvalidContentFollowed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1613
    "Negative testing the sysprim annotation structure 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1614
     with valid argument followed by invalid content (following literal):  <sysprim: #none #none>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1615
    "Test Note: based on the previous parser behaviour this type of situation is not considered as serious,
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1616
     it's considered as ignorable, informing requester and proceeding execution"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1617
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1618
    |parserState annotation arguments ignorableErrorOccured|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1619
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1620
    ignorableErrorOccured := false.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1621
     " create method for annotation testing purpose " " the signal is raised by Parser2::ParseError>>raiseRequest but there is no way how to handle its signal"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1622
    self parserClass parseErrorSignal 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1623
        handle:[:ex | 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1624
            ignorableErrorOccured := true.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1625
            ex proceed
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1626
        ]
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1627
        do:[
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1628
            parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1629
                        parseMethod:'sysPrimitiveWithInvalidContentFollowedExample <sysprim: #none #none> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1630
                        in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1631
        ].
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1632
     " ignorable error should occured "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1633
    self should:ignorableErrorOccured.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1634
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1635
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1636
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1637
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1638
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1639
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1640
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1641
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1642
    self assert:(annotation at:1) = 'sysprim:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1643
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1644
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1645
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1646
    self assert:(arguments at:1) = #none.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1647
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1648
    "Created: / 12-01-2010 / 11:51:14 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1649
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1650
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1651
testSysPrimitiveWithNoArguments
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1652
    "Negative testing the exception annotation structure for the no argument annotation structure <sysprim>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1653
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1654
    |parserState annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1655
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1656
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1657
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1658
                parseMethod:'sysPrimitiveWithNoArgumentsExample <sysprim> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1659
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1660
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1661
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1662
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1663
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1664
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1665
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1666
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1667
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1668
    self assert:(annotation at:1) = 'sysprim'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1669
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1670
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1671
    self assert:arguments size = 0
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1672
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1673
    "Created: / 12-01-2010 / 11:52:40 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1674
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1675
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1676
testVAgeSysPrimitive
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1677
    "Testing the sysprim annotation structure"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1678
    
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1679
    |parserState annotation arguments|
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1680
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1681
    " create method for annotation testing purpose "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1682
    parserState := self parserClass 
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1683
                parseMethod:'vAgeSysPrimitiveExample <sysprim: #none> ^self.'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1684
                in:mockClass.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1685
     " check the parser result "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1686
    self deny:parserState = #Error.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1687
    self deny:parserState isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1688
     " find the annotation record in parser state "
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1689
    self deny:parserState annotations isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1690
    self assert:(parserState annotations size) = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1691
    annotation := parserState annotations at:1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1692
    self assert:(annotation size) = 2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1693
    self assert:(annotation at:1) = 'sysprim:'.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1694
    arguments := annotation at:2.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1695
    self deny:arguments isNil.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1696
    self assert:arguments size = 1.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1697
    self assert:(arguments at:1) = #none.
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1698
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1699
    "Created: / 29-11-2009 / 09:39:11 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1700
    "Modified: / 12-12-2009 / 22:11:28 / pp <Pavel.Pospichal@gmail.com>"
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1701
! !
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1702
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1703
!ParserTests class methodsFor:'documentation'!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1704
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1705
version_CVS
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1706
    ^ '$Header$'
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1707
!
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1708
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1709
version_SVN
581
Claus Gittinger <cg@exept.de>
parents: 580
diff changeset
  1710
    ^ '§ Id: ParserTests.st 2014 2010-07-12 08:10:01Z vranyj1  §'
580
1b6e2976cb08 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1711
! !