@@ -115,66 +115,98 @@ def test_key_completions(self):
115115
116116 def test_caching_on (self ):
117117 # caching is turned on by default
118+
119+ # setup store
118120 store = CountingDict ()
119121 eq (0 , store .counter ['__getitem__' , 'attrs' ])
120122 eq (0 , store .counter ['__setitem__' , 'attrs' ])
121123 store ['attrs' ] = json .dumps (dict (foo = 'xxx' , bar = 42 )).encode ('ascii' )
122124 eq (0 , store .counter ['__getitem__' , 'attrs' ])
123125 eq (1 , store .counter ['__setitem__' , 'attrs' ])
126+
127+ # setup attributes
124128 a = self .init_attributes (store )
129+
130+ # test __getitem__ causes all attributes to be cached
125131 eq (a ['foo' ], 'xxx' )
126132 eq (1 , store .counter ['__getitem__' , 'attrs' ])
127133 eq (a ['bar' ], 42 )
128134 eq (1 , store .counter ['__getitem__' , 'attrs' ])
129135 eq (a ['foo' ], 'xxx' )
130136 eq (1 , store .counter ['__getitem__' , 'attrs' ])
137+
138+ # test __setitem__ updates the cache
131139 a ['foo' ] = 'yyy'
132140 eq (2 , store .counter ['__getitem__' , 'attrs' ])
133141 eq (2 , store .counter ['__setitem__' , 'attrs' ])
134142 eq (a ['foo' ], 'yyy' )
135143 eq (2 , store .counter ['__getitem__' , 'attrs' ])
136144 eq (2 , store .counter ['__setitem__' , 'attrs' ])
145+
146+ # test update() updates the cache
137147 a .update (foo = 'zzz' , bar = 84 )
138148 eq (3 , store .counter ['__getitem__' , 'attrs' ])
139149 eq (3 , store .counter ['__setitem__' , 'attrs' ])
140150 eq (a ['foo' ], 'zzz' )
141151 eq (a ['bar' ], 84 )
142152 eq (3 , store .counter ['__getitem__' , 'attrs' ])
143153 eq (3 , store .counter ['__setitem__' , 'attrs' ])
154+
155+ # test __contains__ uses the cache
144156 assert 'foo' in a
145157 eq (3 , store .counter ['__getitem__' , 'attrs' ])
146158 eq (3 , store .counter ['__setitem__' , 'attrs' ])
147159 assert 'spam' not in a
148160 eq (3 , store .counter ['__getitem__' , 'attrs' ])
149161 eq (3 , store .counter ['__setitem__' , 'attrs' ])
150162
163+ # test __delitem__ updates the cache
164+ del a ['bar' ]
165+ eq (4 , store .counter ['__getitem__' , 'attrs' ])
166+ eq (4 , store .counter ['__setitem__' , 'attrs' ])
167+ assert 'bar' not in a
168+ eq (4 , store .counter ['__getitem__' , 'attrs' ])
169+ eq (4 , store .counter ['__setitem__' , 'attrs' ])
170+
151171 def test_caching_off (self ):
172+
173+ # setup store
152174 store = CountingDict ()
153175 eq (0 , store .counter ['__getitem__' , 'attrs' ])
154176 eq (0 , store .counter ['__setitem__' , 'attrs' ])
155177 store ['attrs' ] = json .dumps (dict (foo = 'xxx' , bar = 42 )).encode ('ascii' )
156178 eq (0 , store .counter ['__getitem__' , 'attrs' ])
157179 eq (1 , store .counter ['__setitem__' , 'attrs' ])
180+
181+ # setup attributes
158182 a = self .init_attributes (store , cache = False )
183+
184+ # test __getitem__
159185 eq (a ['foo' ], 'xxx' )
160186 eq (1 , store .counter ['__getitem__' , 'attrs' ])
161187 eq (a ['bar' ], 42 )
162188 eq (2 , store .counter ['__getitem__' , 'attrs' ])
163189 eq (a ['foo' ], 'xxx' )
164190 eq (3 , store .counter ['__getitem__' , 'attrs' ])
191+
192+ # test __setitem__
165193 a ['foo' ] = 'yyy'
166194 eq (4 , store .counter ['__getitem__' , 'attrs' ])
167195 eq (2 , store .counter ['__setitem__' , 'attrs' ])
168196 eq (a ['foo' ], 'yyy' )
169197 eq (5 , store .counter ['__getitem__' , 'attrs' ])
170198 eq (2 , store .counter ['__setitem__' , 'attrs' ])
199+
200+ # test update()
171201 a .update (foo = 'zzz' , bar = 84 )
172202 eq (6 , store .counter ['__getitem__' , 'attrs' ])
173203 eq (3 , store .counter ['__setitem__' , 'attrs' ])
174204 eq (a ['foo' ], 'zzz' )
175205 eq (a ['bar' ], 84 )
176206 eq (8 , store .counter ['__getitem__' , 'attrs' ])
177207 eq (3 , store .counter ['__setitem__' , 'attrs' ])
208+
209+ # test __contains__
178210 assert 'foo' in a
179211 eq (9 , store .counter ['__getitem__' , 'attrs' ])
180212 eq (3 , store .counter ['__setitem__' , 'attrs' ])
0 commit comments