author | Claus Gittinger <cg@exept.de> |
Thu, 14 Apr 2016 19:08:20 +0200 | |
changeset 1393 | 50384f233a0f |
parent 1068 | 8c5c3ab780b6 |
child 1447 | 2351db93aa5b |
child 1499 | 26a16a04219b |
permissions | -rw-r--r-- |
159 | 1 |
"{ Package: 'exept:regression' }" |
2 |
||
3 |
"{ NameSpace: RegressionTests }" |
|
4 |
||
5 |
TestCase subclass:#FractionTest |
|
6 |
instanceVariableNames:'' |
|
7 |
classVariableNames:'' |
|
8 |
poolDictionaries:'' |
|
1068 | 9 |
category:'tests-Regression-Numbers' |
159 | 10 |
! |
11 |
||
12 |
||
13 |
!FractionTest methodsFor:'tests'! |
|
14 |
||
314 | 15 |
testDegreeCos |
16 |
"self run: #testDegreeCos" |
|
17 |
||
18 |
self shouldnt: [ (4/3) degreeCos] raise: Error. |
|
19 |
Smalltalk isSmalltalkX ifTrue:[ |
|
20 |
self assert: ((1/3) degreeCos printString startsWith:'0.999983') |
|
21 |
] ifFalse:[ |
|
22 |
self assert: (1/3) degreeCos printString = '0.999983076857744' |
|
23 |
] |
|
24 |
! |
|
25 |
||
26 |
testDegreeSin |
|
27 |
"self run: #testDegreeSin" |
|
28 |
||
29 |
self shouldnt: [ (4/3) degreeSin] raise: Error. |
|
30 |
Smalltalk isSmalltalkX ifTrue:[ |
|
31 |
self assert: ((1/3) degreeSin printString startsWith:'0.005817') |
|
32 |
] ifFalse:[ |
|
33 |
self assert: (1/3) degreeSin printString = '0.005817731354993834' |
|
34 |
] |
|
35 |
! |
|
36 |
||
37 |
testFractionPrinting |
|
38 |
self assert: (353/359) printString = '(353/359)'. |
|
39 |
||
40 |
self assert: (-2/3) printString = '(-2/3)'. |
|
41 |
self assert: (-2/3) storeString = '(-2/3)'. |
|
42 |
self assert: (5/-7) printString = '(-5/7)'. |
|
43 |
self assert: (5/-7) storeString = '(-5/7)'. |
|
44 |
||
45 |
Smalltalk isSmalltalkX ifFalse:[ |
|
46 |
self assert: ((2/3) printStringBase: 2) = '(10/11)'. |
|
47 |
self assert: ((2/3) storeStringBase: 2) = '(2r10/2r11)'. |
|
48 |
self assert: ((5/7) printStringBase: 3) = '(12/21)'. |
|
49 |
self assert: ((5/7) storeStringBase: 3) = '(3r12/3r21)'. |
|
50 |
self assert: ((11/13) printStringBase: 4) = '(23/31)'. |
|
51 |
self assert: ((11/13) storeStringBase: 4) = '(4r23/4r31)'. |
|
52 |
self assert: ((17/19) printStringBase: 5) = '(32/34)'. |
|
53 |
self assert: ((17/19) storeStringBase: 5) = '(5r32/5r34)'. |
|
54 |
self assert: ((23/29) printStringBase: 6) = '(35/45)'. |
|
55 |
self assert: ((23/29) storeStringBase: 6) = '(6r35/6r45)'. |
|
56 |
self assert: ((31/37) printStringBase: 7) = '(43/52)'. |
|
57 |
self assert: ((31/37) storeStringBase: 7) = '(7r43/7r52)'. |
|
58 |
self assert: ((41/43) printStringBase: 8) = '(51/53)'. |
|
59 |
self assert: ((41/43) storeStringBase: 8) = '(8r51/8r53)'. |
|
60 |
self assert: ((47/53) printStringBase: 9) = '(52/58)'. |
|
61 |
self assert: ((47/53) storeStringBase: 9) = '(9r52/9r58)'. |
|
62 |
self assert: ((59/61) printStringBase: 10) = '(59/61)'. |
|
63 |
self assert: ((59/61) storeStringBase: 10) = '(59/61)'. |
|
64 |
self assert: ((67/71) printStringBase: 11) = '(61/65)'. |
|
65 |
self assert: ((67/71) storeStringBase: 11) = '(11r61/11r65)'. |
|
66 |
self assert: ((73/79) printStringBase: 12) = '(61/67)'. |
|
67 |
self assert: ((73/79) storeStringBase: 12) = '(12r61/12r67)'. |
|
68 |
self assert: ((83/89) printStringBase: 13) = '(65/6B)'. |
|
69 |
self assert: ((83/89) storeStringBase: 13) = '(13r65/13r6B)'. |
|
70 |
self assert: ((97/101) printStringBase: 14) = '(6D/73)'. |
|
71 |
self assert: ((97/101) storeStringBase: 14) = '(14r6D/14r73)'. |
|
72 |
self assert: ((103/107) printStringBase: 15) = '(6D/72)'. |
|
73 |
self assert: ((103/107) storeStringBase: 15) = '(15r6D/15r72)'. |
|
74 |
self assert: ((109/113) printStringBase: 16) = '(6D/71)'. |
|
75 |
self assert: ((109/113) storeStringBase: 16) = '(16r6D/16r71)'. |
|
76 |
self assert: ((127/131) printStringBase: 17) = '(78/7C)'. |
|
77 |
self assert: ((127/131) storeStringBase: 17) = '(17r78/17r7C)'. |
|
78 |
self assert: ((137/139) printStringBase: 18) = '(7B/7D)'. |
|
79 |
self assert: ((137/139) storeStringBase: 18) = '(18r7B/18r7D)'. |
|
80 |
self assert: ((149/151) printStringBase: 19) = '(7G/7I)'. |
|
81 |
self assert: ((149/151) storeStringBase: 19) = '(19r7G/19r7I)'. |
|
82 |
self assert: ((157/163) printStringBase: 20) = '(7H/83)'. |
|
83 |
self assert: ((157/163) storeStringBase: 20) = '(20r7H/20r83)'. |
|
84 |
self assert: ((167/173) printStringBase: 21) = '(7K/85)'. |
|
85 |
self assert: ((167/173) storeStringBase: 21) = '(21r7K/21r85)'. |
|
86 |
self assert: ((179/181) printStringBase: 22) = '(83/85)'. |
|
87 |
self assert: ((179/181) storeStringBase: 22) = '(22r83/22r85)'. |
|
88 |
self assert: ((191/193) printStringBase: 23) = '(87/89)'. |
|
89 |
self assert: ((191/193) storeStringBase: 23) = '(23r87/23r89)'. |
|
90 |
self assert: ((197/199) printStringBase: 24) = '(85/87)'. |
|
91 |
self assert: ((197/199) storeStringBase: 24) = '(24r85/24r87)'. |
|
92 |
self assert: ((211/223) printStringBase: 25) = '(8B/8N)'. |
|
93 |
self assert: ((211/223) storeStringBase: 25) = '(25r8B/25r8N)'. |
|
94 |
self assert: ((227/229) printStringBase: 26) = '(8J/8L)'. |
|
95 |
self assert: ((227/229) storeStringBase: 26) = '(26r8J/26r8L)'. |
|
96 |
self assert: ((233/239) printStringBase: 27) = '(8H/8N)'. |
|
97 |
self assert: ((233/239) storeStringBase: 27) = '(27r8H/27r8N)'. |
|
98 |
self assert: ((241/251) printStringBase: 28) = '(8H/8R)'. |
|
99 |
self assert: ((241/251) storeStringBase: 28) = '(28r8H/28r8R)'. |
|
100 |
self assert: ((257/263) printStringBase: 29) = '(8P/92)'. |
|
101 |
self assert: ((257/263) storeStringBase: 29) = '(29r8P/29r92)'. |
|
102 |
self assert: ((269/271) printStringBase: 30) = '(8T/91)'. |
|
103 |
self assert: ((269/271) storeStringBase: 30) = '(30r8T/30r91)'. |
|
104 |
self assert: ((277/281) printStringBase: 31) = '(8T/92)'. |
|
105 |
self assert: ((277/281) storeStringBase: 31) = '(31r8T/31r92)'. |
|
106 |
self assert: ((283/293) printStringBase: 32) = '(8R/95)'. |
|
107 |
self assert: ((283/293) storeStringBase: 32) = '(32r8R/32r95)'. |
|
108 |
self assert: ((307/311) printStringBase: 33) = '(9A/9E)'. |
|
109 |
self assert: ((307/311) storeStringBase: 33) = '(33r9A/33r9E)'. |
|
110 |
self assert: ((313/317) printStringBase: 34) = '(97/9B)'. |
|
111 |
self assert: ((313/317) storeStringBase: 34) = '(34r97/34r9B)'. |
|
112 |
self assert: ((331/337) printStringBase: 35) = '(9G/9M)'. |
|
113 |
self assert: ((331/337) storeStringBase: 35) = '(35r9G/35r9M)'. |
|
114 |
self assert: ((347/349) printStringBase: 36) = '(9N/9P)'. |
|
115 |
self assert: ((347/349) storeStringBase: 36) = '(36r9N/36r9P)'. |
|
116 |
||
117 |
self assert: ((-2/3) printStringBase: 2) = '(-10/11)'. |
|
118 |
self assert: ((-2/3) storeStringBase: 2) = '(-2r10/2r11)'. |
|
119 |
self assert: ((5/-7) printStringBase: 3) = '(-12/21)'. |
|
120 |
self assert: ((5/-7) storeStringBase: 3) = '(-3r12/3r21)'. |
|
121 |
]. |
|
122 |
! |
|
123 |
||
701
8e6f93fb198a
added: #testFractionReduction
Claus Gittinger <cg@exept.de>
parents:
314
diff
changeset
|
124 |
testFractionReduction |
8e6f93fb198a
added: #testFractionReduction
Claus Gittinger <cg@exept.de>
parents:
314
diff
changeset
|
125 |
self assert: (100 factorial / 99 factorial) == 100. |
8e6f93fb198a
added: #testFractionReduction
Claus Gittinger <cg@exept.de>
parents:
314
diff
changeset
|
126 |
! |
8e6f93fb198a
added: #testFractionReduction
Claus Gittinger <cg@exept.de>
parents:
314
diff
changeset
|
127 |
|
159 | 128 |
testMixedAddition |
129 |
self assert:(((1/2) + (1/2)) = 1). |
|
130 |
self assert:(((1/2) + 0.5) = 1). |
|
131 |
self assert:(((1/2) + (0.5 asFixedPoint:2)) = 1). |
|
132 |
self assert:(((1/2) + (0.5 asDouble)) = 1). |
|
133 |
self assert:(((1/2) + (0.5 asFloat)) = 1). |
|
196 | 134 |
self assert:(((1/2) + (0.5 asLongFloat)) = 1). |
135 |
self assert:(((1/2) + (0.5 asShortFloat)) = 1). |
|
159 | 136 |
|
137 |
self assert:(((1/2) + ((1/2) asFixedPoint:2)) = 1). |
|
138 |
self assert:(((1/2) + ((1/2) asDouble)) = 1). |
|
139 |
self assert:(((1/2) + ((1/2) asFloat)) = 1). |
|
196 | 140 |
self assert:(((1/2) + ((1/2) asLongFloat)) = 1). |
141 |
self assert:(((1/2) + ((1/2) asShortFloat)) = 1). |
|
159 | 142 |
|
143 |
||
144 |
self assert:(((1/2) + (1/2)) = 1.0). |
|
145 |
self assert:(((1/2) + 0.5) = 1.0). |
|
146 |
self assert:(((1/2) + (0.5 asFixedPoint:2)) = 1.0). |
|
147 |
self assert:(((1/2) + (0.5 asDouble)) = 1.0). |
|
148 |
self assert:(((1/2) + (0.5 asFloat)) = 1.0). |
|
196 | 149 |
self assert:(((1/2) + (0.5 asLongFloat)) = 1.0). |
150 |
self assert:(((1/2) + (0.5 asShortFloat)) = 1.0). |
|
159 | 151 |
|
152 |
self assert:(((1/2) + ((1/2) asFixedPoint:2)) = 1.0). |
|
153 |
self assert:(((1/2) + ((1/2) asDouble)) = 1.0). |
|
154 |
self assert:(((1/2) + ((1/2) asFloat)) = 1.0). |
|
196 | 155 |
self assert:(((1/2) + ((1/2) asLongFloat)) = 1.0). |
156 |
self assert:(((1/2) + ((1/2) asShortFloat)) = 1.0). |
|
159 | 157 |
|
158 |
self assert:((0.5 + (1/2)) = 1). |
|
159 |
self assert:(((0.5 asFixedPoint:2) + (1/2)) = 1). |
|
160 |
self assert:((((0.5 asFloat) asDouble) + (1/2)) = 1). |
|
161 |
||
162 |
self assert:((1 + (1/2)) = (3/2)). |
|
163 |
self assert:((1.0 + (1/2)) = (3/2)). |
|
164 |
self assert:(((1 asFixedPoint:2) + (1/2)) = (3/2)). |
|
165 |
self assert:((((1 asFloat) asDouble) + (1/2)) = (3/2)). |
|
166 |
! |
|
167 |
||
168 |
testMixedAddition2 |
|
169 |
|fix1 fix2| |
|
170 |
||
171 |
fix1 := (1/2) asFixedPoint:2. |
|
172 |
fix2 := (1/2) asFixedPoint:2. |
|
173 |
||
174 |
self assert:((fix1 + (1/2)) = 1). |
|
175 |
self assert:((fix1 + 0.5) = 1). |
|
176 |
self assert:((fix1 + (0.5 asFixedPoint:2)) = 1). |
|
177 |
self assert:((fix1 + (0.5 asDouble)) = 1). |
|
178 |
self assert:((fix1 + (0.5 asFloat)) = 1). |
|
196 | 179 |
self assert:((fix1 + (0.5 asLongFloat)) = 1). |
180 |
self assert:((fix1 + (0.5 asShortFloat)) = 1). |
|
159 | 181 |
|
182 |
self assert:((fix1 + ((1/2) asFixedPoint:2)) = 1). |
|
183 |
self assert:((fix1 + ((1/2) asDouble)) = 1). |
|
184 |
self assert:((fix1 + ((1/2) asFloat)) = 1). |
|
196 | 185 |
self assert:((fix1 + ((1/2) asLongFloat)) = 1). |
186 |
self assert:((fix1 + ((1/2) asShortFloat)) = 1). |
|
159 | 187 |
|
188 |
||
189 |
self assert:((fix1 + (1/2)) = 1.0). |
|
190 |
self assert:((fix1 + 0.5) = 1.0). |
|
191 |
self assert:((fix1 + (0.5 asFixedPoint:2)) = 1.0). |
|
192 |
self assert:((fix1 + (0.5 asDouble)) = 1.0). |
|
193 |
self assert:((fix1 + (0.5 asFloat)) = 1.0). |
|
196 | 194 |
self assert:((fix1 + (0.5 asLongFloat)) = 1.0). |
195 |
self assert:((fix1 + (0.5 asShortFloat)) = 1.0). |
|
159 | 196 |
|
197 |
self assert:((fix1 + ((1/2) asFixedPoint:2)) = 1.0). |
|
198 |
self assert:((fix1 + ((1/2) asDouble)) = 1.0). |
|
199 |
self assert:((fix1 + ((1/2) asFloat)) = 1.0). |
|
196 | 200 |
self assert:((fix1 + ((1/2) asLongFloat)) = 1.0). |
201 |
self assert:((fix1 + ((1/2) asShortFloat)) = 1.0). |
|
159 | 202 |
|
203 |
self assert:((0.5 + (fix1)) = 1). |
|
204 |
self assert:(((0.5 asFixedPoint:2) + fix1) = 1). |
|
205 |
self assert:((((0.5 asFloat) asDouble) + (fix1)) = 1). |
|
206 |
||
207 |
self assert:((1 + fix1) = (3/2)). |
|
208 |
self assert:((1.0 + fix1) = (3/2)). |
|
209 |
self assert:(((1 asFixedPoint:2) + fix1) = (3/2)). |
|
210 |
self assert:((((1 asFloat) asDouble) + fix1) = (3/2)). |
|
211 |
! ! |
|
212 |
||
213 |
!FractionTest class methodsFor:'documentation'! |
|
214 |
||
215 |
version |
|
216 |
^ '$Header$' |
|
217 |
! ! |
|
1068 | 218 |