예제 #1
0
 def test_resolve_lang(self):
     """Test the use of resolve_lang"""
     parent = structures.Element(None)
     self.assertTrue(parent.resolve_lang() is None, "No default language")
     parent.set_lang('en-GB')
     self.assertTrue(parent.get_lang() == 'en-GB', "Lang Get/Set")
     child = structures.Element(parent)
     self.assertTrue(child.get_lang() is None, "No xml:lang by default")
     self.assertTrue(child.resolve_lang() == 'en-GB', "Lang inheritence")
     # repeat tests with a parent document
     d = structures.Document()
     parent = structures.Element(d)
     self.assertTrue(parent.resolve_lang() is None, "No default language")
예제 #2
0
 def test_copy(self):
     e1 = structures.Element(None)
     e2 = e1.deepcopy()
     self.assertTrue(isinstance(e2, structures.Element),
                     "deepcopy didn't make Element")
     self.assertTrue(e1 == e2)
     self.assertTrue(e1 is not e2)
예제 #3
0
 def test_data(self):
     e = structures.Element(None)
     self.assertTrue(e.is_mixed(), "Mixed default")
     e.add_data('Hello')
     self.assertTrue(e.get_value() == 'Hello', "Data value")
     children = list(e.get_children())
     self.assertTrue(len(children) == 1, "Data child not set")
     self.assertTrue(children[0] == "Hello", "Data child not set correctly")
예제 #4
0
 def test_child_elements(self):
     """Test child element behaviour"""
     e = structures.Element(None)
     e.set_xmlname('test')
     e.add_child(structures.Element, 'test1')
     children = list(e.get_children())
     self.assertTrue(
         len(children) == 1, "add_child failed to add child element")
예제 #5
0
 def test_id(self):
     """Test the built-in handling of a document's ID space."""
     doc = structures.Document()
     e1 = structures.Element(doc)
     e2 = structures.Element(doc)
     e1.id = e2.id = 'test'
     doc.register_element(e1)
     try:
         doc.register_element(e2)
         self.fail("Failed to spot ID clash")
     except structures.XMLIDClashError:
         pass
     e2.id = 'test2'
     doc.register_element(e2)
     self.assertTrue(
         doc.get_element_by_id('test') is e1, "Element look-up failed")
     new_id = doc.get_unique_id('test')
     self.assertFalse(new_id == 'test' or new_id == 'test2')
예제 #6
0
 def test_constructor(self):
     e = structures.Element(None)
     self.assertTrue(e.xmlname is None, 'element name on construction')
     self.assertTrue(e.get_document() is None,
                     'document set on construction')
     attrs = e.get_attributes()
     self.assertTrue(
         len(list(dict_keys(attrs))) == 0,
         "Attributes present on construction")
     children = e.get_children()
     try:
         next(children)
         self.fail("Children present on construction")
     except StopIteration:
         pass
예제 #7
0
 def test_resolve_base(self):
     """Test the use of resolve_uri and resolve_base"""
     os.chdir(TEST_DATA_DIR)
     parent = structures.Element(None)
     self.assertTrue(parent.resolve_base() is None, "No default base")
     child = structures.Element(parent)
     self.assertTrue(child.resolve_base() is None, "No xml:base by default")
     parent.set_base('file:///index.xml')
     self.assertTrue(child.resolve_base() == 'file:///index.xml',
                     "No xml:base inheritance")
     # Tests with a document follow....
     furl = str(uri.URI.from_path(os.path.abspath('base.xml')))
     href = uri.URI.from_path(os.path.abspath('link.xml'))
     href_path = href.abs_path
     href = str(href)
     alt_ref = 'file:///hello/link.xml'
     d = structures.Document(base_uri='base.xml')
     self.assertTrue(d.get_base() == furl,
                     "Base not resolved relative to w.d. by constructor")
     d.read()
     tag = d.root
     self.assertTrue(tag.resolve_base() == furl,
                     "Root element resolves from document")
     self.assertTrue(
         str(tag.resolve_uri("link.xml")) == href, "Root element HREF")
     self.assertTrue(
         str(tag.relative_uri(href)) == 'link.xml', "Root element relative")
     # self.assertTrue(
     #   tag.relative_uri(alt_ref)=='/hello/link.xml',
     #   'Root element full path relative: %s'%tag.relative_uri(alt_ref))
     child_tag = tag._children[0]
     self.assertTrue(
         child_tag.resolve_base() == "file:///hello/base.xml",
         "xml:base overrides in child_tag (%s)" % child_tag.resolve_base())
     self.assertTrue(
         str(child_tag.resolve_uri("link.xml")) == alt_ref,
         "child element HREF")
     self.assertTrue(
         str(child_tag.relative_uri(href)) == '..' + href_path,
         "child element relative resulting in full path: %s" %
         child_tag.relative_uri(href))
     self.assertTrue(
         str(child_tag.relative_uri(alt_ref)) == 'link.xml',
         'child element relative')
     # We require this next test to ensure that an href to the
     # current document comes up blank.  Although this was a major
     # source of bugs in browsers (<img src=''> causing infinite
     # loading loops) these are largely fixed now and obfuscating by
     # using a non-empty relative link to ourselves is likely to
     # start the whole thing going again.
     self.assertTrue(
         str(child_tag.relative_uri(child_tag.resolve_base())) == '',
         'child element relative avoiding empty URI(%s)' %
         child_tag.relative_uri(child_tag.resolve_base()))
     grandchild_tag = child_tag._children[0]
     self.assertTrue(
         grandchild_tag.resolve_base() == "file:///hello/base.xml",
         "xml:base inherited")
     self.assertTrue(
         str(grandchild_tag.resolve_uri("link.xml")) == alt_ref,
         "grandchild element HREF inherited")
     self.assertTrue(
         str(grandchild_tag.relative_uri(href)) == '..' + href_path,
         "grandchild element relative inherited: %s" %
         grandchild_tag.relative_uri(href))
     self.assertTrue(
         str(grandchild_tag.relative_uri(alt_ref)) == 'link.xml',
         'grandchild element relative inherited')
예제 #8
0
 def test_attributes(self):
     e = structures.Element(None)
     e.set_xmlname('test')
     e.set_attribute('atest', 'value')
     attrs = e.get_attributes()
     self.assertTrue(len(list(dict_keys(attrs))) == 1, "Attribute not set")
     self.assertTrue(attrs['atest'] == 'value',
                     "Attribute not set correctly")
     e = ReflectiveElement(None)
     e.set_attribute('atest', 'value')
     # Deprecated: self.assertTrue(e.atest=='value',"Attribute relfection")
     attrs = e.get_attributes()
     self.assertTrue(attrs['atest'] == 'value',
                     "Attribute not set correctly")
     e.set_attribute('btest', 'Yes')
     self.assertTrue(e.bTest == 'Yes',
                     "Attribute relfection with simple assignment")
     attrs = e.get_attributes()
     self.assertTrue(attrs['btest'] == 'Yes', "Attribute not set correctly")
     e.set_attribute('ctest', 'Yes')
     self.assertTrue(e.cTest is True,
                     "Attribute relfection with decode/encode")
     attrs = e.get_attributes()
     self.assertTrue(attrs['ctest'] == 'Yes', "Attribute not set correctly")
     self.assertFalse('dtest' in attrs, "Optional ordered list attribute")
     self.assertTrue(attrs['dtestR'] == '',
                     "Required ordered list attribute")
     e.set_attribute('dtest', 'Yes No')
     self.assertTrue(e.dTest == [True, False],
                     "Attribute relfection with list; %s" % repr(e.dTest))
     attrs = e.get_attributes()
     self.assertTrue(attrs['dtest'] == 'Yes No',
                     "Attribute not set correctly")
     self.assertFalse('etest' in attrs, "Optional unordered list attribute")
     self.assertTrue(attrs['etestR'] == '',
                     "Required unordered list attribute")
     e.set_attribute('etest', 'Yes No Yes')
     self.assertTrue(e.eTest == {
         True: 2,
         False: 1
     }, "Attribute relfection with list: %s" % repr(e.eTest))
     attrs = e.get_attributes()
     self.assertTrue(
         attrs['etest'] == 'No Yes Yes',
         "Attribute not set correctly: %s" % repr(attrs['etest']))
     try:
         if e.ztest:
             pass
         self.fail("AttributeError required for undefined names")
     except AttributeError:
         pass
     e.ztest = 1
     if e.ztest:
         pass
     del e.ztest
     try:
         if e.ztest:
             pass
         self.fail("AttributeError required for undefined names after del")
     except AttributeError:
         pass
     try:
         self.assertTrue(e.fTest is None,
                         "Missing attribute auto value not None")
     except AttributeError:
         self.fail("Missing attribute auto value: AttributeError")
     e.fTest = 1
     del e.fTest
     try:
         self.assertTrue(
             e.fTest is None,
             "Missing attribute auto value not None (after del)")
     except AttributeError:
         self.fail(
             "Missing attribute auto value: AttributeError (after del)")