def test_Element_setter_errors(self): node = htree.Element('p') text1 = htree.Text('text1') with self.assertRaises(IndexError): node[0] = text1 with self.assertRaises(TypeError): node[0] = None emptynode = htree.Element('br') with self.assertRaises(TypeError): emptynode[0] = text1
def test_Element_iter_ancestors(self): p = htree.Element('p') em = htree.Element('em') strong = htree.Element('strong') a1 = htree.Element('a') a2 = htree.Element('a') p.append(em) em.append(strong) strong.append(a1) p.append(a2) self.assertEqual(list(a1.iter_ancestors()), [strong, em, p]) self.assertEqual(list(a2.iter_ancestors()), [p]) self.assertEqual(list(strong.iter_ancestors()), [em, p])
def test_Element_with_attr_to_string(self): p = htree.Element('p', id='foo') img = htree.Element('img', src='example.jpg', alt='An image.') p.append(img) self.assertEqual(p.to_string(), dedent( ''' <p id="foo"><img alt="An image." src="example.jpg"></p> ''' )) self.assertEqual(p.to_string(format='xhtml'), dedent( ''' <p id="foo"><img alt="An image." src="example.jpg" /></p> ''' ))
def test_Element_iter_decendents(self): p = htree.Element('p') em = htree.Element('em') strong = htree.Element('strong') a1 = htree.Element('a') a2 = htree.Element('a') p.append(em) em.append(strong) strong.append(a1) p.append(a2) self.assertEqual(list(p.iter_decendents()), [p, em, strong, a1, a2]) self.assertEqual(list(p.iter_decendents('em')), [em]) self.assertEqual(list(p.iter_decendents('a')), [a1, a2]) self.assertEqual(list(p.iter_decendents('br')), [])
def test_Element_iter_children(self): node = htree.Element('p') text1 = htree.Text('text1') text2 = htree.Text('text2') node.append(text1) node.append(text2) self.assertEqual([x for x in node], [text1, text2])
def test_Element_contains(self): node = htree.Element('p') text1 = htree.Text('text1') node.append(text1) self.assertTrue(text1 in node) text2 = htree.Text('text2') self.assertFalse(text2 in node)
def test_Element_copy(self): parent = htree.Element(None) node = htree.Element('p', id='foo') node.append(htree.Text('some text)')) parent.append(node) copy = node.copy() self.assertNotEqual(id(node), id(copy)) self.assertTrue(htree.is_element(node)) self.assertTrue(htree.is_element(copy)) self.assertEqual(node.tag, copy.tag) self.assertEqual(node[:], copy[:]) self.assertNotEqual(node.parent, copy.parent) self.assertEqual(copy.parent, None) self.assertEqual(node.parent, parent) self.assertEqual(node.items(), copy.items()) copy.set('class', 'bar') self.assertNotEqual(node.items(), copy.items())
def test_Element_with_child_to_string(self): node = htree.Element('div') node.append(htree.Element('p')) self.assertEqual(node.to_string(), dedent( ''' <div> <p></p> </div> ''' )) self.assertEqual(node.to_string(format='xhtml'), dedent( ''' <div> <p></p> </div> ''' ))
def test_Element_with_children_tag_is_None_to_string(self): node = htree.Element() node.extend([htree.Element('p'), htree.Element('br'), htree.Element('hr')]) self.assertEqual(node.to_string(), dedent( ''' <p></p> <br> <hr> ''' )) self.assertEqual(node.to_string(format='xhtml'), dedent( ''' <p></p> <br /> <hr /> ''' ))
def test_Element_clear(self): node = htree.Element('p', id='foo') child = htree.Text('some text)') node.append(child) node.clear() self.assertEqual(node.tag, 'p') self.assertEqual(list(node.items()), []) self.assertEqual(node[:], []) self.assertEqual(child.parent, None)
def test_Element_extend(self): node = htree.Element('p') text1 = htree.Text('text1') text2 = htree.Text('text2') self.assertEqual(len(node), 0) node.extend([text1, text2]) self.assertEqual(len(node), 2) self.assertEqual(text1.parent, node) self.assertEqual(text2.parent, node) self.assertEqual(node[:], [text1, text2])
def test_Element_deleter(self): node = htree.Element('p') text1 = htree.Text('text1') text2 = htree.Text('text2') node.extend([text1, text2]) self.assertEqual(len(node), 2) del node[1] self.assertEqual(len(node), 1) self.assertEqual(text2.parent, None) self.assertEqual(text1.parent, node)
def test_Element_remove(self): node = htree.Element('p') text1 = htree.Text('text1') text2 = htree.Text('text2') node.extend([text1, text2]) self.assertEqual(len(node), 2) node.remove(text1) self.assertEqual(len(node), 1) self.assertEqual(text1.parent, None) self.assertEqual(node[:], [text2])
def test_Element_setter(self): node = htree.Element('p') text = htree.Text('some text') othertext = htree.Text('other text') node.append(text) self.assertEqual(len(node), 1) node[0] = othertext self.assertEqual(len(node), 1) self.assertEqual(node[:], [othertext]) self.assertEqual(othertext.parent, node) self.assertNotEqual(node[0], text)
def test_Element_setter_slice(self): node = htree.Element('p') text1 = htree.Text('text1') text2 = htree.Text('text2') node.extend([text1, text2]) self.assertEqual(len(node), 2) text3 = htree.Text('text3') text4 = htree.Text('text4') node[1:2] = [text3, text4] self.assertEqual(len(node), 3) self.assertEqual(node[:], [text1, text3, text4])
def test_Element_index(self): node = htree.Element('p') text1 = htree.Text('text1') node.append(text1) text2 = htree.Text('text2') node.append(text2) self.assertEqual(node.index(text1), 0) self.assertEqual(node.index(text2), 1) text3 = htree.Text('text3') with self.assertRaises(ValueError): node.index(text3)
def test_Element_with_attr_escape_to_string(self): img = htree.Element('img', src='example.jpg', alt='"text" & <tag>') self.assertEqual(img.to_string(), dedent( ''' <img alt=""text" & <tag>" src="example.jpg"> ''' )) self.assertEqual(img.to_string(format='xhtml'), dedent( ''' <img alt=""text" & <tag>" src="example.jpg" /> ''' ))
def test_Element_previous_siblings(self): node = htree.Element('p') text1 = htree.Text('text1') text2 = htree.Text('text2') text3 = htree.Text('text3') node.append(text1) node.append(text2) node.append(text3) self.assertEqual(text1.previous_siblings(), []) self.assertEqual(text2.previous_siblings(), [text1]) self.assertEqual(text3.previous_siblings(), [text1, text2]) self.assertEqual(node.previous_siblings(), [])
def test_Element_next_siblings(self): node = htree.Element('p') text1 = htree.Text('text1') text2 = htree.Text('text2') text3 = htree.Text('text3') node.append(text1) node.append(text2) node.append(text3) self.assertEqual(text1.next_siblings(), [text2, text3]) self.assertEqual(text2.next_siblings(), [text3]) self.assertEqual(text3.next_siblings(), []) self.assertEqual(node.next_siblings(), [])
def test_Element_with_bool_attr_to_string(self): inpt = htree.Element('input', checked='checked', disabled='disabled') inpt.set('name', 'foo') inpt.set('type', 'checkbox') self.assertEqual( inpt.to_string(), '<input checked disabled name="foo" type="checkbox">' ) self.assertEqual( inpt.to_string(format='xhtml'), '<input checked="checked" disabled="disabled" name="foo" type="checkbox" />' )
def test_Element_with_children_to_string(self): node = htree.Element('div') node.extend([htree.Element('div'), htree.Element('hr'), htree.Element('img')]) self.assertEqual(node.to_string(), dedent( ''' <div> <div></div> <hr> <img> </div> ''' )) self.assertEqual(node.to_string(format='xhtml'), dedent( ''' <div> <div></div> <hr /> <img /> </div> ''' ))
def test_Element_type(self): node = htree.Element() self.assertTrue(htree.is_node(node)) self.assertFalse(htree.is_text(node)) self.assertFalse(htree.is_text(node, strict=True)) self.assertFalse(htree.is_raw_text(node)) self.assertFalse(htree.is_comment(node)) self.assertTrue(htree.is_element(node)) self.assertFalse(htree.is_entity(node)) self.assertTrue(repr(node).startswith('<Element("None") at ')) self.assertEqual(node.parent, None) self.assertEqual(node.tag, None)
def test_Element_insert(self): node = htree.Element('p') text1 = htree.Text('text1') text2 = htree.Text('text2') text3 = htree.Text('text3') self.assertEqual(len(node), 0) node.insert(0, text1) self.assertEqual(len(node), 1) node.insert(1, text2) self.assertEqual(len(node), 2) node.insert(1, text3) self.assertEqual(len(node), 3) self.assertEqual(node[:], [text1, text3, text2])
def test_Element_attrib_class(self): node = htree.Element('p') self.assertEqual(node.get('class'), None) node.add_class('foo') self.assertEqual(node.get('class'), 'foo') node.add_class('bar') self.assertEqual(node.get('class'), 'foo bar') node.add_class('baz') self.assertEqual(node.get('class'), 'foo bar baz') node.remove_class('bar') self.assertEqual(node.get('class'), 'foo baz') node.remove_class('missing') self.assertEqual(node.get('class'), 'foo baz')
def test_Element_with_nested_children_to_string(self): div = htree.Element('div') p = htree.Element('p') p.append(htree.Text('Some text ')) em = htree.Element('em') em.append(htree.Text('with emphasis')) p.append(em) p.append(htree.Text('.')) div.append(p) self.assertEqual(div.to_string(), dedent( ''' <div> <p>Some text <em>with emphasis</em>.</p> </div> ''' )) self.assertEqual(div.to_string(format='xhtml'), dedent( ''' <div> <p>Some text <em>with emphasis</em>.</p> </div> ''' ))
def test_Element_empty_tag_not_empty_to_string(self): node = htree.Element('p') self.assertEqual(node.to_string(), '<p></p>\n') self.assertEqual(node.to_string(format='xhtml'), '<p></p>\n')
def test_Element_with_text_to_string(self): node = htree.Element('p') node.append(htree.Text('some text')) self.assertEqual(node.to_string(), '<p>some text</p>\n') self.assertEqual(node.to_string(format='xhtml'), '<p>some text</p>\n')
def test_Element_with_child_tag_is_None_to_string(self): node = htree.Element() node.append(htree.Element('p')) self.assertEqual(node.to_string(), '<p></p>\n') self.assertEqual(node.to_string(format='xhtml'), '<p></p>\n')
def test_Element_with_invalid_attr_to_string(self): p = htree.Element('p', id=None) self.assertRaises(TypeError, p.to_string)
def test_Element_with_text_tag_is_None_to_string(self): node = htree.Element() node.append(htree.Text('some text')) self.assertEqual(node.to_string(), 'some text') self.assertEqual(node.to_string(format='xhtml'), 'some text')