summaryrefslogtreecommitdiff
path: root/src/lxml/tests
diff options
context:
space:
mode:
authorStefan Behnel <stefan_ml@behnel.de>2014-02-17 20:58:11 +0100
committerStefan Behnel <stefan_ml@behnel.de>2014-02-17 20:58:11 +0100
commit17928f9e048c549c140ade0ebf0e4ae749054d22 (patch)
tree56c8db3885caf2e8f26fa5bfbc06ba1335f32ba6 /src/lxml/tests
parent1e4f850b70ce848c041f2f086661e29d2dd6b76a (diff)
downloadpython-lxml-17928f9e048c549c140ade0ebf0e4ae749054d22.tar.gz
use dedicated immutable mapping type for empty immutable mappings instead of DictProxy to provide the complete MutableMapping API
Diffstat (limited to 'src/lxml/tests')
-rw-r--r--src/lxml/tests/test_etree.py29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/lxml/tests/test_etree.py b/src/lxml/tests/test_etree.py
index b8c10eb7..edb52cb4 100644
--- a/src/lxml/tests/test_etree.py
+++ b/src/lxml/tests/test_etree.py
@@ -1698,7 +1698,34 @@ class ETreeOnlyTestCase(HelperTestCase):
self.assertRaises(TypeError, c.insert, 0, el)
self.assertRaises(TypeError, c.set, "myattr", "test")
- # test passing 'None' to dump
+ def test_comment_immutable_attrib(self):
+ c = self.etree.Comment()
+ self.assertEqual(0, len(c.attrib))
+
+ self.assertFalse(c.attrib.__contains__('nope'))
+ self.assertFalse('nope' in c.attrib)
+ self.assertFalse('nope' in c.attrib.keys())
+ self.assertFalse('nope' in c.attrib.values())
+ self.assertFalse(('nope', 'huhu') in c.attrib.items())
+
+ self.assertEqual([], list(c.attrib))
+ self.assertEqual([], list(c.attrib.keys()))
+ self.assertEqual([], list(c.attrib.items()))
+ self.assertEqual([], list(c.attrib.values()))
+ self.assertEqual([], list(c.attrib.iterkeys()))
+ self.assertEqual([], list(c.attrib.iteritems()))
+ self.assertEqual([], list(c.attrib.itervalues()))
+
+ self.assertEqual('HUHU', c.attrib.pop('nope', 'HUHU'))
+ self.assertRaises(KeyError, c.attrib.pop, 'nope')
+
+ self.assertRaises(KeyError, c.attrib.__getitem__, 'only')
+ self.assertRaises(KeyError, c.attrib.__getitem__, 'names')
+ self.assertRaises(KeyError, c.attrib.__getitem__, 'nope')
+ self.assertRaises(KeyError, c.attrib.__setitem__, 'nope', 'yep')
+ self.assertRaises(KeyError, c.attrib.__delitem__, 'nope')
+
+ # test passing 'None' to dump()
def test_dump_none(self):
self.assertRaises(TypeError, self.etree.dump, None)