"{ Package: 'exept:regression' }"
"{ NameSpace: RegressionTests }"
TestCase subclass:#CharacterTests
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'tests-Regression'
!
!CharacterTests methodsFor:'tests'!
test01CaseTesting
"test lower/uppercase return value for all unicode characters up to 16r1C6FF (i.e. Unicode 3.2)"
|unicodeDataFile|
unicodeDataFile := self class packageDirectory construct:'testData/UnicodeData-4.0.0.txt'.
CharacterEncoderCodeGenerator isNil ifTrue:[
Smalltalk fileInClass:'CharacterEncoderCodeGenerator' package:'stx:goodies'
].
CharacterEncoderCodeGenerator new
readingUnicodeDataFrom:(unicodeDataFile readStream)
do:[:codePoint :name :category :canOrd :bidiCat :decMap
:decDigitValue :digitValue :numValue
:mirrored :unicodeName :comment :ucValue :lcValue :tcValue |
|ch ucCh lcCh tcCh isUppercase isLowercase isTitlecase isLetter dToUc dToLc|
"/ for now, do not check above 1C6FF (i.e. only Uniode 3.2)
codePoint <= 16r1C6FF ifTrue:[
isUppercase := category = 'Lu'.
isLowercase := category = 'Ll'.
isTitlecase := category = 'Lt'.
isLetter := isUppercase | isLowercase | isTitlecase
or:[(category = 'Lm') or:[(category = 'Lo')]].
ch := Character value:codePoint.
self assert:(ch isUppercase == isUppercase).
self assert:(ch isLowercase == isLowercase).
"/ self assert:(ch isTitlecase == isTitlecase).
self assert:(ch isNationalLetter == isLetter).
ucValue notNil ifTrue:[
ucCh := Character value:ucValue.
self assert:(ch asUppercase = ucCh).
] ifFalse:[
self assert:(ch asUppercase = ch).
].
lcValue notNil ifTrue:[
lcCh := Character value:lcValue.
self assert:(ch asLowercase = lcCh).
] ifFalse:[
self assert:(ch asLowercase = ch).
].
tcValue notNil ifTrue:[
tcCh := Character value:tcValue.
self assert:(ch asTitlecase = tcCh).
] ifFalse:[
self assert:(ch asTitlecase = ch).
].
].
].
"
self new test01CaseTesting
"
"Modified (comment): / 05-08-2011 / 18:59:24 / cg"
! !
!CharacterTests class methodsFor:'documentation'!
version
^ '$Header$'
!
version_CVS
^ '$Header$'
! !