def test_xmlTreeUpdateElements(self): TREE = xmlTree(file=self.exFile) TREE.updateElement("/root/elem1", text="goodbye world", attrib={ "value": 2, "other": 4 }) ELEM = TREE.getElement("/root/elem1") self.assertEqual(ELEM.text, "goodbye world") self.assertEqual(ELEM.attrib["value"], 2) self.assertTrue("other" in ELEM.attrib.keys()) self.assertEqual(ELEM.attrib["other"], 4) TREE.updateElement("/root/elem1/elem2/elem3", text="goodbye world", attrib={ "value": 5, "other": "hello" }) ELEM = TREE.getElement("/root/elem1/elem2/elem3") self.assertEqual(ELEM.text, "goodbye world") self.assertEqual(ELEM.attrib["value"], 5) self.assertTrue("other" in ELEM.attrib.keys()) self.assertEqual(ELEM.attrib["other"], "hello") return
def test_LoadFilterFromFile(self): filterFile = self.DATA.search("SDSS_r.xml") FILTER = loadFilterFromFile(filterFile) self.assertIsNotNone(FILTER.name) self.assertEqual(FILTER.name, "SDSS r") self.assertIsNotNone(FILTER.description) self.assertIsNotNone(FILTER.origin) self.assertEqual(FILTER.origin, "Michael Blanton") self.assertIsNotNone(FILTER.effectiveWavelength) diff = np.fabs(FILTER.effectiveWavelength - 6198.41999837059) self.assertLessEqual(diff, 1.0e-6) self.assertIsNotNone(FILTER.vegaOffset) diff = np.fabs(FILTER.vegaOffset - -0.139302055718797) self.assertLessEqual(diff, 1.0e-6) # Manually load transmission TREE = xmlTree(file=filterFile) RESP = TREE.getElement("/filter/response") DATA = RESP.findall("datum") dtype = [("wavelength", float), ("transmission", float)] transmission = np.zeros(len(DATA), dtype=dtype).view(np.recarray) for i, datum in enumerate(DATA): transmission["wavelength"][i] = float(datum.text.split()[0]) transmission["transmission"][i] = float(datum.text.split()[1]) diff = np.fabs(FILTER.transmission.wavelength - transmission.wavelength) diff /= transmission.wavelength [self.assertLessEqual(d, 0.001) for d in diff] diff = np.copy( np.fabs(FILTER.transmission.transmission - transmission.transmission)) np.place(transmission.transmission, transmission.transmission == 0.0, 1.0) diff /= transmission.transmission [self.assertLessEqual(d, 0.001) for d in diff] return
def test_xmlTreeRemoveElements(self): TREE = xmlTree(file=self.exFile) TREE.removeElement("/root/elem1/elem2/elem3") self.assertTrue(TREE.elementExists("/root/elem1/elem2")) self.assertFalse(TREE.elementExists("/root/elem1/elem2/elem3")) TREE.removeElement("/root/elem1") self.assertFalse(TREE.elementExists("/root/elem1")) return
def test_xmlTreeLoadFromFile(self): TREE = xmlTree() TREE.loadFromFile(self.exFile) self.assertEqual(TREE.tree.getroot().tag, "root") self.assertEqual(TREE.tree.getroot().find("elem1").tag, "elem1") ELEM = TREE.tree.getroot().find("elem1").find("elem2").find("elem3") self.assertEqual(ELEM.tag, "elem3") return
def test_xmlTreeMapTree(self): trueMap = [ '/', '/root/elem1/elem2/elem3', '/root/elem1/elem2/elem4', '/root/elem1/elem2', '/root/elem1', '/root' ] TREE = xmlTree(file=self.exFile) TREE.tree.map = None TREE.mapTree() self.assertEqual(len(TREE.map), len(trueMap)) [self.assertTrue(obj in TREE.map) for obj in trueMap] return
def test_xmlTreeReadElements(self): TREE = xmlTree(file=self.exFile) ELEM = TREE.getElement("/root/elem1") self.assertIsNotNone(ELEM) self.assertEqual(ELEM.text, "hello world") self.assertEqual(ELEM.attrib["value"], "1") self.assertTrue(TREE.elementExists("/root/elem1/elem2")) self.assertTrue(TREE.elementExists("/root/elem1/elem2/elem3")) ELEM = TREE.getElement("/root/elem1/elem2/elem3") self.assertEqual(ELEM.text, "goodbye world") return
def test_xmlTreeAddElementToMap(self): trueMap = [ '/', '/root/elem1/elem2/elem3', '/root/elem1/elem2/elem4', '/root/elem1/elem2', '/root/elem1', '/root' ] TREE = xmlTree(file=self.exFile) ELEM4 = TREE.getElement("/root/elem1/elem2/elem4") ELEM5 = ET.SubElement(ELEM4, "elem5") TREE.addElementToMap(ELEM5, path="/root/elem1/elem2/elem4") self.assertTrue("/root/elem1/elem2/elem4/elem5" in TREE.map) return
def test_xmlTreeCreateTree(self): TREE = xmlTree(root="root") TREE.createElement("/root", "elem1", attrib={"value": 1}, text="hello world", createParents=True) self.assertTrue(TREE.elementExists("/root/elem1")) matches = TREE.matchPath("/root/elem1") self.assertEqual(len(matches), 1) self.assertEqual(matches[0], "/root/elem1") with self.assertRaises(RuntimeError): TREE.createElement("/root/elem2", "elem3", createParents=False) return
def test_ListElements(self): TREE = xmlTree(file=self.exFile) ELEM1 = TREE.tree.getroot().find("elem1") ELEMS = TREE.lsElements(TREE.tree.getroot()) self.assertEqual(len(ELEMS), 1) self.assertEqual(ELEMS[0], ELEM1) ELEM2 = ELEM1.find("elem2") ELEMS = TREE.lsElements(ELEM1) self.assertEqual(len(ELEMS), 1) self.assertEqual(ELEMS[0], ELEM2) ELEM3 = ELEM2.find("elem3") ELEM4 = ELEM2.find("elem4") ELEMS = TREE.lsElements(ELEM2) self.assertEqual(len(ELEMS), 2) self.assertTrue(ELEM3 in ELEMS) self.assertTrue(ELEM4 in ELEMS) return
def test_xmlTreeMatchPath(self): TREE = xmlTree(file=self.exFile) path = TREE.matchPath("/root/elem1") self.assertEqual(len(path), 1) self.assertEqual(path[0], "/root/elem1") path = TREE.matchPath("/root/elem1/elem2") self.assertEqual(len(path), 1) self.assertEqual(path[0], "/root/elem1/elem2") # Test use of wildcards for parent directories path = TREE.matchPath("*elem2") self.assertEqual(len(path), 1) self.assertEqual(path[0], "/root/elem1/elem2") # Test instances when multiple paths identified path = TREE.matchPath("/root/elem1/elem2/elem*", errorOnMultiple=False) self.assertEqual(len(path), 2) paths = ["/root/elem1/elem2/elem3", "/root/elem1/elem2/elem4"] [self.assertTrue(p in path) for p in paths] with self.assertRaises(ValueError): path = TREE.matchPath("/root/elem1/elem2/elem*") return
def test_xmlTreeWriteToFile(self): TREE = xmlTree(file=self.exFile) # Test writing to file TREE.writeToFile(self.tmpfile) self.assertTrue(os.path.exists(self.tmpfile)) return