author | convert-repo |
Thu, 08 Dec 2016 04:53:03 +0000 | |
changeset 1563 | bcbe9f1e2bba |
parent 1447 | 2351db93aa5b |
child 1500 | d406a10b2965 |
child 1839 | 4efdf4dde1c1 |
permissions | -rw-r--r-- |
1447 | 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 |
||
1303 | 20 |
unicodeDataFile := self class packageDirectory / 'testData/UnicodeData-4.0.0.txt'. |
21 |
"/ unicodeDataFile := '/Users/cg/work/exept/regression/testData/UnicodeData-4.0.0.txt' asFilename . |
|
612 | 22 |
|
23 |
CharacterEncoderCodeGenerator isNil ifTrue:[ |
|
1447 | 24 |
Smalltalk fileInClass:'CharacterEncoderCodeGenerator' package:'stx:goodies' |
612 | 25 |
]. |
26 |
||
235 | 27 |
CharacterEncoderCodeGenerator new |
1447 | 28 |
readingUnicodeDataFrom:(unicodeDataFile readStream) |
29 |
do:[:codePoint :name :category :canOrd :bidiCat :decMap |
|
30 |
:decDigitValue :digitValue :numValue |
|
31 |
:mirrored :unicodeName :comment :ucValue :lcValue :tcValue | |
|
32 |
|ch ucCh lcCh tcCh isUppercase isLowercase isTitlecase isLetter dToUc dToLc| |
|
235 | 33 |
|
1447 | 34 |
"/ for now, do not check above 1C6FF (i.e. only Uniode 3.2) |
35 |
codePoint <= 16r1C6FF ifTrue:[ |
|
36 |
isUppercase := category = 'Lu'. |
|
37 |
isLowercase := category = 'Ll'. |
|
38 |
isTitlecase := category = 'Lt'. |
|
39 |
isLetter := isUppercase | isLowercase | isTitlecase |
|
40 |
or:[(category = 'Lm') or:[(category = 'Lo')]]. |
|
235 | 41 |
|
1447 | 42 |
ch := Character value:codePoint. |
43 |
self assert:(ch isUppercase == isUppercase) description:('isUppercase of ',ch codePoint asString). |
|
44 |
self assert:(ch isLowercase == isLowercase) description:('isLowercase of ',ch codePoint asString). |
|
45 |
"/ self assert:(ch isTitlecase == isTitlecase). |
|
46 |
self assert:(ch isNationalLetter == isLetter) description:('isNationalLetter of ',ch codePoint asString). |
|
235 | 47 |
|
1447 | 48 |
ucValue notNil ifTrue:[ |
49 |
ucCh := Character value:ucValue. |
|
50 |
self assert:(ch asUppercase = ucCh) description:('asUppercase of ',ch codePoint asString). |
|
51 |
] ifFalse:[ |
|
52 |
self assert:(ch asUppercase = ch) description:('asUppercase of ',ch codePoint asString). |
|
53 |
]. |
|
54 |
lcValue notNil ifTrue:[ |
|
55 |
lcCh := Character value:lcValue. |
|
56 |
self assert:(ch asLowercase = lcCh) description:('asLowercase of ',ch codePoint asString). |
|
57 |
] ifFalse:[ |
|
58 |
self assert:(ch asLowercase = ch) description:('asLowercase of ',ch codePoint asString). |
|
59 |
]. |
|
60 |
tcValue notNil ifTrue:[ |
|
61 |
tcCh := Character value:tcValue. |
|
62 |
self assert:(ch asTitlecase = tcCh) description:('asTitlecase of ',ch codePoint asString). |
|
63 |
] ifFalse:[ |
|
64 |
self assert:(ch asTitlecase = ch) description:('asTitlecase of ',ch codePoint asString). |
|
65 |
]. |
|
66 |
]. |
|
67 |
]. |
|
235 | 68 |
|
69 |
" |
|
70 |
self new test01CaseTesting |
|
71 |
" |
|
612 | 72 |
|
613
572fbd9909a8
comment/format in: #test01CaseTesting
Claus Gittinger <cg@exept.de>
parents:
612
diff
changeset
|
73 |
"Modified (comment): / 05-08-2011 / 18:59:24 / cg" |
1050
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
74 |
! |
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 |
test02_Concatenation |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
77 |
"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
|
78 |
|
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
79 |
|a b r s s2| |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
80 |
|
1447 | 81 |
s := ($a to: $z) asString. |
82 |
s2 :=($b to: $z) asString. |
|
1050
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
83 |
|
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
84 |
"/ char , string |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
85 |
a := $a. b := ''. self assert:(r := a,b) = 'a'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
86 |
a := $a. b := 'b'. self assert:(r := a,b) = 'ab'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
87 |
a := $a. b := 'bc'. self assert:(r := a,b) = 'abc'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
88 |
a := $a. b := 'bcd'. self assert:(r := a,b) = 'abcd'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
89 |
a := $a. b := 'bcde'. self assert:(r := a,b) = 'abcde'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
90 |
"/ just in case there is some wordlength related problem... |
1447 | 91 |
1 to:20 do:[:n | |
92 |
self assert:($a,(s2 copyTo:n)) = (s copyTo:n+1) |
|
1050
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
93 |
]. |
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 |
"/ char , char |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
96 |
a := $a. b := $b. self assert:(r := a,b) = 'ab'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
97 |
|
1447 | 98 |
s2 :=($a to: $y) asString. |
1050
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
99 |
"/ string, char |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
100 |
a := $a. b := ''. self assert:(r := b,a) = 'a'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
101 |
a := $a. b := 'b'. self assert:(r := b,a) = 'ba'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
102 |
a := $a. b := 'bc'. self assert:(r := b,a) = 'bca'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
103 |
a := $a. b := 'bcd'. self assert:(r := b,a) = 'bcda'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
104 |
a := $a. b := 'bcde'. self assert:(r := b,a) = 'bcdea'. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
105 |
"/ just in case there is some wordlength related problem... |
1447 | 106 |
1 to:20 do:[:n | |
107 |
self assert:((s2 copyLast:n),$z) = (s copyLast:n+1) |
|
1050
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
108 |
]. |
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 |
self new test02_Concatenation |
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 |
|
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
114 |
"Modified (comment): / 05-08-2011 / 18:59:24 / cg" |
235 | 115 |
! ! |
116 |
||
117 |
!CharacterTests class methodsFor:'documentation'! |
|
118 |
||
119 |
version |
|
120 |
^ '$Header$' |
|
573 | 121 |
! |
122 |
||
123 |
version_CVS |
|
124 |
^ '$Header$' |
|
235 | 125 |
! ! |
1050
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
126 |