author | "Patrik Svestka <patrik.svestka@gmail.com>" |
Fri, 16 Dec 2022 10:44:49 +0100 | |
branch | jv |
changeset 2608 | b77fda6a2e98 |
parent 1974 | f2eaf05205d6 |
permissions | -rwxr-xr-x |
1974 | 1 |
" |
2 |
COPYRIGHT (c) Claus Gittinger / eXept Software AG |
|
3 |
COPYRIGHT (c) 2015 Jan Vrany |
|
4 |
All Rights Reserved |
|
5 |
||
6 |
This software is furnished under a license and may be used |
|
7 |
only in accordance with the terms of that license and with the |
|
8 |
inclusion of the above copyright notice. This software may not |
|
9 |
be provided or otherwise made available to, or used by, any |
|
10 |
other person. No title to or ownership of the software is |
|
11 |
hereby transferred. |
|
12 |
" |
|
1447 | 13 |
"{ Package: 'stx:goodies/regression' }" |
235 | 14 |
|
274 | 15 |
"{ NameSpace: RegressionTests }" |
16 |
||
235 | 17 |
TestCase subclass:#CharacterTests |
18 |
instanceVariableNames:'' |
|
19 |
classVariableNames:'' |
|
20 |
poolDictionaries:'' |
|
573 | 21 |
category:'tests-Regression' |
235 | 22 |
! |
23 |
||
1974 | 24 |
!CharacterTests class methodsFor:'documentation'! |
25 |
||
26 |
copyright |
|
27 |
" |
|
28 |
COPYRIGHT (c) Claus Gittinger / eXept Software AG |
|
29 |
COPYRIGHT (c) 2015 Jan Vrany |
|
30 |
All Rights Reserved |
|
31 |
||
32 |
This software is furnished under a license and may be used |
|
33 |
only in accordance with the terms of that license and with the |
|
34 |
inclusion of the above copyright notice. This software may not |
|
35 |
be provided or otherwise made available to, or used by, any |
|
36 |
other person. No title to or ownership of the software is |
|
37 |
hereby transferred. |
|
38 |
" |
|
39 |
! ! |
|
235 | 40 |
|
41 |
!CharacterTests methodsFor:'tests'! |
|
42 |
||
1050
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
43 |
test01_CaseTesting |
613
572fbd9909a8
comment/format in: #test01CaseTesting
Claus Gittinger <cg@exept.de>
parents:
612
diff
changeset
|
44 |
"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
|
45 |
|
612 | 46 |
|unicodeDataFile| |
47 |
||
1500 | 48 |
unicodeDataFile := self class packageDirectory / 'testData' / 'UnicodeData-4.0.0.txt'. |
49 |
"/ unicodeDataFile := '/Users/cg/work/exept/regression/testData/UnicodeData-4.0.0.txt' asFilename . |
|
1303 | 50 |
"/ unicodeDataFile := '/Users/cg/work/exept/regression/testData/UnicodeData-4.0.0.txt' asFilename . |
612 | 51 |
|
52 |
CharacterEncoderCodeGenerator isNil ifTrue:[ |
|
1447 | 53 |
Smalltalk fileInClass:'CharacterEncoderCodeGenerator' package:'stx:goodies' |
612 | 54 |
]. |
55 |
||
235 | 56 |
CharacterEncoderCodeGenerator new |
1447 | 57 |
readingUnicodeDataFrom:(unicodeDataFile readStream) |
58 |
do:[:codePoint :name :category :canOrd :bidiCat :decMap |
|
59 |
:decDigitValue :digitValue :numValue |
|
60 |
:mirrored :unicodeName :comment :ucValue :lcValue :tcValue | |
|
61 |
|ch ucCh lcCh tcCh isUppercase isLowercase isTitlecase isLetter dToUc dToLc| |
|
235 | 62 |
|
1447 | 63 |
"/ for now, do not check above 1C6FF (i.e. only Uniode 3.2) |
64 |
codePoint <= 16r1C6FF ifTrue:[ |
|
65 |
isUppercase := category = 'Lu'. |
|
66 |
isLowercase := category = 'Ll'. |
|
67 |
isTitlecase := category = 'Lt'. |
|
68 |
isLetter := isUppercase | isLowercase | isTitlecase |
|
69 |
or:[(category = 'Lm') or:[(category = 'Lo')]]. |
|
235 | 70 |
|
1447 | 71 |
ch := Character value:codePoint. |
72 |
self assert:(ch isUppercase == isUppercase) description:('isUppercase of ',ch codePoint asString). |
|
73 |
self assert:(ch isLowercase == isLowercase) description:('isLowercase of ',ch codePoint asString). |
|
74 |
"/ self assert:(ch isTitlecase == isTitlecase). |
|
75 |
self assert:(ch isNationalLetter == isLetter) description:('isNationalLetter of ',ch codePoint asString). |
|
235 | 76 |
|
1447 | 77 |
ucValue notNil ifTrue:[ |
78 |
ucCh := Character value:ucValue. |
|
79 |
self assert:(ch asUppercase = ucCh) description:('asUppercase of ',ch codePoint asString). |
|
80 |
] ifFalse:[ |
|
81 |
self assert:(ch asUppercase = ch) description:('asUppercase of ',ch codePoint asString). |
|
82 |
]. |
|
83 |
lcValue notNil ifTrue:[ |
|
84 |
lcCh := Character value:lcValue. |
|
85 |
self assert:(ch asLowercase = lcCh) description:('asLowercase of ',ch codePoint asString). |
|
86 |
] ifFalse:[ |
|
87 |
self assert:(ch asLowercase = ch) description:('asLowercase of ',ch codePoint asString). |
|
88 |
]. |
|
89 |
tcValue notNil ifTrue:[ |
|
90 |
tcCh := Character value:tcValue. |
|
91 |
self assert:(ch asTitlecase = tcCh) description:('asTitlecase of ',ch codePoint asString). |
|
92 |
] ifFalse:[ |
|
93 |
self assert:(ch asTitlecase = ch) description:('asTitlecase of ',ch codePoint asString). |
|
94 |
]. |
|
95 |
]. |
|
96 |
]. |
|
235 | 97 |
|
98 |
" |
|
99 |
self new test01CaseTesting |
|
100 |
" |
|
612 | 101 |
|
613
572fbd9909a8
comment/format in: #test01CaseTesting
Claus Gittinger <cg@exept.de>
parents:
612
diff
changeset
|
102 |
"Modified (comment): / 05-08-2011 / 18:59:24 / cg" |
1050
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
103 |
! |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
104 |
|
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
105 |
test02_Concatenation |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
106 |
"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
|
107 |
|
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
108 |
|a b r s s2| |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
109 |
|
1447 | 110 |
s := ($a to: $z) asString. |
111 |
s2 :=($b to: $z) asString. |
|
1050
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 |
"/ char , string |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
114 |
a := $a. b := ''. self assert:(r := a,b) = 'a'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
115 |
a := $a. b := 'b'. self assert:(r := a,b) = 'ab'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
116 |
a := $a. b := 'bc'. self assert:(r := a,b) = 'abc'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
117 |
a := $a. b := 'bcd'. self assert:(r := a,b) = 'abcd'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
118 |
a := $a. b := 'bcde'. self assert:(r := a,b) = 'abcde'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
119 |
"/ just in case there is some wordlength related problem... |
1447 | 120 |
1 to:20 do:[:n | |
121 |
self assert:($a,(s2 copyTo:n)) = (s copyTo:n+1) |
|
1050
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
122 |
]. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
123 |
|
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
124 |
"/ char , char |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
125 |
a := $a. b := $b. self assert:(r := a,b) = 'ab'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
126 |
|
1447 | 127 |
s2 :=($a to: $y) asString. |
1050
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
128 |
"/ string, char |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
129 |
a := $a. b := ''. self assert:(r := b,a) = 'a'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
130 |
a := $a. b := 'b'. self assert:(r := b,a) = 'ba'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
131 |
a := $a. b := 'bc'. self assert:(r := b,a) = 'bca'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
132 |
a := $a. b := 'bcd'. self assert:(r := b,a) = 'bcda'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
133 |
a := $a. b := 'bcde'. self assert:(r := b,a) = 'bcdea'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
134 |
"/ just in case there is some wordlength related problem... |
1447 | 135 |
1 to:20 do:[:n | |
136 |
self assert:((s2 copyLast:n),$z) = (s copyLast:n+1) |
|
1050
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
137 |
]. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
138 |
|
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
139 |
" |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
140 |
self new test02_Concatenation |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
141 |
" |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
142 |
|
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
143 |
"Modified (comment): / 05-08-2011 / 18:59:24 / cg" |
235 | 144 |
! ! |
145 |
||
146 |
!CharacterTests class methodsFor:'documentation'! |
|
147 |
||
148 |
version |
|
149 |
^ '$Header$' |
|
573 | 150 |
! |
151 |
||
152 |
version_CVS |
|
153 |
^ '$Header$' |
|
235 | 154 |
! ! |
1050
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
155 |