|
1 "{ Package: 'stx:goodies/petitparser/tests' }" |
|
2 |
|
3 TestCase subclass:#PPContextMementoTest |
|
4 instanceVariableNames:'memento' |
|
5 classVariableNames:'' |
|
6 poolDictionaries:'' |
|
7 category:'PetitTests-Tests' |
|
8 ! |
|
9 |
|
10 !PPContextMementoTest methodsFor:'accessing'! |
|
11 |
|
12 memento |
|
13 ^ PPContextMemento new |
|
14 ! ! |
|
15 |
|
16 !PPContextMementoTest methodsFor:'running'! |
|
17 |
|
18 setUp |
|
19 memento := self memento. |
|
20 ! ! |
|
21 |
|
22 !PPContextMementoTest methodsFor:'tests'! |
|
23 |
|
24 testEquality |
|
25 | m1 m2 | |
|
26 m1 := self memento. |
|
27 m2 := self memento. |
|
28 |
|
29 self assert: m1 = m2. |
|
30 |
|
31 m1 propertyAt: #foo put: #bar. |
|
32 self assert: (m1 = m2) not. |
|
33 |
|
34 m2 propertyAt: #foo put: #bar. |
|
35 self assert: m1 = m2. |
|
36 ! |
|
37 |
|
38 testEquality2 |
|
39 | m1 m2 | |
|
40 m1 := self memento. |
|
41 m2 := self memento. |
|
42 |
|
43 self assert: m1 = m2. |
|
44 |
|
45 m1 propertyAt: #foo put: #bar. |
|
46 self assert: (m1 = m2) not. |
|
47 |
|
48 m2 propertyAt: #bar put: #foo. |
|
49 self assert: (m1 = m2) not. |
|
50 ! |
|
51 |
|
52 testGetProperty |
|
53 |
|
54 | c retval retval2 | |
|
55 c := OrderedCollection new. |
|
56 |
|
57 memento propertyAt: #foo put: c. |
|
58 |
|
59 retval := memento propertyAt: #foo. |
|
60 self assert: retval size = c size. |
|
61 self assert: (retval == c) not. |
|
62 self assert: retval = c. |
|
63 |
|
64 c add: #element. |
|
65 self assert: (retval = c) not. |
|
66 |
|
67 retval2 := memento propertyAt: #foo. |
|
68 self assert: (retval = retval2). |
|
69 self assert: (retval == retval2) not. |
|
70 |
|
71 retval add: #element. |
|
72 self assert: (retval = retval2) not. |
|
73 ! |
|
74 |
|
75 testKeysAndValuesDo |
|
76 | | |
|
77 memento keysAndValuesDo: [ :key :value | |
|
78 self signalFailure: 'Should not be called' |
|
79 ]. |
|
80 ! |
|
81 |
|
82 testKeysAndValuesDo2 |
|
83 | c1 c2 | |
|
84 c1 := OrderedCollection new. |
|
85 c2 := OrderedCollection new. |
|
86 |
|
87 memento propertyAt: #foo put: c1. |
|
88 memento propertyAt: #bar put: c2. |
|
89 |
|
90 memento keysAndValuesDo: [ :key :value | |
|
91 self assert: (value == c1) not. |
|
92 self assert: (value == c2) not. |
|
93 ]. |
|
94 ! |
|
95 |
|
96 testPutProperty |
|
97 | c retval | |
|
98 c := OrderedCollection new. |
|
99 self assert: (memento hasProperty: #foo) not. |
|
100 self assert: (memento hasProperty: #bar) not. |
|
101 |
|
102 self should: [ memento propertyAt: #foo ] raise: Error. |
|
103 self assert: (memento propertyAt: #foo ifAbsent: [ c ]) == c. |
|
104 |
|
105 retval := memento propertyAt: #foo ifAbsentPut: [ c ]. |
|
106 self assert: retval size = c size. |
|
107 self assert: (retval == c) not. |
|
108 self assert: retval = c. |
|
109 self assert: (memento hasProperty: #foo). |
|
110 |
|
111 retval := memento propertyAt: #bar put: c. |
|
112 self assert: retval size = c size. |
|
113 self assert: (retval == c) not. |
|
114 self assert: retval = c. |
|
115 self assert: (memento hasProperty: #foo). |
|
116 ! ! |
|
117 |