예제 #1
0
 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
예제 #2
0
 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])
예제 #3
0
 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>
         '''
     ))
예제 #4
0
 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')), [])
예제 #5
0
 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])
예제 #6
0
 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)
예제 #7
0
 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())
예제 #8
0
 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>
         '''
     ))
예제 #9
0
 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 />
         '''
     ))
예제 #10
0
 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)
예제 #11
0
 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])
예제 #12
0
 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)
예제 #13
0
 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])
예제 #14
0
 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)
예제 #15
0
 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])
예제 #16
0
 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)
예제 #17
0
 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="&quot;text&quot; &amp; &lt;tag&gt;" src="example.jpg">
         '''
     ))
     self.assertEqual(img.to_string(format='xhtml'), dedent(
         '''
         <img alt="&quot;text&quot; &amp; &lt;tag&gt;" src="example.jpg" />
         '''
     ))
예제 #18
0
 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(), [])
예제 #19
0
 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(), [])
예제 #20
0
 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" />'
     )
예제 #21
0
 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>
         '''
     ))
예제 #22
0
 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)
예제 #23
0
 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])
예제 #24
0
 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')
예제 #25
0
 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>
         '''
     ))
예제 #26
0
 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')
예제 #27
0
 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')
예제 #28
0
 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')
예제 #29
0
 def test_Element_with_invalid_attr_to_string(self):
     p = htree.Element('p', id=None)
     self.assertRaises(TypeError, p.to_string)
예제 #30
0
 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')