author | Claus Gittinger <cg@exept.de> |
Tue, 26 Mar 2019 18:29:12 +0100 | |
changeset 2173 | d4d16e3f15f0 |
parent 1856 | 323bfc068eb4 |
permissions | -rw-r--r-- |
1839 | 1 |
"{ Encoding: utf8 }" |
2 |
||
1447 | 3 |
"{ Package: 'stx:goodies/regression' }" |
235 | 4 |
|
274 | 5 |
"{ NameSpace: RegressionTests }" |
6 |
||
235 | 7 |
TestCase subclass:#CharacterTests |
8 |
instanceVariableNames:'' |
|
9 |
classVariableNames:'' |
|
10 |
poolDictionaries:'' |
|
573 | 11 |
category:'tests-Regression' |
235 | 12 |
! |
13 |
||
14 |
||
15 |
!CharacterTests methodsFor:'tests'! |
|
16 |
||
1050
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
17 |
test01_CaseTesting |
613
572fbd9909a8
comment/format in: #test01CaseTesting
Claus Gittinger <cg@exept.de>
parents:
612
diff
changeset
|
18 |
"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
|
19 |
|
612 | 20 |
|unicodeDataFile| |
21 |
||
1839 | 22 |
unicodeDataFile := Helper packageDirectoryForRegressionTests / 'testData/UnicodeData-4.0.0.txt'. |
1303 | 23 |
"/ unicodeDataFile := '/Users/cg/work/exept/regression/testData/UnicodeData-4.0.0.txt' asFilename . |
612 | 24 |
|
25 |
CharacterEncoderCodeGenerator isNil ifTrue:[ |
|
1856 | 26 |
(Helper packageDirectoryForRegressionTests directory / 'CharacterEncoderCodeGenerator.st') fileIn. |
612 | 27 |
]. |
28 |
||
235 | 29 |
CharacterEncoderCodeGenerator new |
1839 | 30 |
readingUnicodeDataFrom:(unicodeDataFile readStream) |
31 |
do:[:codePoint :name :category :canOrd :bidiCat :decMap |
|
32 |
:decDigitValue :digitValue :numValue |
|
33 |
:mirrored :unicodeName :comment :ucValue :lcValue :tcValue | |
|
34 |
|ch ucCh lcCh tcCh isUppercase isLowercase isTitlecase isLetter dToUc dToLc| |
|
235 | 35 |
|
1839 | 36 |
"/ for now, do not check above 1C6FF (i.e. only Uniode 3.2) |
37 |
codePoint <= 16r1C6FF ifTrue:[ |
|
38 |
isUppercase := category = 'Lu'. |
|
39 |
isLowercase := category = 'Ll'. |
|
40 |
isTitlecase := category = 'Lt'. |
|
41 |
isLetter := isUppercase | isLowercase | isTitlecase |
|
42 |
or:[(category = 'Lm') or:[(category = 'Lo')]]. |
|
235 | 43 |
|
1839 | 44 |
ch := Character value:codePoint. |
45 |
self assert:(ch isUppercase == isUppercase) description:('isUppercase of ',ch codePoint asString). |
|
46 |
self assert:(ch isLowercase == isLowercase) description:('isLowercase of ',ch codePoint asString). |
|
47 |
"/ self assert:(ch isTitlecase == isTitlecase). |
|
48 |
self assert:(ch isNationalLetter == isLetter) description:('isNationalLetter of ',ch codePoint asString). |
|
235 | 49 |
|
1839 | 50 |
ucValue notNil ifTrue:[ |
51 |
ucCh := Character value:ucValue. |
|
52 |
self assert:(ch asUppercase = ucCh) description:('asUppercase of ',ch codePoint asString). |
|
53 |
] ifFalse:[ |
|
54 |
self assert:(ch asUppercase = ch) description:('asUppercase of ',ch codePoint asString). |
|
55 |
]. |
|
56 |
lcValue notNil ifTrue:[ |
|
57 |
lcCh := Character value:lcValue. |
|
58 |
self assert:(ch asLowercase = lcCh) description:('asLowercase of ',ch codePoint asString). |
|
59 |
] ifFalse:[ |
|
60 |
self assert:(ch asLowercase = ch) description:('asLowercase of ',ch codePoint asString). |
|
61 |
]. |
|
62 |
tcValue notNil ifTrue:[ |
|
63 |
tcCh := Character value:tcValue. |
|
64 |
self assert:(ch asTitlecase = tcCh) description:('asTitlecase of ',ch codePoint asString). |
|
65 |
] ifFalse:[ |
|
66 |
self assert:(ch asTitlecase = ch) description:('asTitlecase of ',ch codePoint asString). |
|
67 |
]. |
|
68 |
]. |
|
69 |
]. |
|
235 | 70 |
|
71 |
" |
|
72 |
self new test01CaseTesting |
|
73 |
" |
|
612 | 74 |
|
613
572fbd9909a8
comment/format in: #test01CaseTesting
Claus Gittinger <cg@exept.de>
parents:
612
diff
changeset
|
75 |
"Modified (comment): / 05-08-2011 / 18:59:24 / cg" |
1050
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 |
|
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
78 |
test02_Concatenation |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
79 |
"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
|
80 |
|
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
81 |
|a b r s s2| |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
82 |
|
1447 | 83 |
s := ($a to: $z) asString. |
84 |
s2 :=($b to: $z) asString. |
|
1050
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
85 |
|
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
86 |
"/ char , string |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
87 |
a := $a. b := ''. self assert:(r := a,b) = 'a'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
88 |
a := $a. b := 'b'. self assert:(r := a,b) = 'ab'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
89 |
a := $a. b := 'bc'. self assert:(r := a,b) = 'abc'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
90 |
a := $a. b := 'bcd'. self assert:(r := a,b) = 'abcd'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
91 |
a := $a. b := 'bcde'. self assert:(r := a,b) = 'abcde'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
92 |
"/ just in case there is some wordlength related problem... |
1447 | 93 |
1 to:20 do:[:n | |
94 |
self assert:($a,(s2 copyTo:n)) = (s copyTo:n+1) |
|
1050
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 |
|
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
97 |
"/ char , char |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
98 |
a := $a. b := $b. self assert:(r := a,b) = 'ab'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
99 |
|
1447 | 100 |
s2 :=($a to: $y) asString. |
1050
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
101 |
"/ string, char |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
102 |
a := $a. b := ''. self assert:(r := b,a) = 'a'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
103 |
a := $a. b := 'b'. self assert:(r := b,a) = 'ba'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
104 |
a := $a. b := 'bc'. self assert:(r := b,a) = 'bca'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
105 |
a := $a. b := 'bcd'. self assert:(r := b,a) = 'bcda'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
106 |
a := $a. b := 'bcde'. self assert:(r := b,a) = 'bcdea'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
107 |
"/ just in case there is some wordlength related problem... |
1447 | 108 |
1 to:20 do:[:n | |
109 |
self assert:((s2 copyLast:n),$z) = (s copyLast:n+1) |
|
1050
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 |
" |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
113 |
self new test02_Concatenation |
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 |
|
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
116 |
"Modified (comment): / 05-08-2011 / 18:59:24 / cg" |
235 | 117 |
! ! |
118 |
||
119 |
!CharacterTests class methodsFor:'documentation'! |
|
120 |
||
121 |
version |
|
122 |
^ '$Header$' |
|
573 | 123 |
! |
124 |
||
125 |
version_CVS |
|
126 |
^ '$Header$' |
|
235 | 127 |
! ! |
1050
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
128 |