(self, typecallable, creator=None)
| 1028 | direct ^= [e, creator()] |
| 1029 | |
| 1030 | def _test_set_bulk(self, typecallable, creator=None): |
| 1031 | if creator is None: |
| 1032 | creator = self.entity_maker |
| 1033 | |
| 1034 | class Foo: |
| 1035 | pass |
| 1036 | |
| 1037 | canary = Canary() |
| 1038 | instrumentation.register_class(Foo) |
| 1039 | d = _register_attribute( |
| 1040 | Foo, |
| 1041 | "attr", |
| 1042 | uselist=True, |
| 1043 | typecallable=typecallable, |
| 1044 | useobject=True, |
| 1045 | ) |
| 1046 | canary.listen(d) |
| 1047 | |
| 1048 | obj = Foo() |
| 1049 | direct = obj.attr |
| 1050 | |
| 1051 | e1 = creator() |
| 1052 | obj.attr.add(e1) |
| 1053 | |
| 1054 | like_me = typecallable() |
| 1055 | e2 = creator() |
| 1056 | like_me.add(e2) |
| 1057 | |
| 1058 | self.assert_(obj.attr is direct) |
| 1059 | obj.attr = like_me |
| 1060 | self.assert_(obj.attr is not direct) |
| 1061 | self.assert_(obj.attr is not like_me) |
| 1062 | self.assert_(obj.attr == {e2}) |
| 1063 | self.assert_(e1 in canary.removed) |
| 1064 | self.assert_(e2 in canary.added) |
| 1065 | |
| 1066 | e3 = creator() |
| 1067 | real_set = {e3} |
| 1068 | obj.attr = real_set |
| 1069 | self.assert_(obj.attr is not real_set) |
| 1070 | self.assert_(obj.attr == {e3}) |
| 1071 | self.assert_(e2 in canary.removed) |
| 1072 | self.assert_(e3 in canary.added) |
| 1073 | |
| 1074 | e4 = creator() |
| 1075 | try: |
| 1076 | obj.attr = [e4] |
| 1077 | self.assert_(False) |
| 1078 | except TypeError: |
| 1079 | self.assert_(e4 not in canary.data) |
| 1080 | self.assert_(e3 in canary.data) |
| 1081 | |
| 1082 | def _test_set_dataclasses(self, typecallable): |
| 1083 | creator = self.SimpleComparableEntity |
no test coverage detected