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