@@ -88,9 +88,22 @@ def test_new_store(self):
8888 os .remove (store_file )
8989
9090 def test_assign_valid_types (self ):
91- for method in (self ._setattr , self ._setitem ):
92- for name , value in self .TEST_DATA :
93- method (name , value )
91+ for name , value in self .TEST_DATA :
92+ self .store [name ] = value
93+ self .store [name ] == value
94+ getattr (self .store , name ) == value
95+
96+ del self .store [name ]
97+ self .assertRaises (KeyError , self ._getitem (name ))
98+ self .assertRaises (AttributeError , self ._getattr (name ))
99+
100+ setattr (self .store , name , value )
101+ self .store [name ] == value
102+ getattr (self .store , name ) == value
103+
104+ delattr (self .store , name )
105+ self .assertRaises (KeyError , self ._getitem (name ))
106+ self .assertRaises (AttributeError , self ._getattr (name ))
94107
95108 def test_assign_invalid_types (self ):
96109 for method in (self ._setattr , self ._setitem ):
@@ -142,16 +155,27 @@ def test_nested_dict_helper(self):
142155 self .assertRaises (KeyError , self ._setitem ("dictionary.noexist" , None ))
143156 self .assertRaises (KeyError , self ._getitem ("dictionary.noexist" ))
144157
145- self .store .dictionary = {"a" : 1 }
146- self .store ["dictionary.exist" ] = None
147- self .assertIsNone (self .store .dictionary ["exist" ])
148- self .assertIsNone (self .store ["dictionary.exist" ])
149-
150- self .store ["dictionary.a" ] = 2
151- del self .store ["dictionary.exist" ]
152- self .assertRaises (KeyError , self ._getitem ("dictionary.exist" ))
153- self .assertNotIn ("exist" , self .store .dictionary )
154- self .assertEqual (self .store .dictionary , {"a" : 2 })
158+ for access_key in ("dictionary.exist" , ("dictionary" , "exist" ), ["dictionary" , "exist" ]):
159+ self .store .dictionary = {"a" : 1 }
160+ self .store ["dictionary.exist" ] = None
161+ self .assertIsNone (self .store .dictionary ["exist" ])
162+ self .assertIsNone (self .store [access_key ])
163+
164+ self .store ["dictionary.a" ] = 2
165+ del self .store [access_key ]
166+ self .assertRaises (KeyError , self ._getitem (access_key ))
167+ self .assertNotIn ("exist" , self .store .dictionary )
168+ self .assertEqual (self .store .dictionary , {"a" : 2 })
169+
170+ def test_nested_getitem (self ):
171+ self .store ["list" ] = [
172+ {
173+ "key" : [None , "value" ]
174+ }
175+ ]
176+ assert self .store ["list" , 0 , "key" , 1 ] == "value"
177+ assert self .store [["list" , 0 , "key" , 1 ]] == "value"
178+ self .assertRaises (TypeError , self ._getitem ("list.0.key.1" ))
155179
156180 def test_del (self ):
157181 self .store .key = None
@@ -245,7 +269,7 @@ def test_transaction_commit(self):
245269 self .store .value = 2
246270 del self .store .remove_me
247271 self .assertEqual (self .store .value , 2 )
248- self .assertRaises (KeyError , self ._getattr ("remove_me" ))
272+ self .assertRaises (AttributeError , self ._getattr ("remove_me" ))
249273
250274 def test_transaction_write (self ):
251275 with self .store :
0 commit comments