author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Sat, 05 Dec 2015 11:54:30 +0000 | |
branch | jv |
changeset 1472 | b8712e985b5b |
parent 1050 | c199e5675276 |
child 1477 | 7a6b9d928845 |
permissions | -rw-r--r-- |
235 | 1 |
"{ Package: 'exept:regression' }" |
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'. |
612 | 21 |
unicodeDataFile := self class packageDirectory construct:'testData/UnicodeData-4.0.0.txt'. |
22 |
||
23 |
CharacterEncoderCodeGenerator isNil ifTrue:[ |
|
24 |
Smalltalk fileInClass:'CharacterEncoderCodeGenerator' package:'stx:goodies' |
|
25 |
]. |
|
26 |
||
235 | 27 |
CharacterEncoderCodeGenerator new |
612 | 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 |
|
612 | 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 |
|
612 | 42 |
ch := Character value:codePoint. |
43 |
self assert:(ch isUppercase == isUppercase). |
|
44 |
self assert:(ch isLowercase == isLowercase). |
|
45 |
"/ self assert:(ch isTitlecase == isTitlecase). |
|
46 |
self assert:(ch isNationalLetter == isLetter). |
|
235 | 47 |
|
612 | 48 |
ucValue notNil ifTrue:[ |
49 |
ucCh := Character value:ucValue. |
|
50 |
self assert:(ch asUppercase = ucCh). |
|
51 |
] ifFalse:[ |
|
52 |
self assert:(ch asUppercase = ch). |
|
53 |
]. |
|
54 |
lcValue notNil ifTrue:[ |
|
55 |
lcCh := Character value:lcValue. |
|
56 |
self assert:(ch asLowercase = lcCh). |
|
57 |
] ifFalse:[ |
|
58 |
self assert:(ch asLowercase = ch). |
|
59 |
]. |
|
60 |
tcValue notNil ifTrue:[ |
|
61 |
tcCh := Character value:tcValue. |
|
62 |
self assert:(ch asTitlecase = tcCh). |
|
63 |
] ifFalse:[ |
|
64 |
self assert:(ch asTitlecase = ch). |
|
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 |
|
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
81 |
s := ($a to: $z) asString. |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
82 |
s2 :=($b to: $z) asString. |
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... |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
91 |
1 to:20 do:[:n | |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
92 |
self assert:($a,(s2 copyTo:n)) = (s copyTo:n+1) |
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 |
|
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
98 |
s2 :=($a to: $y) asString. |
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... |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
106 |
1 to:20 do:[:n | |
c199e5675276
class: RegressionTests::CharacterTests
Claus Gittinger <cg@exept.de>
parents:
613
diff
changeset
|
107 |
self assert:((s2 copyLast:n),$z) = (s copyLast:n+1) |
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 |