1 "{ Package: 'stx:goodies/petitparser' }" |
|
2 |
|
3 PPCompositeParserTest subclass:#PPArithmeticParserTest |
|
4 instanceVariableNames:'' |
|
5 classVariableNames:'' |
|
6 poolDictionaries:'' |
|
7 category:'PetitTests-Tests' |
|
8 ! |
|
9 |
|
10 |
|
11 !PPArithmeticParserTest methodsFor:'accessing'! |
|
12 |
|
13 parserClass |
|
14 ^ PPArithmeticParser |
|
15 ! ! |
|
16 |
|
17 !PPArithmeticParserTest methodsFor:'testing'! |
|
18 |
|
19 testNum |
|
20 self assert: '0' is: 0. |
|
21 self assert: '0.0' is: 0.0. |
|
22 self assert: '1' is: 1. |
|
23 self assert: '1.2' is: 1.2. |
|
24 self assert: '34' is: 34. |
|
25 self assert: '56.78' is: 56.78. |
|
26 self assert: '-9' is: -9. |
|
27 self assert: '-9.9' is: -9.9 |
|
28 ! ! |
|
29 |
|
30 !PPArithmeticParserTest methodsFor:'testing-expression'! |
|
31 |
|
32 testBrackets |
|
33 self assert: '(1)' is: 1. |
|
34 self assert: '(1 + 2)' is: 3. |
|
35 |
|
36 self assert: '((1))' is: 1. |
|
37 self assert: '((1 + 2))' is: 3. |
|
38 |
|
39 self assert: '2 * (3 + 4)' is: 14. |
|
40 self assert: '(2 + 3) * 4' is: 20. |
|
41 self assert: '6 / (2 + 4)' is: 1. |
|
42 self assert: '(2 + 6) / 2' is: 4 |
|
43 ! |
|
44 |
|
45 testPriority |
|
46 self assert: '2 * 3 + 4' is: 10. |
|
47 self assert: '2 + 3 * 4' is: 14. |
|
48 self assert: '6 / 3 + 4' is: 6. |
|
49 self assert: '2 + 6 / 2' is: 5 |
|
50 ! ! |
|
51 |
|
52 !PPArithmeticParserTest methodsFor:'testing-operations'! |
|
53 |
|
54 testAdd |
|
55 self assert: '1 + 2' is: 3. |
|
56 self assert: '2 + 1' is: 3. |
|
57 self assert: '1 + 2.3' is: 3.3. |
|
58 self assert: '2.3 + 1' is: 3.3. |
|
59 self assert: '1 + -2' is: -1. |
|
60 self assert: '-2 + 1' is: -1 |
|
61 ! |
|
62 |
|
63 testAddMany |
|
64 self assert: '1' is: 1. |
|
65 self assert: '1 + 2' is: 3. |
|
66 self assert: '1 + 2 + 3' is: 6. |
|
67 self assert: '1 + 2 + 3 + 4' is: 10. |
|
68 self assert: '1 + 2 + 3 + 4 + 5' is: 15 |
|
69 ! |
|
70 |
|
71 testDiv |
|
72 self assert: '12 / 3' is: 4. |
|
73 self assert: '-16 / -4' is: 4 |
|
74 ! |
|
75 |
|
76 testDivMany |
|
77 self assert: '100 / 2' is: 50. |
|
78 self assert: '100 / 2 / 2' is: 25. |
|
79 self assert: '100 / 2 / 2 / 5' is: 5. |
|
80 self assert: '100 / 2 / 2 / 5 / 5' is: 1 |
|
81 |
|
82 ! |
|
83 |
|
84 testMul |
|
85 self assert: '2 * 3' is: 6. |
|
86 self assert: '2 * -4' is: -8 |
|
87 ! |
|
88 |
|
89 testMulMany |
|
90 self assert: '1 * 2' is: 2. |
|
91 self assert: '1 * 2 * 3' is: 6. |
|
92 self assert: '1 * 2 * 3 * 4' is: 24. |
|
93 self assert: '1 * 2 * 3 * 4 * 5' is: 120 |
|
94 ! |
|
95 |
|
96 testPow |
|
97 self assert: '2 ^ 3' is: 8. |
|
98 self assert: '-2 ^ 3' is: -8. |
|
99 self assert: '-2 ^ -3' is: -0.125 |
|
100 ! |
|
101 |
|
102 testPowMany |
|
103 self assert: '4 ^ 3' is: 64. |
|
104 self assert: '4 ^ 3 ^ 2' is: 262144. |
|
105 self assert: '4 ^ 3 ^ 2 ^ 1' is: 262144. |
|
106 self assert: '4 ^ 3 ^ 2 ^ 1 ^ 0' is: 262144 |
|
107 ! |
|
108 |
|
109 testSub |
|
110 self assert: '1 - 2' is: -1. |
|
111 self assert: '1.2 - 1.2' is: 0. |
|
112 self assert: '1 - -2' is: 3. |
|
113 self assert: '-1 - -2' is: 1 |
|
114 ! |
|
115 |
|
116 testSubMany |
|
117 self assert: '1' is: 1. |
|
118 self assert: '1 - 2' is: -1. |
|
119 self assert: '1 - 2 - 3' is: -4. |
|
120 self assert: '1 - 2 - 3 - 4' is: -8. |
|
121 self assert: '1 - 2 - 3 - 4 - 5' is: -13 |
|
122 ! ! |
|
123 |
|
124 !PPArithmeticParserTest class methodsFor:'documentation'! |
|
125 |
|
126 version |
|
127 ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPArithmeticParserTest.st,v 1.4 2014-03-04 14:34:09 cg Exp $' |
|
128 ! |
|
129 |
|
130 version_CVS |
|
131 ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPArithmeticParserTest.st,v 1.4 2014-03-04 14:34:09 cg Exp $' |
|
132 ! |
|
133 |
|
134 version_SVN |
|
135 ^ '$Id: PPArithmeticParserTest.st,v 1.4 2014-03-04 14:34:09 cg Exp $' |
|
136 ! ! |
|
137 |
|