def test_draggable(self): n = HTMLElement('img') self.assertIs(n.draggable, False) n.draggable = True self.assertEqual(n.html, '<img draggable="true">') self.assertIs(n.draggable, True) n.draggable = False self.assertEqual(n.html, '<img>')
def test_style_copy(self): self.elm.style = 'color: red;' elm2 = HTMLElement('b') elm2.style = self.elm.style self.assertEqual(elm2.style.cssText, 'color: red;') elm2.style.setProperty('color', 'blue') self.assertEqual(elm2.style.cssText, 'color: blue;') self.assertEqual(self.elm.style.cssText, 'color: red;')
def test_inner_html(self): self.assertEqual(self.elm.innerHTML, '') self.elm.appendChild(HTMLElement('a')) self.assertEqual(self.elm.innerHTML, '<a></a>') self.elm.innerHTML = '<b></b>' self.assertEqual(self.elm.innerHTML, '<b></b>') self.assertEqual(self.elm.firstChild.tag, 'b') self.assertTrue(isinstance(self.elm.firstChild, HTMLElement))
def test_hidden(self): n = HTMLElement('img') n.hidden = True self.assertEqual(n.start_tag, '<img hidden>')
def test_draggable(self): n = HTMLElement('img') n.draggable = True self.assertEqual(n.start_tag, '<img draggable>')
def setUp(self): self.elm = HTMLElement('a')
class TestHTMLElement(TestCase): def setUp(self): self.elm = HTMLElement('a') def test_attrs_bool(self): self.assertFalse(self.elm.hasAttribute('hidden')) self.assertNotIn('hidden', self.elm.attributes) self.assertIsNone(self.elm.getAttribute('hidden')) self.elm.setAttribute('hidden', True) self.assertTrue(self.elm.hasAttributes()) self.assertTrue(self.elm.hasAttribute('hidden')) self.assertIn('hidden', self.elm.attributes) self.assertEqual(self.elm.getAttribute('hidden'), True) self.assertEqual(self.elm.html, '<a hidden></a>') # This is complatible with JS, but quite confusing self.elm.setAttribute('hidden', False) self.assertTrue(self.elm.hasAttributes()) self.assertTrue(self.elm.hasAttribute('hidden')) self.assertIn('hidden', self.elm.attributes) # In chrome, <a hidden="false">, should we convert to string? self.assertFalse(self.elm.getAttribute('hidden')) self.assertEqual(self.elm.html, '<a hidden></a>') self.elm.hidden = False self.assertFalse(self.elm.hasAttribute('hidden')) self.assertNotIn('hidden', self.elm.attributes) self.assertIsNone(self.elm.getAttribute('hidden')) self.assertEqual(self.elm.html, '<a></a>') def test_empty_tag(self): img = HTMLElement('img') self.assertEqual(img.end_tag, '') def test_draggable(self): n = HTMLElement('img') n.draggable = True self.assertEqual(n.start_tag, '<img draggable>') def test_hidden(self): n = HTMLElement('img') n.hidden = True self.assertEqual(n.start_tag, '<img hidden>') def test_title(self): n = HTMLElement('img') n.title = 'Image' self.assertEqual(n.start_tag, '<img title="Image">') def test_type(self): n = HTMLElement('input') n.type = 'text' self.assertEqual(n.start_tag, '<input type="text">') def test_init_attrs(self): elm = HTMLElement('a', src='b', hidden=True) self.assertFalse(elm.hasChildNodes()) self.assertTrue(elm.hasAttributes()) self.assertTrue(elm.getAttribute('src'), 'b') self.assertTrue(elm.hidden) def test_style_empty(self): self.assertIsNotNone(self.elm.style) self.assertEqual(self.elm.getAttribute('style'), None) self.assertEqual(self.elm.style.cssText, '') self.assertTrue(isinstance(self.elm.style, CSSStyleDeclaration)) self.assertEqual(self.elm.html, '<a></a>') def test_style_invalid_type(self): with self.assertRaises(TypeError): self.elm.style = 1 with self.assertRaises(TypeError): self.elm.style = self.elm def test_init_style_init(self): elm = HTMLElement('a', style='color: red;') self.assertEqual(elm.style.cssText, 'color: red;') self.assertEqual(elm.getAttribute('style'), 'color: red;') self.assertEqual(elm.html, '<a style="color: red;"></a>') @skipIf(sys.version_info < (3, 5), 'py34 does not keep style order') def test_style_setter(self): self.elm.style = 'color: red;' self.assertEqual(self.elm.style.cssText, 'color: red;') self.assertEqual(self.elm.getAttribute('style'), 'color: red;') self.assertEqual(self.elm.html, '<a style="color: red;"></a>') self.elm.style.color = 'black' self.elm.style.background = 'red' # py34 does not keep style order self.assertEqual(self.elm.style.cssText, 'color: black; background: red;') def test_style_remove(self): self.elm.style = 'color: red;' self.elm.removeAttribute('style') self.assertIsNotNone(self.elm.style) self.assertEqual(self.elm.getAttribute('style'), None) self.assertEqual(self.elm.style.cssText, '') self.assertEqual(self.elm.html, '<a></a>') def test_style_clone(self): self.elm.style = 'color: red;' clone = self.elm.cloneNode() self.assertEqual(clone.style.cssText, 'color: red;') clone.style.color = 'black' self.assertEqual(clone.style.cssText, 'color: black;') self.assertEqual(self.elm.style.cssText, 'color: red;') def test_attr_clone(self): self.elm.draggable = True self.elm.hidden = True clone = self.elm.cloneNode() self.assertEqual(clone.html, '<a draggable hidden></a>') self.elm.hidden = False self.assertEqual(clone.html, '<a draggable hidden></a>') clone.draggable = False self.assertEqual(self.elm.html, '<a draggable></a>') self.assertEqual(clone.html, '<a hidden></a>') def test_attr_clone_deep(self): self.elm.draggable = True self.elm.hidden = True clone = self.elm.cloneNode(deep=True) self.assertEqual(clone.html, '<a draggable hidden></a>') self.elm.hidden = False self.assertEqual(clone.html, '<a draggable hidden></a>') clone.draggable = False self.assertEqual(self.elm.html, '<a draggable></a>') self.assertEqual(clone.html, '<a hidden></a>')
class TestHTMLElement(TestCase): def setUp(self): self.elm = HTMLElement('a') def test_attrs_bool(self): self.assertFalse(self.elm.hasAttribute('hidden')) self.assertNotIn('hidden', self.elm.attributes) self.assertIsNone(self.elm.getAttribute('hidden')) self.elm.setAttribute('hidden', True) self.assertTrue(self.elm.hasAttributes()) self.assertTrue(self.elm.hasAttribute('hidden')) self.assertIn('hidden', self.elm.attributes) self.assertEqual(self.elm.getAttribute('hidden'), True) self.assertEqual(self.elm.html, '<a hidden></a>') # This is complatible with JS, but quite confusing self.elm.setAttribute('hidden', False) self.assertTrue(self.elm.hasAttributes()) self.assertTrue(self.elm.hasAttribute('hidden')) self.assertIn('hidden', self.elm.attributes) # In chrome, <a hidden="false">, should we convert to string? self.assertFalse(self.elm.getAttribute('hidden')) self.assertEqual(self.elm.html, '<a hidden></a>') self.elm.hidden = False self.assertFalse(self.elm.hasAttribute('hidden')) self.assertNotIn('hidden', self.elm.attributes) self.assertIsNone(self.elm.getAttribute('hidden')) self.assertEqual(self.elm.html, '<a></a>') def test_empty_tag(self): img = HTMLElement('img') self.assertEqual(img.end_tag, '') def test_draggable(self): n = HTMLElement('img') self.assertIs(n.draggable, False) n.draggable = True self.assertEqual(n.html, '<img draggable="true">') self.assertIs(n.draggable, True) n.draggable = False self.assertEqual(n.html, '<img>') def test_hidden(self): n = HTMLElement('img') n.hidden = True self.assertEqual(n.html, '<img hidden>') def test_title(self): n = HTMLElement('img') n.title = 'Image' self.assertEqual(n.html, '<img title="Image">') def test_type(self): n = HTMLElement('input') n.type = 'text' self.assertEqual(n.html, '<input type="text">') def test_init_attrs(self): elm = HTMLElement('a', src='b', hidden=True) self.assertFalse(elm.hasChildNodes()) self.assertTrue(elm.hasAttributes()) self.assertTrue(elm.getAttribute('src'), 'b') self.assertTrue(elm.hidden) def test_style_empty(self): self.assertIsNotNone(self.elm.style) self.assertEqual(self.elm.getAttribute('style'), None) self.assertEqual(self.elm.style.cssText, '') self.assertTrue(isinstance(self.elm.style, CSSStyleDeclaration)) self.assertEqual(self.elm.html, '<a></a>') def test_style_invalid_type(self): with self.assertRaises(TypeError): self.elm.style = 1 with self.assertRaises(TypeError): self.elm.style = self.elm def test_init_style_init(self): elm = HTMLElement('a', style='color: red;') self.assertEqual(elm.style.cssText, 'color: red;') self.assertEqual(elm.getAttribute('style'), 'color: red;') self.assertEqual(elm.html, '<a style="color: red;"></a>') def test_style_setter(self): self.elm.style = 'color: red;' self.assertEqual(self.elm.style.cssText, 'color: red;') self.assertEqual(self.elm.getAttribute('style'), 'color: red;') self.assertEqual(self.elm.html, '<a style="color: red;"></a>') self.elm.style.color = 'black' self.elm.style.background = 'red' # py34 does not keep style order self.assertEqual(self.elm.style.cssText, 'color: black; background: red;') def test_style_remove(self): self.elm.style = 'color: red;' self.elm.removeAttribute('style') self.assertIsNotNone(self.elm.style) self.assertEqual(self.elm.getAttribute('style'), None) self.assertEqual(self.elm.style.cssText, '') self.assertEqual(self.elm.html, '<a></a>') def test_style_clone(self): self.elm.style = 'color: red;' clone = self.elm.cloneNode() self.assertEqual(clone.style.cssText, 'color: red;') clone.style.color = 'black' self.assertEqual(clone.style.cssText, 'color: black;') self.assertEqual(self.elm.style.cssText, 'color: red;') def test_style_new(self): st = CSSStyleDeclaration() self.assertEqual(self.elm.style.cssText, '') self.assertEqual(st.cssText, '') st.setProperty('color', 'red') self.assertEqual(st.cssText, 'color: red;') self.assertEqual(self.elm.style.cssText, '') self.elm.style = st self.assertEqual(self.elm.style.cssText, 'color: red;') st.setProperty('color', 'blue') self.assertEqual(st.cssText, 'color: blue;') # shouldn't do this??? self.assertEqual(self.elm.style.cssText, 'color: blue;') def test_style_copy(self): self.elm.style = 'color: red;' elm2 = HTMLElement('b') elm2.style = self.elm.style self.assertEqual(elm2.style.cssText, 'color: red;') elm2.style.setProperty('color', 'blue') self.assertEqual(elm2.style.cssText, 'color: blue;') self.assertEqual(self.elm.style.cssText, 'color: red;') def test_attr_clone(self): self.elm.draggable = True self.elm.hidden = True clone = self.elm.cloneNode() self.assertEqual(clone.html, '<a draggable="true" hidden></a>') self.elm.hidden = False self.assertEqual(clone.html, '<a draggable="true" hidden></a>') clone.draggable = False self.assertEqual(self.elm.html, '<a draggable="true"></a>') self.assertEqual(clone.html, '<a hidden></a>') def test_attr_clone_deep(self): self.elm.draggable = True self.elm.hidden = True clone = self.elm.cloneNode(deep=True) self.assertEqual(clone.html, '<a draggable="true" hidden></a>') self.elm.hidden = False self.assertEqual(clone.html, '<a draggable="true" hidden></a>') clone.draggable = False self.assertEqual(self.elm.html, '<a draggable="true"></a>') self.assertEqual(clone.html, '<a hidden></a>') def test_inner_html(self): self.assertEqual(self.elm.innerHTML, '') self.elm.appendChild(HTMLElement('a')) self.assertEqual(self.elm.innerHTML, '<a></a>') self.elm.innerHTML = '<b></b>' self.assertEqual(self.elm.innerHTML, '<b></b>') self.assertEqual(self.elm.firstChild.tag, 'b') self.assertTrue(isinstance(self.elm.firstChild, HTMLElement))
def test_init_attrs(self): elm = HTMLElement('a', src='b', hidden=True) self.assertFalse(elm.hasChildNodes()) self.assertTrue(elm.hasAttributes()) self.assertTrue(elm.getAttribute('src'), 'b') self.assertTrue(elm.hidden)
def test_type(self): n = HTMLElement('input') n.type = 'text' self.assertEqual(n.html, '<input type="text">')
def test_title(self): n = HTMLElement('img') n.title = 'Image' self.assertEqual(n.html, '<img title="Image">')
def test_hidden(self): n = HTMLElement('img') n.hidden = True self.assertEqual(n.html, '<img hidden>')
def test_empty_tag(self): img = HTMLElement('img') self.assertEqual(img.end_tag, '')
def test_title(self): n = HTMLElement('img') n.title = 'Image' self.assertEqual(n.start_tag, '<img title="Image">')
def test_type(self): n = HTMLElement('input') n.type = 'text' self.assertEqual(n.start_tag, '<input type="text">')
def test_init_style_init(self): elm = HTMLElement('a', style='color: red;') self.assertEqual(elm.style.cssText, 'color: red;') self.assertEqual(elm.getAttribute('style'), 'color: red;') self.assertEqual(elm.html, '<a style="color: red;"></a>')