SmallSense__TokenPatternMatcherTests.st
author Stefan Vogel <sv@exept.de>
Mon, 04 Mar 2019 13:09:59 +0100
branchcvs_MAIN
changeset 1085 a22655fd60b5
parent 252 feba6ee5c814
child 374 e65bd2bf892a
permissions -rw-r--r--
#REFACTORING by stefan class: SmallSense::AbstractJavaCompletionEngineSimple changed: #guessTypeOfExpressionBefore:in: fixed shadowed var
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
252
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
     1
"
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
     2
stx:goodies/smallsense - A productivity plugin for Smalltalk/X IDE
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
     3
Copyright (C) 2013-2014 Jan Vrany
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
     4
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
     5
This library is free software; you can redistribute it and/or
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
     6
modify it under the terms of the GNU Lesser General Public
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
     7
License as published by the Free Software Foundation; either
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
     8
version 2.1 of the License. 
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
     9
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    10
This library is distributed in the hope that it will be useful,
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    11
but WITHOUT ANY WARRANTY; without even the implied warranty of
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    13
Lesser General Public License for more details.
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    14
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    15
You should have received a copy of the GNU Lesser General Public
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    16
License along with this library; if not, write to the Free Software
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    17
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    18
"
249
8bc64027b189 Package renamed to stx:goodies/smallsense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 211
diff changeset
    19
"{ Package: 'stx:goodies/smallsense' }"
199
c2d7421cb317 Initial work on token stream matcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
c2d7421cb317 Initial work on token stream matcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
"{ NameSpace: SmallSense }"
c2d7421cb317 Initial work on token stream matcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
202
5c8610dad14c TokenExpression* renamed to TokenPattern*
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 200
diff changeset
    23
Smalltalk::TestCase subclass:#TokenPatternMatcherTests
199
c2d7421cb317 Initial work on token stream matcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
	instanceVariableNames:''
c2d7421cb317 Initial work on token stream matcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
	classVariableNames:''
c2d7421cb317 Initial work on token stream matcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
	poolDictionaries:''
c2d7421cb317 Initial work on token stream matcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
	category:'SmallSense-Tests'
c2d7421cb317 Initial work on token stream matcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
!
c2d7421cb317 Initial work on token stream matcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
252
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    30
!TokenPatternMatcherTests class methodsFor:'documentation'!
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    31
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    32
copyright
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    33
"
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    34
stx:goodies/smallsense - A productivity plugin for Smalltalk/X IDE
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    35
Copyright (C) 2013-2014 Jan Vrany
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    36
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    37
This library is free software; you can redistribute it and/or
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    38
modify it under the terms of the GNU Lesser General Public
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    39
License as published by the Free Software Foundation; either
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    40
version 2.1 of the License. 
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    41
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    42
This library is distributed in the hope that it will be useful,
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    43
but WITHOUT ANY WARRANTY; without even the implied warranty of
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    44
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    45
Lesser General Public License for more details.
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    46
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    47
You should have received a copy of the GNU Lesser General Public
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    48
License along with this library; if not, write to the Free Software
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    49
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    50
"
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    51
! !
feba6ee5c814 Added copyright notice and license information (LGPL2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 249
diff changeset
    52
202
5c8610dad14c TokenExpression* renamed to TokenPattern*
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 200
diff changeset
    53
!TokenPatternMatcherTests methodsFor:'tests'!
200
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 199
diff changeset
    54
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 199
diff changeset
    55
test_01
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 199
diff changeset
    56
203
c70b7351eda6 Changed TokenPatternParser to parse from string rather from literal array.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 202
diff changeset
    57
    | pattern matcher |
200
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 199
diff changeset
    58
203
c70b7351eda6 Changed TokenPatternParser to parse from string rather from literal array.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 202
diff changeset
    59
    pattern := SmallSense::TokenPatternParser parse: '][[:Keyword=do\::]]'.
c70b7351eda6 Changed TokenPatternParser to parse from string rather from literal array.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 202
diff changeset
    60
    matcher := SmallSense::TokenPatternMatcher for: pattern.
200
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 199
diff changeset
    61
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 199
diff changeset
    62
    self assert: (matcher searchStream: (SmallSense::TokenStream on: (Scanner for: '] do:'))).
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 199
diff changeset
    63
    self deny:   (matcher searchStream: (SmallSense::TokenStream on: (Scanner for: 'self matches do:'))).
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 199
diff changeset
    64
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 199
diff changeset
    65
    "Created: / 06-05-2014 / 16:29:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
203
c70b7351eda6 Changed TokenPatternParser to parse from string rather from literal array.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 202
diff changeset
    66
    "Modified: / 09-05-2014 / 16:36:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
200
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 199
diff changeset
    67
!
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 199
diff changeset
    68
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 199
diff changeset
    69
test_02
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 199
diff changeset
    70
203
c70b7351eda6 Changed TokenPatternParser to parse from string rather from literal array.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 202
diff changeset
    71
    | pattern matcher |
200
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 199
diff changeset
    72
204
190357b490fd Allow for spaces in token patterns to increase readibility.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 203
diff changeset
    73
    pattern := SmallSense::TokenPatternParser parse: '\[ ( (\:[[:Identifier:]])+ \| )? \.'.
203
c70b7351eda6 Changed TokenPatternParser to parse from string rather from literal array.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 202
diff changeset
    74
    matcher := SmallSense::TokenPatternMatcher for: pattern.
200
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 199
diff changeset
    75
204
190357b490fd Allow for spaces in token patterns to increase readibility.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 203
diff changeset
    76
    self assert: (matcher searchStream: (SmallSense::TokenStream on: (Scanner for: '[ .'))).
190357b490fd Allow for spaces in token patterns to increase readibility.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 203
diff changeset
    77
    self assert: (matcher searchStream: (SmallSense::TokenStream on: (Scanner for: '[ :arg1 | .'))).
190357b490fd Allow for spaces in token patterns to increase readibility.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 203
diff changeset
    78
    self assert: (matcher searchStream: (SmallSense::TokenStream on: (Scanner for: '[ :arg1 :arg2 | .'))).
190357b490fd Allow for spaces in token patterns to increase readibility.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 203
diff changeset
    79
190357b490fd Allow for spaces in token patterns to increase readibility.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 203
diff changeset
    80
    self deny: (matcher searchStream: (SmallSense::TokenStream on: (Scanner for: '[ :arg1 arg2 | .'))).
200
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 199
diff changeset
    81
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 199
diff changeset
    82
    "Created: / 06-05-2014 / 17:04:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
204
190357b490fd Allow for spaces in token patterns to increase readibility.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 203
diff changeset
    83
    "Modified: / 09-05-2014 / 17:27:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
209
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
    84
!
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
    85
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
    86
test_03a
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
    87
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
    88
    | pattern matcher |
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
    89
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
    90
    pattern := SmallSense::TokenPatternParser parse: '[[:import:]] ( [[:Identifier:]](.[[:Identifier:]])*\.?\*? )?'.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
    91
    matcher := SmallSense::TokenPatternMatcher for: pattern.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
    92
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
    93
    self assert: (matcher searchStream: (SmallSense::TokenStream on: (JavaScanner for: 'import '))).
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
    94
    self assert: (matcher searchStream: (SmallSense::TokenStream on: (JavaScanner for: 'import java.util.ArrayList'))).
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
    95
    self assert: (matcher searchStream: (SmallSense::TokenStream on: (JavaScanner for: 'import java.util.concurent.ArrayList'))).
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
    96
    self assert: (matcher searchStream: (SmallSense::TokenStream on: (JavaScanner for: 'import java.util.ArrayList.*'))).
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
    97
    self assert: (matcher searchStream: (SmallSense::TokenStream on: (JavaScanner for: 'import java.util.ArrayList.'))).
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
    98
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
    99
    "Created: / 14-05-2014 / 16:13:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   100
!
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   101
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   102
test_03b
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   103
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   104
    | pattern stream matcher matches match |
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   105
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   106
    pattern := SmallSense::TokenPatternParser parse: '[[:import:]] ( [[:Identifier:]](.[[:Identifier:]])*\.?\*? )?'.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   107
    matcher := SmallSense::TokenPatternMatcher for: pattern.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   108
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   109
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   110
    stream := SmallSense::TokenStream on: (JavaScanner for: 'import ').
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   111
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   112
    matches := matcher matchesOnStream: stream.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   113
    self assert: matches size == 1.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   114
    match := matches first.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   115
    self assert: match size == 1.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   116
    self assert: match first type == #import.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   117
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   118
    stream reset.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   119
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   120
    matches := matcher matchesOnStream: stream.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   121
    self assert: matches size == 1.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   122
    match := matches first.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   123
    self assert: match size == 1.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   124
    self assert: match first type == #import.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   125
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   126
"/    self assert: (matcher searchStream: (SmallSense::TokenStream on: (JavaScanner for: 'import java.util.ArrayList'))).
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   127
"/    self assert: (matcher searchStream: (SmallSense::TokenStream on: (JavaScanner for: 'import java.util.concurent.ArrayList'))).
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   128
"/    self assert: (matcher searchStream: (SmallSense::TokenStream on: (JavaScanner for: 'import java.util.ArrayList.*'))).
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   129
"/    self assert: (matcher searchStream: (SmallSense::TokenStream on: (JavaScanner for: 'import java.util.ArrayList.'))).
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   130
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   131
    "Created: / 14-05-2014 / 16:15:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   132
!
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   133
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   134
test_03c
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   135
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   136
    | pattern stream matcher matches match |
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   137
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   138
    pattern := SmallSense::TokenPatternParser parse: '[[:import:]] ( [[:Identifier:]](.[[:Identifier:]])*\.?\*? )?'.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   139
    matcher := SmallSense::TokenPatternMatcher for: pattern.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   140
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   141
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   142
    stream := SmallSense::TokenStream on: (JavaScanner for: 'import java.util.ArrayList.*').
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   143
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   144
    matches := matcher matchesOnStream: stream.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   145
    self assert: matches size == 1.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   146
    match := matches first.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   147
    self assert: match size == 8.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   148
    self assert: match first type == #import.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   149
    self assert: match second type == #Identifier.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   150
    self assert: match third type == $..
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   151
    self assert: match last type == $*.
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   152
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   153
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   154
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   155
"/    self assert: (matcher searchStream: (SmallSense::TokenStream on: (JavaScanner for: 'import java.util.ArrayList'))).
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   156
"/    self assert: (matcher searchStream: (SmallSense::TokenStream on: (JavaScanner for: 'import java.util.concurent.ArrayList'))).
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   157
"/    self assert: (matcher searchStream: (SmallSense::TokenStream on: (JavaScanner for: 'import java.util.ArrayList.*'))).
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   158
"/    self assert: (matcher searchStream: (SmallSense::TokenStream on: (JavaScanner for: 'import java.util.ArrayList.'))).
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   159
220fd4240b0f More tests for TokenPatternMatcher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 204
diff changeset
   160
    "Created: / 14-05-2014 / 16:20:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
211
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   161
!
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   162
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   163
test_04a 
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   164
    "Test of cursor special token (CARRET)"
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   165
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   166
    | pattern matcher |
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   167
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   168
    pattern := SmallSense::TokenPatternParser parse: '][[:Keyword=do\::]] [[:CARET:]]'.
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   169
    matcher := SmallSense::TokenPatternMatcher for: pattern.
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   170
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   171
    self assert: (matcher searchStream: (SmallSense::TokenStream on: (Scanner for: '] do: [:each |  ] ') cursor:6 )).
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   172
    self deny: (matcher searchStream: (SmallSense::TokenStream on: (Scanner for: '] do: [:each |  ] ') cursor:8 )).
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   173
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   174
    "Created: / 15-05-2014 / 16:24:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   175
!
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   176
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   177
test_04b 
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   178
    "Test of cursor special token (CARRET)"
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   179
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   180
    | pattern matcher |
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   181
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   182
    pattern := SmallSense::TokenPatternParser parse: '\[ [[:CARET:]] \]'.
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   183
    matcher := SmallSense::TokenPatternMatcher for: pattern.
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   184
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   185
    self assert: (matcher searchStream: (SmallSense::TokenStream on: (Scanner for: '[  ]') cursor:2 )).
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   186
    self deny: (matcher searchStream: (SmallSense::TokenStream on: (Scanner for: '[ :hello') cursor:2 )).
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   187
8d5259c39445 Added support for CARET virtual token generated at cursor position (when provided)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 209
diff changeset
   188
    "Created: / 15-05-2014 / 16:25:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
200
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 199
diff changeset
   189
! !
12d6a2f82d95 Fixed basic token expression matching.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 199
diff changeset
   190