MCPcopy Create free account
hub / github.com/sqlalchemy/sqlalchemy / _test_dict

Method _test_dict

test/orm/test_collection.py:1264–1390  ·  view source on GitHub ↗
(self, typecallable, creator=None)

Source from the content-addressed store, hash-verified

1262 assert e in canary.appended_wo_mutation
1263
1264 def _test_dict(self, typecallable, creator=None):
1265 if creator is None:
1266 creator = self.dictable_entity
1267
1268 class Foo:
1269 pass
1270
1271 canary = Canary()
1272 instrumentation.register_class(Foo)
1273 d = _register_attribute(
1274 Foo,
1275 "attr",
1276 uselist=True,
1277 typecallable=typecallable,
1278 useobject=True,
1279 )
1280 canary.listen(d)
1281
1282 obj = Foo()
1283 adapter = collections.collection_adapter(obj.attr)
1284 direct = obj.attr
1285 control = dict()
1286
1287 def assert_eq():
1288 self.assert_(set(direct.values()) == canary.data)
1289 self.assert_(set(adapter) == canary.data)
1290 self.assert_(direct == control)
1291
1292 def addall(*values):
1293 for item in values:
1294 direct.set(item)
1295 control[item.a] = item
1296 assert_eq()
1297
1298 def zap():
1299 for item in list(adapter):
1300 direct.remove(item)
1301 control.clear()
1302
1303 # assume an 'set' method is available for tests
1304 addall(creator())
1305
1306 if hasattr(direct, "__setitem__"):
1307 e = creator()
1308 direct[e.a] = e
1309 control[e.a] = e
1310 assert_eq()
1311
1312 e = creator(e.a, e.b)
1313 direct[e.a] = e
1314 control[e.a] = e
1315 assert_eq()
1316
1317 if hasattr(direct, "__delitem__"):
1318 e = creator()
1319 addall(e)
1320
1321 del direct[e.a]

Callers 5

test_dict_subclassMethod · 0.95
test_dict_subclass2Method · 0.95
test_dict_subclass3Method · 0.95
test_dict_duckMethod · 0.95
test_dict_emulatesMethod · 0.95

Calls 11

listenMethod · 0.95
CanaryClass · 0.85
creatorFunction · 0.85
_register_attributeFunction · 0.70
FooClass · 0.70
assert_Method · 0.45
clearMethod · 0.45
popMethod · 0.45
popitemMethod · 0.45
setdefaultMethod · 0.45
updateMethod · 0.45

Tested by

no test coverage detected