author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Wed, 29 Jun 2016 21:40:53 +0100 | |
branch | jv |
changeset 1499 | 26a16a04219b |
parent 1477 | 7a6b9d928845 |
child 1500 | d406a10b2965 |
permissions | -rw-r--r-- |
1499
26a16a04219b
Package renamed from exept:regression to stx:goodies/regression. Hooray!
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1477
diff
changeset
|
1 |
"{ Package: 'stx:goodies/regression' }" |
235 | 2 |
|
274 | 3 |
"{ NameSpace: RegressionTests }" |
4 |
||
235 | 5 |
TestCase subclass:#CharacterTests |
6 |
instanceVariableNames:'' |
|
7 |
classVariableNames:'' |
|
8 |
poolDictionaries:'' |
|
573 | 9 |
category:'tests-Regression' |
235 | 10 |
! |
11 |
||
12 |
||
13 |
!CharacterTests methodsFor:'tests'! |
|
14 |
||
1050
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
15 |
test01_CaseTesting |
613
572fbd9909a8
comment/format in: #test01CaseTesting
Claus Gittinger <cg@exept.de>
parents:
612
diff
changeset
|
16 |
"test lower/uppercase return value for all unicode characters up to 16r1C6FF (i.e. Unicode 3.2)" |
572fbd9909a8
comment/format in: #test01CaseTesting
Claus Gittinger <cg@exept.de>
parents:
612
diff
changeset
|
17 |
|
612 | 18 |
|unicodeDataFile| |
19 |
||
1472
b8712e985b5b
Disabled test RegressionTests::CharacterTests>>#test01_CaseTesting
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1050
diff
changeset
|
20 |
self skipIf: true description: 'Broken due to a bug in CharacterEncoderCodeGenerator'. |
1477 | 21 |
unicodeDataFile := self class packageDirectory / 'testData/UnicodeData-4.0.0.txt'. |
22 |
"/ unicodeDataFile := '/Users/cg/work/exept/regression/testData/UnicodeData-4.0.0.txt' asFilename . |
|
612 | 23 |
|
24 |
CharacterEncoderCodeGenerator isNil ifTrue:[ |
|
25 |
Smalltalk fileInClass:'CharacterEncoderCodeGenerator' package:'stx:goodies' |
|
26 |
]. |
|
27 |
||
235 | 28 |
CharacterEncoderCodeGenerator new |
612 | 29 |
readingUnicodeDataFrom:(unicodeDataFile readStream) |
30 |
do:[:codePoint :name :category :canOrd :bidiCat :decMap |
|
31 |
:decDigitValue :digitValue :numValue |
|
32 |
:mirrored :unicodeName :comment :ucValue :lcValue :tcValue | |
|
33 |
|ch ucCh lcCh tcCh isUppercase isLowercase isTitlecase isLetter dToUc dToLc| |
|
235 | 34 |
|
612 | 35 |
"/ for now, do not check above 1C6FF (i.e. only Uniode 3.2) |
36 |
codePoint <= 16r1C6FF ifTrue:[ |
|
37 |
isUppercase := category = 'Lu'. |
|
38 |
isLowercase := category = 'Ll'. |
|
39 |
isTitlecase := category = 'Lt'. |
|
40 |
isLetter := isUppercase | isLowercase | isTitlecase |
|
41 |
or:[(category = 'Lm') or:[(category = 'Lo')]]. |
|
235 | 42 |
|
612 | 43 |
ch := Character value:codePoint. |
1477 | 44 |
self assert:(ch isUppercase == isUppercase) description:('isUppercase of ',ch codePoint asString). |
45 |
self assert:(ch isLowercase == isLowercase) description:('isLowercase of ',ch codePoint asString). |
|
612 | 46 |
"/ self assert:(ch isTitlecase == isTitlecase). |
1477 | 47 |
self assert:(ch isNationalLetter == isLetter) description:('isNationalLetter of ',ch codePoint asString). |
235 | 48 |
|
612 | 49 |
ucValue notNil ifTrue:[ |
50 |
ucCh := Character value:ucValue. |
|
1477 | 51 |
self assert:(ch asUppercase = ucCh) description:('asUppercase of ',ch codePoint asString). |
612 | 52 |
] ifFalse:[ |
1477 | 53 |
self assert:(ch asUppercase = ch) description:('asUppercase of ',ch codePoint asString). |
612 | 54 |
]. |
55 |
lcValue notNil ifTrue:[ |
|
56 |
lcCh := Character value:lcValue. |
|
1477 | 57 |
self assert:(ch asLowercase = lcCh) description:('asLowercase of ',ch codePoint asString). |
612 | 58 |
] ifFalse:[ |
1477 | 59 |
self assert:(ch asLowercase = ch) description:('asLowercase of ',ch codePoint asString). |
612 | 60 |
]. |
61 |
tcValue notNil ifTrue:[ |
|
62 |
tcCh := Character value:tcValue. |
|
1477 | 63 |
self assert:(ch asTitlecase = tcCh) description:('asTitlecase of ',ch codePoint asString). |
612 | 64 |
] ifFalse:[ |
1477 | 65 |
self assert:(ch asTitlecase = ch) description:('asTitlecase of ',ch codePoint asString). |
612 | 66 |
]. |
67 |
]. |
|
68 |
]. |
|
235 | 69 |
|
70 |
" |
|
71 |
self new test01CaseTesting |
|
72 |
" |
|
612 | 73 |
|
613
572fbd9909a8
comment/format in: #test01CaseTesting
Claus Gittinger <cg@exept.de>
parents:
612
diff
changeset
|
74 |
"Modified (comment): / 05-08-2011 / 18:59:24 / cg" |
1050
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
75 |
! |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
76 |
|
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
77 |
test02_Concatenation |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
78 |
"test , operator on characters (to test against possible inlining or compiler optimizations, use variables, not constants)" |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
79 |
|
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
80 |
|a b r s s2| |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
81 |
|
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
82 |
s := ($a to: $z) asString. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
83 |
s2 :=($b to: $z) asString. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
84 |
|
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
85 |
"/ char , string |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
86 |
a := $a. b := ''. self assert:(r := a,b) = 'a'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
87 |
a := $a. b := 'b'. self assert:(r := a,b) = 'ab'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
88 |
a := $a. b := 'bc'. self assert:(r := a,b) = 'abc'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
89 |
a := $a. b := 'bcd'. self assert:(r := a,b) = 'abcd'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
90 |
a := $a. b := 'bcde'. self assert:(r := a,b) = 'abcde'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
91 |
"/ just in case there is some wordlength related problem... |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
92 |
1 to:20 do:[:n | |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
93 |
self assert:($a,(s2 copyTo:n)) = (s copyTo:n+1) |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
94 |
]. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
95 |
|
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
96 |
"/ char , char |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
97 |
a := $a. b := $b. self assert:(r := a,b) = 'ab'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
98 |
|
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
99 |
s2 :=($a to: $y) asString. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
100 |
"/ string, char |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
101 |
a := $a. b := ''. self assert:(r := b,a) = 'a'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
102 |
a := $a. b := 'b'. self assert:(r := b,a) = 'ba'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
103 |
a := $a. b := 'bc'. self assert:(r := b,a) = 'bca'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
104 |
a := $a. b := 'bcd'. self assert:(r := b,a) = 'bcda'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
105 |
a := $a. b := 'bcde'. self assert:(r := b,a) = 'bcdea'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
106 |
"/ just in case there is some wordlength related problem... |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
107 |
1 to:20 do:[:n | |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
108 |
self assert:((s2 copyLast:n),$z) = (s copyLast:n+1) |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
109 |
]. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
110 |
|
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
111 |
" |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
112 |
self new test02_Concatenation |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
113 |
" |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
114 |
|
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
115 |
"Modified (comment): / 05-08-2011 / 18:59:24 / cg" |
235 | 116 |
! ! |
117 |
||
118 |
!CharacterTests class methodsFor:'documentation'! |
|
119 |
||
120 |
version |
|
121 |
^ '$Header$' |
|
573 | 122 |
! |
123 |
||
124 |
version_CVS |
|
125 |
^ '$Header$' |
|
235 | 126 |
! ! |
1050
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
127 |