tests/PPPredicateTest.st
changeset 377 6112a403a52d
parent 376 a2656b27cace
child 379 451b5ae38b72
equal deleted inserted replaced
376:a2656b27cace 377:6112a403a52d
     9 
     9 
    10 
    10 
    11 !PPPredicateTest methodsFor:'private'!
    11 !PPPredicateTest methodsFor:'private'!
    12 
    12 
    13 charactersDo: aBlock
    13 charactersDo: aBlock
    14     "cg: isn't 256 one too many?"
    14 	1 to: 256 do: [ :index | aBlock value: (Character codePoint: index) ]
    15 
       
    16     Smalltalk isSmalltalkX ifTrue:[
       
    17         0 to: 255 do: [ :index | aBlock value: (Character codePoint: index) ]
       
    18     ] ifFalse:[
       
    19         1 to: 256 do: [ :index | aBlock value: (Character codePoint: index) ]
       
    20     ].
       
    21 ! !
    15 ! !
    22 
    16 
    23 !PPPredicateTest methodsFor:'testing'!
    17 !PPPredicateTest methodsFor:'testing'!
    24 
    18 
    25 testOnMessage
    19 testOnMessage
    26 	| block parser |
    20 	| block parser |
    27 	block := [ :char | char = $* ].
    21 	block := [ :char | char = $* ].
    28 	parser := PPPredicateObjectParser on: block message: 'starlet'.
    22 	parser := PPPredicateObjectParser on: block message: 'starlet'.
    29 	self assert: parser block = block.
    23 	self assert: parser block equals: block.
    30 	self assert: parser message = 'starlet'.
    24 	self assert: parser message equals: 'starlet'.
    31 	
    25 	self assertCharacterSets: parser.
       
    26 	self assert: parser parse: '*' to: $*.
       
    27 	self
       
    28 		assert: parser
       
    29 		parse: '**'
       
    30 		to: $*
       
    31 		end: 1.
       
    32 	self assert: parser fail: ''.
       
    33 	self assert: parser fail: '1'.
       
    34 	self assert: parser fail: 'a'
       
    35 ! !
       
    36 
       
    37 !PPPredicateTest methodsFor:'testing-chars'!
       
    38 
       
    39 testBlank
       
    40 	| parser |
       
    41 	parser := #blank asParser.
       
    42 	self assertCharacterSets: parser.
       
    43 	self assert: parser parse: (String with: Character space) to: Character space.
       
    44 	self assert: parser parse: (String with: Character tab) to: Character tab.
       
    45 	self assert: parser fail: ''.
       
    46 	self assert: parser fail: '1'.
       
    47 	self assert: parser fail: (String with: Character cr)
       
    48 !
       
    49 
       
    50 testChar
       
    51 	| parser |
       
    52 	parser := $* asParser.
    32 	self assertCharacterSets: parser.
    53 	self assertCharacterSets: parser.
    33 	self assert: parser parse: '*' to: $*.
    54 	self assert: parser parse: '*' to: $*.
    34 	self assert: parser parse: '**' to: $* end: 1.
    55 	self assert: parser parse: '**' to: $* end: 1.
    35 	self assert: parser fail: ''.
    56 	self assert: parser fail: ''.
    36 	self assert: parser fail: '1'.
    57 	self assert: parser fail: '1'.
    37 	self assert: parser fail: 'a'
    58 	self assert: parser fail: 'a'
    38 ! !
       
    39 
       
    40 !PPPredicateTest methodsFor:'testing-chars'!
       
    41 
       
    42 testBlank
       
    43         | parser cr|
       
    44         parser := #blank asParser.
       
    45         self assertCharacterSets: parser.
       
    46         self assert: parser parse: (String with: Character space) to: Character space.
       
    47         self assert: parser parse: (String with: Character tab) to: Character tab.
       
    48         self assert: parser fail: ''.
       
    49         self assert: parser fail: '1'.
       
    50         cr := Smalltalk isSmalltalkX 
       
    51             ifTrue:[Character return] 
       
    52             ifFalse:[Character cr].
       
    53         self assert: parser fail: (String with: cr)
       
    54 !
       
    55 
       
    56 testChar
       
    57 	| parser |
       
    58 	parser := $* asParser.
       
    59 	self assertCharacterSets: parser.
       
    60 	self assert: parser parse: '*' to: $*.
       
    61 	self assert: parser parse: '**' to: $* end: 1.
       
    62 	self assert: parser fail: ''.
       
    63 	self assert: parser fail: '1'.
       
    64 	self assert: parser fail: 'a'
       
    65 !
    59 !
    66 
    60 
    67 testCr
    61 testCr
    68         | parser cr |
    62 	| parser |
    69 
    63 	parser := #cr asParser.
    70         cr := Smalltalk isSmalltalkX 
    64 	self assertCharacterSets: parser.
    71                 ifTrue:[Character return] 
    65 	self assert: parser parse: (String with: Character cr) to: Character cr
    72                 ifFalse:[Character cr].
       
    73 
       
    74         parser := #cr asParser.
       
    75         self assertCharacterSets: parser.
       
    76         self assert: parser parse: (String with: cr) to: cr
       
    77 !
    66 !
    78 
    67 
    79 testDigit
    68 testDigit
    80 	| parser |
    69 	| parser |
    81 	parser := #digit asParser.
    70 	parser := #digit asParser.
   130 	self assert: parser fail: 'A'.
   119 	self assert: parser fail: 'A'.
   131 	self assert: parser fail: '0'
   120 	self assert: parser fail: '0'
   132 !
   121 !
   133 
   122 
   134 testNewline
   123 testNewline
   135         | parser cr|
   124 	| parser |
   136         cr := Smalltalk isSmalltalkX 
   125 	parser := #newline asParser.
   137                 ifTrue:[Character return] 
   126 	self assertCharacterSets: parser.
   138                 ifFalse:[Character cr].
   127 	self assert: parser parse: (String with: Character cr) to: Character cr.
   139         parser := #newline asParser.
   128 	self assert: parser parse: (String with: Character lf) to: Character lf.
   140         self assertCharacterSets: parser.
   129 	self assert: parser fail: ' '
   141         self assert: parser parse: (String with: cr) to: cr.
       
   142         self assert: parser parse: (String with: Character lf) to: Character lf.
       
   143         self assert: parser fail: ' '
       
   144 !
   130 !
   145 
   131 
   146 testPunctuation
   132 testPunctuation
   147 	| parser |
   133 	| parser |
   148 	parser := #punctuation asParser.
   134 	parser := #punctuation asParser.
   160 	self assertCharacterSets: parser.
   146 	self assertCharacterSets: parser.
   161 	self assert: parser parse: (String with: Character tab) to: Character tab.
   147 	self assert: parser parse: (String with: Character tab) to: Character tab.
   162 	self assert: parser parse: ' ' to: Character space.
   148 	self assert: parser parse: ' ' to: Character space.
   163 	self assert: parser fail: ''.
   149 	self assert: parser fail: ''.
   164 	self assert: parser fail: 'a'
   150 	self assert: parser fail: 'a'
       
   151 !
       
   152 
       
   153 testStartOfLine
       
   154 	| parser |
       
   155 	parser := #startOfLine asParser, #any asParser star.
       
   156 	
       
   157 	self assert: parser parse: 'lorem ipsum'.
       
   158 	
       
   159 	parser := #any asParser, #startOfLine asParser, #any asParser star.
       
   160 	self assert: parser fail: 'lorem ipsum'.
       
   161 	
       
   162 	parser := #startOfLine asParser, #any asParser, #startOfLine asParser, #any asParser star.
       
   163 	self assert: parser parse: String cr, 'lorem ipsum'.
       
   164 	self assert: parser parse: String lf, 'lorem ipsum'.	
       
   165 	self assert: parser fail: String crlf, 'lorem ipsum'.	
       
   166 	
       
   167 	self assert: parser fail: String crlf.
       
   168 	self assert: parser parse: String cr.
       
   169 	self assert: parser parse: String lf.
       
   170 	
       
   171 	parser := #startOfLine asParser, #any asParser, #any asParser, #startOfLine asParser, #any asParser star.
       
   172 	self assert: parser parse: String crlf, 'lorem ipsum'.
       
   173 	self assert: parser parse: String crlf.
   165 !
   174 !
   166 
   175 
   167 testTab
   176 testTab
   168 	| parser |
   177 	| parser |
   169 	parser := #tab asParser.
   178 	parser := #tab asParser.
   246 
   255 
   247 !PPPredicateTest methodsFor:'testing-sequence'!
   256 !PPPredicateTest methodsFor:'testing-sequence'!
   248 
   257 
   249 testSequenceParser
   258 testSequenceParser
   250 	| parser |
   259 	| parser |
   251 	parser := PPPredicateSequenceParser 
   260 	parser := PPPredicateSequenceParser
   252 		on: [ :value | value first isUppercase ] 
   261 		on: [ :value | value first isUppercase ]
   253 		message: 'uppercase 3 letter words'
   262 		message: 'uppercase 3 letter words'
   254 		size: 3.
   263 		size: 3.
   255 	self assert: parser size = 3.
   264 	self assert: parser size equals: 3.
   256 	self assert: parser parse: 'Abc'.
   265 	self assert: parser parse: 'Abc'.
   257 	self assert: parser parse: 'ABc'.
   266 	self assert: parser parse: 'ABc'.
   258 	self assert: parser parse: 'ABC'.
   267 	self assert: parser parse: 'ABC'.
   259 	self assert: parser fail: 'abc'.
   268 	self assert: parser fail: 'abc'.
   260 	self assert: parser fail: 'aBC'.
   269 	self assert: parser fail: 'aBC'.
   261 	self assert: parser fail: 'Ab'.
   270 	self assert: parser fail: 'Ab'.
   262 	
       
   263 	parser := parser negate.
   271 	parser := parser negate.
   264 	self assert: parser size = 3.
   272 	self assert: parser size equals: 3.
   265 	self assert: parser fail: 'Abc'.
   273 	self assert: parser fail: 'Abc'.
   266 	self assert: parser fail: 'ABc'.
   274 	self assert: parser fail: 'ABc'.
   267 	self assert: parser fail: 'ABC'.
   275 	self assert: parser fail: 'ABC'.
   268 	self assert: parser parse: 'abc'.
   276 	self assert: parser parse: 'abc'.
   269 	self assert: parser parse: 'aBC'.
   277 	self assert: parser parse: 'aBC'.