[squeak-dev] The Trunk: ShoutTests-eem.24.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Feb 3 19:40:24 UTC 2015


Eliot Miranda uploaded a new version of ShoutTests to project The Trunk:
http://source.squeak.org/trunk/ShoutTests-eem.24.mcz

==================== Summary ====================

Name: ShoutTests-eem.24
Author: eem
Time: 3 February 2015, 11:40:19.199 am
UUID: c4047776-b743-4f67-96e2-e2fa2d4ec5d2
Ancestors: ShoutTests-MarcusDenker.23

This is a cut-down version of ShoutTests-MarcusDenker.23
that omits SHStyleElementTest since Squeak's
Shout doesn't include SHStyleElement.

==================== Snapshot ====================

SystemOrganization addCategory: #ShoutTests!

TestCase subclass: #SHParserST80Test
	instanceVariableNames: ''
	classVariableNames: ''
	poolDictionaries: ''
	category: 'ShoutTests'!

!SHParserST80Test commentStamp: 'TorstenBergmann 2/12/2014 23:22' prior: 0!
SUnit tests for shouts ST80 parser!

----- Method: SHParserST80Test>>d (in category 'tests-manual') -----
d
	"ensure that d is defined so that we don't get an #undefinedUnary token type "!

----- Method: SHParserST80Test>>e (in category 'tests-manual') -----
e
	"ensure that e is defined so that we don't get an #undefinedUnary token type "!

----- Method: SHParserST80Test>>q (in category 'tests-manual') -----
q
	"ensure that q is defined so that we don't get an #undefinedUnary token type "!

----- Method: SHParserST80Test>>r (in category 'tests-manual') -----
r
	"ensure that r is defined so that we don't get an #undefinedUnary token type "!

----- Method: SHParserST80Test>>s (in category 'tests-manual') -----
s
	"ensure that s is defined so that we don't get an #undefinedUnary token type "!

----- Method: SHParserST80Test>>testBooleanHierarchy (in category 'tests-smoke') -----
testBooleanHierarchy
	self verifyHierarchy: Boolean!

----- Method: SHParserST80Test>>testNumberHierarchy (in category 'tests-smoke') -----
testNumberHierarchy
	self verifyHierarchy: Number!

----- Method: SHParserST80Test>>testNumbers (in category 'tests') -----
testNumbers
	| types tokens s |
	s := 'x 1'.
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '1').
	
	s := 'x -1'.
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary #- number).
	self assert: tokens = #('x' '-' '1').

	s := 'x -1.1'.
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary #- number).
	self assert: tokens = #('x' '-' '1.1').

	s := 'x -1.1.'.
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary #- number statementSeparator).
	self assert: tokens = #('x' '-' '1.1' '.').
		
	s := 'x 1.true'.
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number statementSeparator #true).
	self assert: tokens = #('x' '1' '.' 'true').
		
	s := 'x 2r1'.	
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '2r1').

	s := 'x 2d1'.	
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '2d1').
	
	s := 'x 2e1'.	
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '2e1').
	
	s := 'x 2q1'.	
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '2q1').	
		
	s := 'x 16r-A'.	
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '16r-A').

	s := 'x -16r-A'.	
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary #- number).
	self assert: tokens = #('x' '-' '16r-A').
	
	s := 'x 16r'.	
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '16r').
	
	s := 'x 16r-'.	
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '16r-').

	s := 'x 16r-d'.	
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '16r-d').
			
	s := 'x 2r2'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number excessCode).
	self assert: tokens = #('x' '2r' '2').

	s := 'x 1.'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number statementSeparator).
	self assert: tokens = #('x' '1' '.').
	
	s := 'x 1yourself'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number unary).
	self assert: tokens = #('x' '1' 'yourself').
	
	s := 'x 1size'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number unary).
	self assert: tokens = #('x' '1' 'size').
	
	s := 'x 1.1size'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number unary).
	self assert: tokens = #('x' '1.1' 'size').	
	
	s := 'x 1s'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '1s').
	
	s := 'x 1.1s'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '1.1s').	
	
	s := 'x 2r1e26'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '2r1e26').
	
	s := 'x 16r1e-26'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number binary number).
	self assert: tokens = #('x' '16r1e' '-' '26').
	
	s := 'x 16r1e'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '16r1e').
	
	s := 'x 16r1e-1'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number binary number).
	self assert: tokens = #('x' '16r1e' '-' '1').
		
	s := 'x 16r1e-'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number binary excessCode).
	self assert: tokens = #('x' '16r1e' '-' '').
	
	s := 'x 16r1.ABe20'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '16r1.ABe20').
	
	s := 'x 16r1.ABe-20'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number binary number).
	self assert: tokens = #('x' '16r1.ABe' '-' '20').

	s := 'x 1.0e14'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '1.0e14').
	
	s := 'x 1.0e-14'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '1.0e-14').
	
	s := 'x 1.0e14e'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number unary).
	self assert: tokens = #('x' '1.0e14' 'e').
""	
	s := 'x 2r1q26'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '2r1q26').
	
	s := 'x 16r1q-26'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '16r1q-26').
	
	s := 'x 16r1q'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number unary).
	self assert: tokens = #('x' '16r1' 'q').
	
	s := 'x 16r1q-1'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '16r1q-1').
		
	s := 'x 16r1q-'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number unary binary excessCode).
	self assert: tokens = #('x' '16r1' 'q' '-' '').
	
	s := 'x 16r1.ABq20'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '16r1.ABq20').
	
	s := 'x 16r1.ABq-20'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '16r1.ABq-20').

	s := 'x 1.0q14'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '1.0q14').
	
	s := 'x 1.0q-14'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '1.0q-14').
	
	s := 'x 1.0q14q'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number unary).
	self assert: tokens = #('x' '1.0q14' 'q').
""
	s := 'x 2r1d26'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '2r1d26').
	
	s := 'x 16r1d-26'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number binary number).
	self assert: tokens = #('x' '16r1d' '-' '26').
	
	s := 'x 16r1d'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '16r1d').
	
	s := 'x 16r1d-1'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number binary number).
	self assert: tokens = #('x' '16r1d' '-' '1').
		
	s := 'x 16r1d-'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number binary excessCode).
	self assert: tokens = #('x' '16r1d' '-' '').
	
	s := 'x 16r1.ABd20'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '16r1.ABd20').
	
	s := 'x 16r1.ABd-20'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number binary number).
	self assert: tokens = #('x' '16r1.ABd' '-' '20').

	s := 'x 1.0d14'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '1.0d14').
	
	s := 'x 1.0d-14'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number).
	self assert: tokens = #('x' '1.0d-14').
	
	s := 'x 1.0d14d'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number unary).
	self assert: tokens = #('x' '1.0d14' 'd').
	
""

	s := 'x -1.1e-2'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary #- number ).
	self assert: tokens = #('x' '-' '1.1e-2'). "only first - is separate token !!"
	
	s := 'x -16r-1.0e-2'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary #- number binary number).
	self assert: tokens = #('x' '-' '16r-1.0e' '-' '2'). "only first - is separate token !!"
	
	s := 'x 1-1'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number binary number ).
	self assert: tokens = #('x' '1' '-' '1'). 

	s := 'x 1--1'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number incompleteBinary number ).
	self assert: tokens = #('x' '1' '--' '1'). 
	
	s := 'x 1--"comment"1'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number incompleteBinary comment number ).
	self assert: tokens = #('x' '1' '--' '"comment"' '1'). 	

	s := 'x 1-self'. 
	types := self tokenTypesIn: s.
	tokens := self tokensIn: s. 
	self assert: types = #(patternUnary number binary self ).
	self assert: tokens = #('x' '1' '-' 'self'). !

----- Method: SHParserST80Test>>testObjectClass (in category 'tests-smoke') -----
testObjectClass
	self verifyClass: Object!

----- Method: SHParserST80Test>>tokenTypesIn: (in category 'utilities') -----
tokenTypesIn: aString
	| parser ranges |
	parser := SHParserST80 new.
	ranges := parser rangesIn: aString classOrMetaClass: Object workspace: nil environment: nil.
	^ranges asArray collect: [:each | each type]!

----- Method: SHParserST80Test>>tokensIn: (in category 'utilities') -----
tokensIn: aString
	| parser ranges |
	parser := SHParserST80 new.
	ranges := parser rangesIn: aString classOrMetaClass: Object workspace: nil environment: nil.
	^ranges asArray collect: [:each | aString copyFrom: each start to: each end]!

----- Method: SHParserST80Test>>verifyClass: (in category 'utilities') -----
verifyClass: aBehavior
	aBehavior selectors do: [ :selector | self verifyClass: aBehavior selector: selector ]
	!

----- Method: SHParserST80Test>>verifyClass:selector: (in category 'utilities') -----
verifyClass: aBehavior selector: aSymbol
	| ranges position types errors |
	ranges := SHParserST80 new 
		rangesIn: (aBehavior sourceCodeAt: aSymbol) 
		classOrMetaClass: aBehavior 
		workspace: nil environment: nil.
	types := #(#default #invalid #excessCode #comment #unfinishedComment #'$' #character #integer #number #- #symbol #stringSymbol #literalArray #string #unfinishedString #assignment #ansiAssignment #literal #keyword #binary #unary #incompleteKeyword #incompleteBinary #incompleteUnary #undefinedKeyword #undefinedBinary #undefinedUnary #patternKeyword #patternBinary #patternUnary #self #super #true #false #nil #thisContext #return #patternArg #methodArg #blockPatternArg #blockArg #argument #blockArgColon #leftParenthesis #rightParenthesis #leftParenthesis1 #rightParenthesis1 #leftParenthesis2 #rightParenthesis2 #leftParenthesis3 #rightParenthesis3 #leftParenthesis4 #rightParenthesis4 #leftParenthesis5 #rightParenthesis5 #leftParenthesis6 #rightParenthesis6 #leftParenthesis7 #rightParenthesis7 #blockStart #blockEnd #blockStart1 #blockEnd1 #blockStart2 #blockEnd2 #blockStart3 #blockEnd3 #blockStart4 #blockEnd4 #blockStart5 #blockEnd5 #blockStart6 #blockEnd6 #blockStart7 #blockEnd7 #arrayStart #arrayEnd #arrayStart1 #arrayEnd1 #byteArrayStart #byteArrayEnd #byteArrayStart1 #byteArrayEnd1 #leftBrace #rightBrace #cascadeSeparator #statementSeparator #externalCallType #externalCallTypePointerIndicator #primitiveOrExternalCallStart #primitiveOrExternalCallEnd #methodTempBar #blockTempBar #blockArgsBar #primitive #externalFunctionCallingConvention #module #blockTempVar #blockPatternTempVar #instVar #workspaceVar #undefinedIdentifier #incompleteIdentifier #tempVar #patternTempVar #poolConstant #classVar #globalVar #pragmaKeyword #pragmaUnary #pragmaBinary) asIdentitySet.
	errors := #(#excessCode #unfinishedComment #unfinishedString) asIdentitySet.
	position := 0.
	ranges do: [ :each |
		self 
			assert: 1 <= each length 
			description: 'empty range'.
		self 
			assert: position <= each start
			description: 'overlapping range'.
		self 
			assert: each start <= each end 
			description: 'empty range'.
		self 
			assert: (types includes: each type)
			description: 'unknown type ' , each type.
		self
			deny: (errors includes: each type)
			description: 'error type ' , each type.
		position := each end ]!

----- Method: SHParserST80Test>>verifyHierarchy: (in category 'utilities') -----
verifyHierarchy: aBehavior
	aBehavior withAllSubclassesDo: [ :class | self verifyClass: class; verifyClass: class class ]!



More information about the Squeak-dev mailing list