Test that mapping ABC views use their ._mapping's __repr__.
(self)
| 701 | self.assertRaises(AttributeError, pprint.pformat, BMV({})) |
| 702 | |
| 703 | def test_mapping_subclass_repr(self): |
| 704 | """Test that mapping ABC views use their ._mapping's __repr__.""" |
| 705 | class MyMapping(Mapping): |
| 706 | def __init__(self, keys=None): |
| 707 | self._keys = {} if keys is None else dict.fromkeys(keys) |
| 708 | |
| 709 | def __getitem__(self, item): |
| 710 | return self._keys[item] |
| 711 | |
| 712 | def __len__(self): |
| 713 | return len(self._keys) |
| 714 | |
| 715 | def __iter__(self): |
| 716 | return iter(self._keys) |
| 717 | |
| 718 | def __repr__(self): |
| 719 | return f"{self.__class__.__name__}([{', '.join(map(repr, self._keys.keys()))}])" |
| 720 | |
| 721 | m = MyMapping(["test", 1]) |
| 722 | self.assertEqual(repr(m), "MyMapping(['test', 1])") |
| 723 | short_view_repr = "%s(MyMapping(['test', 1]))" |
| 724 | self.assertEqual(repr(m.keys()), short_view_repr % "KeysView") |
| 725 | self.assertEqual(pprint.pformat(m.items()), short_view_repr % "ItemsView") |
| 726 | self.assertEqual(pprint.pformat(m.keys()), short_view_repr % "KeysView") |
| 727 | self.assertEqual(pprint.pformat(MappingView(m)), short_view_repr % "MappingView") |
| 728 | self.assertEqual(pprint.pformat(m.values()), short_view_repr % "ValuesView") |
| 729 | |
| 730 | alpha = "abcdefghijklmnopqrstuvwxyz" |
| 731 | m = MyMapping(alpha) |
| 732 | alpha_repr = ", ".join(map(repr, list(alpha))) |
| 733 | long_view_repr = "%%s(MyMapping([%s]))" % alpha_repr |
| 734 | self.assertEqual(repr(m), "MyMapping([%s])" % alpha_repr) |
| 735 | self.assertEqual(repr(m.keys()), long_view_repr % "KeysView") |
| 736 | self.assertEqual(pprint.pformat(m.items()), long_view_repr % "ItemsView") |
| 737 | self.assertEqual(pprint.pformat(m.keys()), long_view_repr % "KeysView") |
| 738 | self.assertEqual(pprint.pformat(MappingView(m)), long_view_repr % "MappingView") |
| 739 | self.assertEqual(pprint.pformat(m.values()), long_view_repr % "ValuesView") |
| 740 | |
| 741 | def test_empty_simple_namespace(self): |
| 742 | ns = types.SimpleNamespace() |
nothing calls this directly
no test coverage detected