コード例 #1
0
ファイル: test_node.py プロジェクト: zy20091082/vgc
    def testReplaceExceptions(self):
        doc = Document()
        root = Element(doc, "root")
        n1 = Element(root, "n1")

        doc2 = Document()
        root2 = Element(doc2, "root2")

        self.assertFalse(n1.canReplace(doc))
        with self.assertRaises(ReplaceDocumentError):
            n1.replace(doc)

        self.assertFalse(doc.canReplace(doc2))
        with self.assertRaises(ReplaceDocumentError):
            doc.replace(doc2)

        self.assertFalse(root.canReplace(root2))
        with self.assertRaises(WrongDocumentError):
            root.replace(root2)

        self.assertFalse(doc.canReplace(n1))
        with self.assertRaises(WrongChildTypeError):
            doc.replace(n1)

        # XXX Once NodeType::Comment is implemented, uncomment the following test.
        #     until then, replace() can never raise SecondRootElementError
        # c1 = Comment(doc, "comment")
        # self.assertFalse(n1.canReplace(c1))
        # with self.assertRaises(SecondRootElementError):
        #     n1.replace(c1)

        self.assertFalse(root.canReplace(n1))
        with self.assertRaises(ChildCycleError):
            root.replace(n1)
コード例 #2
0
ファイル: test_node.py プロジェクト: zy20091082/vgc
 def testChildren(self):
     doc = Document()
     n1 = Element(doc, "foo")
     n2 = Element(n1, "bar1")
     n3 = Element(n1, "bar2")
     n4 = Element(n1, "bar3")
     self.assertEqual(getChildNames(n1), ["bar1", "bar2", "bar3"])
コード例 #3
0
ファイル: test_node.py プロジェクト: zy20091082/vgc
    def testReparent(self):
        doc = Document()
        n1 = Element(doc, "n1")
        n2 = Element(n1, "n2")
        n3 = Element(n2, "n3")
        self.assertEqual(getChildNames(doc), ["n1"])
        self.assertEqual(getChildNames(n1), ["n2"])
        self.assertEqual(getChildNames(n2), ["n3"])
        self.assertEqual(getChildNames(n3), [])

        self.assertTrue(n3.canReparent(n1))
        n3.reparent(n1)
        self.assertEqual(getChildNames(doc), ["n1"])
        self.assertEqual(getChildNames(n1), ["n2", "n3"])
        self.assertEqual(getChildNames(n2), [])
        self.assertEqual(getChildNames(n3), [])

        # Special case 1: move last
        self.assertTrue(n2.canReparent(n1))
        n2.reparent(n1)
        self.assertEqual(getChildNames(n1), ["n3", "n2"])

        # Special case 2: append root element again (= do nothing, or move last in case of comments)
        self.assertTrue(n1.canReparent(doc))
        n1.reparent(doc)
        self.assertEqual(getChildNames(doc), ["n1"])
コード例 #4
0
ファイル: test_node.py プロジェクト: zy20091082/vgc
    def testDocument(self):
        doc = Document()
        self.assertEqual(doc.document, doc)

        n1 = Element(doc, "foo")
        n2 = Element(n1, "bar")
        self.assertEqual(n1.document, doc)
        self.assertEqual(n2.document, doc)
コード例 #5
0
ファイル: test_node.py プロジェクト: zy20091082/vgc
 def testWrongDocumentError(self):
     doc1 = Document()
     n1 = Element(doc1, "n1")
     doc2 = Document()
     n2 = Element(doc2, "n2")
     self.assertFalse(n2.canReparent(n1))
     with self.assertRaises(WrongDocumentError):
         n2.reparent(n1)
コード例 #6
0
ファイル: test_node.py プロジェクト: ForeverDavid/vgc
 def testAppendChildRootElement(self):
     document = Document()
     element1 = Element("foo")
     element2 = Element("bar")
     document.appendChild(element1)
     self.assertEqual(document.rootElement, element1)
     self.assertFalse(document.canAppendChild(element2))
     self.assertIsNone(document.appendChild(element2))
コード例 #7
0
ファイル: test_node.py プロジェクト: zy20091082/vgc
    def testReparentRootElement(self):
        doc = Document()
        n1 = Element(doc, "foo")
        n2 = Element(n1, "bar")
        self.assertEqual(doc.rootElement, n1)

        self.assertFalse(n2.canReparent(doc))
        with self.assertRaises(SecondRootElementError):
            n2.reparent(doc)
コード例 #8
0
ファイル: test_node.py プロジェクト: ForeverDavid/vgc
 def testChildren(self):
     n1 = Element("foo")
     n2 = Element("bar1")
     n3 = Element("bar2")
     n4 = Element("bar3")
     n1.appendChild(n2)
     n1.appendChild(n3)
     n1.appendChild(n4)
     self.assertEqual(getChildNames(n1), ["bar1", "bar2", "bar3"])
コード例 #9
0
ファイル: test_node.py プロジェクト: zy20091082/vgc
    def testReparentCycle(self):
        doc = Document()
        n1 = Element(doc, "foo")
        n2 = Element(n1, "bar")

        self.assertFalse(n2.canReparent(n2))
        with self.assertRaises(ChildCycleError):
            n2.reparent(n2)

        self.assertFalse(n1.canReparent(n2))
        with self.assertRaises(ChildCycleError):
            n1.reparent(n2)
コード例 #10
0
ファイル: test_document.py プロジェクト: zy20091082/vgc
    def testSaveAndOpen(self):
        filePath = "testSave.vgc"

        doc = Document()
        root = Element(doc, "vgc")
        path = Element(root, "path")
        doc.save(filePath)
        doc = None

        doc = Document.open(filePath)
        self.assertEqual(doc.rootElement.name, "vgc")
        self.assertEqual(doc.rootElement.firstChild.name, "path")
コード例 #11
0
ファイル: test_document.py プロジェクト: paddywwoof/vgc
    def testRootElement(self):
        doc = Document()
        self.assertIsNone(doc.rootElement)

        n1 = Element(doc, "n1")
        self.assertEqual(doc.rootElement, n1)

        n2 = Element(n1, "n2")
        doc.rootElement = n2
        self.assertEqual(doc.rootElement, n2)
        self.assertFalse(n1.isAlive())
        self.assertTrue(n2.isAlive())
コード例 #12
0
ファイル: test_node.py プロジェクト: paddywwoof/vgc
 def testAppendChild(self):
     doc = Document()
     n1 = Element(doc, "n1")
     n2 = Element(n1, "n2")
     n3 = Element(n2, "n3")
     self.assertEqual(getChildNames(doc), ["n1"])
     self.assertEqual(getChildNames(n1), ["n2"])
     self.assertEqual(getChildNames(n2), ["n3"])
     self.assertEqual(getChildNames(n3), [])
     n1.appendChild(n3)
     self.assertEqual(getChildNames(doc), ["n1"])
     self.assertEqual(getChildNames(n1), ["n2", "n3"])
     self.assertEqual(getChildNames(n2), [])
     self.assertEqual(getChildNames(n3), [])
コード例 #13
0
ファイル: test_node.py プロジェクト: ForeverDavid/vgc
    def testDocument(self):
        doc = Document()
        self.assertEqual(doc.document, doc)

        n1 = Element("foo")
        self.assertIsNone(n1.document)

        n2 = Element("bar")
        n1.appendChild(n2)
        self.assertIsNone(n1.document)
        self.assertIsNone(n2.document)

        doc.appendChild(n1)
        self.assertEqual(n1.document, doc)
        self.assertEqual(n2.document, doc)
コード例 #14
0
ファイル: test_node.py プロジェクト: zy20091082/vgc
 def testCheckAlive(self):
     doc = Document()
     n1 = Element(doc, "n1")
     n1.checkAlive()
     n1.destroy()
     with self.assertRaises(NotAliveError):
         n1.checkAlive()
コード例 #15
0
ファイル: test_node.py プロジェクト: paddywwoof/vgc
 def testAppendChildDocument(self):
     doc1 = Document()
     n1 = Element(doc1, "foo")
     doc2 = Document()
     self.assertFalse(doc1.canAppendChild(doc2))
     self.assertFalse(n1.canAppendChild(doc1))
     self.assertFalse(n1.canAppendChild(doc2))
コード例 #16
0
ファイル: test_node.py プロジェクト: paddywwoof/vgc
    def testDestroy(self):
        doc = Document()
        n1 = Element(doc, "n1")
        n3 = Element(n1, "n2")  # not a typo
        n3 = Element(n3, "n3")
        self.assertTrue(doc.isAlive())
        self.assertTrue(n1.isAlive())
        self.assertTrue(n3.parent.isAlive())
        self.assertTrue(n3.isAlive())
        self.assertTrue(doc.rootElement, n1)

        n1.destroy()
        self.assertTrue(doc.isAlive())
        self.assertFalse(n1.isAlive())
        self.assertFalse(n3.isAlive())
        self.assertTrue(doc.rootElement == None)
        with self.assertRaises(RuntimeError):
            n2 = n3.parent

        doc.destroy()
        self.assertFalse(doc.isAlive())
        with self.assertRaises(RuntimeError):
            n1 = doc.rootElement

        n1 = None
        with self.assertRaises(AttributeError):
            doc = n1.parent

        del n3
        with self.assertRaises(UnboundLocalError):
            n2 = n3.parent

        doc = Document()
        n1 = Element(doc, "n1")
        n2 = Element(n1, "n2")
        n3 = Element(n1, "n3")
        self.assertTrue(doc.isAlive())
        self.assertTrue(n1.isAlive())
        self.assertTrue(n2.isAlive())
        self.assertTrue(n3.isAlive())
        self.assertTrue(doc.rootElement == n1)
        self.assertTrue(n1.firstChild == n2)
        self.assertTrue(n1.lastChild == n3)

        del n2
        self.assertTrue(n1.firstChild.isAlive())

        n1 = None
        self.assertTrue(doc.rootElement.isAlive())
        self.assertTrue(doc.rootElement.firstChild.isAlive())
        self.assertTrue(n3.isAlive())

        doc = None
        self.assertFalse(n3.isAlive())

        doc = Document()
        n1 = Element(doc, "n1")
        del doc
        self.assertFalse(n1.isAlive())
コード例 #17
0
ファイル: test_element.py プロジェクト: zy20091082/vgc
    def testConstructor(self):
        doc = Document()
        n1 = Element(doc, "n1")
        self.assertEqual(n1.nodeType, NodeType.Element)
        self.assertEqual(n1.parent, doc)
        self.assertEqual(n1.name, "n1")

        n2 = Element(n1, "n2")
        self.assertEqual(n2.nodeType, NodeType.Element)
        self.assertEqual(n2.parent, n1)
        self.assertEqual(n2.name, "n2")

        n3 = Element(n1, "n3")
        self.assertEqual(n3.nodeType, NodeType.Element)
        self.assertEqual(n3.parent, n1)
        self.assertEqual(n3.name, "n3")

        with self.assertRaises(SecondRootElementError):
            n4 = Element(doc, "n4")
コード例 #18
0
ファイル: test_node.py プロジェクト: paddywwoof/vgc
    def testRemoveChild(self):
        doc = Document()
        root = Element(doc, "root")
        n1 = Element(root, "n1")
        n2 = Element(root, "n2")
        n3 = Element(root, "n3")
        n4 = Element(root, "n4")
        self.assertEqual(getChildNames(root), ["n1", "n2", "n3", "n4"])

        root.removeChild(n3)
        self.assertEqual(getChildNames(root), ["n1", "n2", "n4"])

        root.removeChild(n4)
        self.assertEqual(getChildNames(root), ["n1", "n2"])

        root.removeChild(n1)
        self.assertEqual(getChildNames(root), ["n2"])

        root.removeChild(n2)
        self.assertEqual(getChildNames(root), [])
コード例 #19
0
ファイル: test_node.py プロジェクト: ForeverDavid/vgc
    def testRemoveChild(self):
        n = Element("foo")
        n1 = Element("n1")
        n2 = Element("n2")
        n3 = Element("n3")
        n4 = Element("n4")

        n.appendChild(n1)
        n.appendChild(n2)
        n.appendChild(n3)
        n.appendChild(n4)
        self.assertEqual(getChildNames(n), ["n1", "n2", "n3", "n4"])

        n.removeChild(n3)
        self.assertEqual(getChildNames(n), ["n1", "n2", "n4"])

        n.removeChild(n4)
        self.assertEqual(getChildNames(n), ["n1", "n2"])

        self.assertIsNone(n.removeChild(n4))
        self.assertEqual(getChildNames(n), ["n1", "n2"])

        n5 = Element("n5")
        self.assertIsNone(n.removeChild(n5))
        self.assertEqual(getChildNames(n), ["n1", "n2"])

        n.removeChild(n1)
        self.assertEqual(getChildNames(n), ["n2"])

        n.removeChild(n2)
        self.assertEqual(getChildNames(n), [])
コード例 #20
0
ファイル: test_node.py プロジェクト: ForeverDavid/vgc
    def testParentChildRelationships(self):
        n1 = Element("foo")
        self.assertIsNone(n1.parent)
        self.assertIsNone(n1.firstChild)
        self.assertIsNone(n1.lastChild)
        self.assertIsNone(n1.previousSibling)
        self.assertIsNone(n1.nextSibling)

        n2 = Element("bar")
        n3 = Element("bar")
        n4 = Element("bar")
        n1.appendChild(n2)
        n1.appendChild(n3)
        n1.appendChild(n4)

        self.assertEqual(n1.parent, None)
        self.assertEqual(n1.firstChild, n2)
        self.assertEqual(n1.lastChild, n4)
        self.assertEqual(n1.previousSibling, None)
        self.assertEqual(n1.nextSibling, None)

        self.assertEqual(n2.parent, n1)
        self.assertEqual(n2.firstChild, None)
        self.assertEqual(n2.lastChild, None)
        self.assertEqual(n2.previousSibling, None)
        self.assertEqual(n2.nextSibling, n3)

        self.assertEqual(n3.parent, n1)
        self.assertEqual(n3.firstChild, None)
        self.assertEqual(n3.lastChild, None)
        self.assertEqual(n3.previousSibling, n2)
        self.assertEqual(n3.nextSibling, n4)

        self.assertEqual(n4.parent, n1)
        self.assertEqual(n4.firstChild, None)
        self.assertEqual(n4.lastChild, None)
        self.assertEqual(n4.previousSibling, n3)
        self.assertEqual(n4.nextSibling, None)
コード例 #21
0
ファイル: test_node.py プロジェクト: zy20091082/vgc
    def testParentChildRelationships(self):
        doc = Document()
        n1 = Element(doc, "foo")

        self.assertEqual(n1.parent, doc)
        self.assertEqual(n1.firstChild, None)
        self.assertEqual(n1.lastChild, None)
        self.assertEqual(n1.previousSibling, None)
        self.assertEqual(n1.nextSibling, None)

        n2 = Element(n1, "bar")
        n3 = Element(n1, "bar")
        n4 = Element(n1, "bar")

        self.assertEqual(n1.parent, doc)
        self.assertEqual(n1.firstChild, n2)
        self.assertEqual(n1.lastChild, n4)
        self.assertEqual(n1.previousSibling, None)
        self.assertEqual(n1.nextSibling, None)

        self.assertEqual(n2.parent, n1)
        self.assertEqual(n2.firstChild, None)
        self.assertEqual(n2.lastChild, None)
        self.assertEqual(n2.previousSibling, None)
        self.assertEqual(n2.nextSibling, n3)

        self.assertEqual(n3.parent, n1)
        self.assertEqual(n3.firstChild, None)
        self.assertEqual(n3.lastChild, None)
        self.assertEqual(n3.previousSibling, n2)
        self.assertEqual(n3.nextSibling, n4)

        self.assertEqual(n4.parent, n1)
        self.assertEqual(n4.firstChild, None)
        self.assertEqual(n4.lastChild, None)
        self.assertEqual(n4.previousSibling, n3)
        self.assertEqual(n4.nextSibling, None)
コード例 #22
0
ファイル: test_node.py プロジェクト: zy20091082/vgc
    def testReparentDocument(self):
        doc1 = Document()
        n1 = Element(doc1, "foo")
        doc2 = Document()

        self.assertFalse(doc2.canReparent(doc1))
        with self.assertRaises(WrongDocumentError
                               ):  # takes precedence over WrongChildTypeError
            doc2.reparent(doc1)

        self.assertFalse(doc1.canReparent(n1))
        with self.assertRaises(
                WrongChildTypeError):  # takes precedence over ChildCycleError
            doc1.reparent(n1)

        self.assertFalse(doc2.canReparent(n1))
        with self.assertRaises(WrongDocumentError
                               ):  # takes precedence over WrongChildTypeError
            doc2.reparent(n1)
コード例 #23
0
ファイル: test_document.py プロジェクト: paddywwoof/vgc
 def testSave(self):
     doc = Document()
     root = Element(doc, "vgc")
     path = Element(root, "path")
     doc.save("testSave.vgc")
コード例 #24
0
 def testConstructor(self):
     doc = Document()
     foo = Element(doc, "foo")
     self.assertEqual(foo.nodeType, NodeType.Element)
     self.assertEqual(foo.name, "foo")
コード例 #25
0
ファイル: test_node.py プロジェクト: ForeverDavid/vgc
 def testNodeType(self):
     node = Element("foo")
     self.assertEqual(node.nodeType, NodeType.Element)
コード例 #26
0
ファイル: test_node.py プロジェクト: zy20091082/vgc
 def testNodeType(self):
     doc = Document()
     element = Element(doc, "foo")
     self.assertEqual(doc.nodeType, NodeType.Document)
     self.assertEqual(element.nodeType, NodeType.Element)
コード例 #27
0
ファイル: test_node.py プロジェクト: ForeverDavid/vgc
 def testAppendChildDocument(self):
     element = Element("foo")
     document = Document()
     self.assertFalse(element.canAppendChild(document))
     self.assertIsNone(element.appendChild(document))
コード例 #28
0
ファイル: test_node.py プロジェクト: ForeverDavid/vgc
 def testAppendChild(self):
     node1 = Element("foo")
     node2 = Element("bar")
     self.assertTrue(node1.canAppendChild(node2))
     self.assertEqual(node1.appendChild(node2), node2)
コード例 #29
0
ファイル: test_node.py プロジェクト: zy20091082/vgc
    def testDestroy(self):
        doc = Document()
        n1 = Element(doc, "n1")
        n3 = Element(n1, "n2")  # not a typo
        n3 = Element(n3, "n3")
        self.assertTrue(doc.isAlive())
        self.assertTrue(n1.isAlive())
        self.assertTrue(n3.parent.isAlive())
        self.assertTrue(n3.isAlive())
        self.assertTrue(doc.rootElement, n1)

        n1.destroy()
        self.assertTrue(doc.isAlive())
        self.assertFalse(n1.isAlive())
        self.assertFalse(n3.isAlive())
        self.assertTrue(doc.rootElement == None)
        with self.assertRaises(NotAliveError):
            n2 = n3.parent

        doc.destroy()
        self.assertFalse(doc.isAlive())
        with self.assertRaises(NotAliveError):
            n1 = doc.rootElement

        n1 = None
        with self.assertRaises(AttributeError):
            doc = n1.parent

        del n3
        with self.assertRaises(UnboundLocalError):
            n2 = n3.parent

        doc = Document()
        n1 = Element(doc, "n1")
        n2 = Element(n1, "n2")
        n3 = Element(n1, "n3")
        self.assertTrue(doc.isAlive())
        self.assertTrue(n1.isAlive())
        self.assertTrue(n2.isAlive())
        self.assertTrue(n3.isAlive())
        self.assertTrue(doc.rootElement == n1)
        self.assertTrue(n1.firstChild == n2)
        self.assertTrue(n1.lastChild == n3)

        del n2
        self.assertTrue(n1.firstChild.isAlive())

        n1 = None
        self.assertTrue(doc.rootElement.isAlive())
        self.assertTrue(doc.rootElement.firstChild.isAlive())
        self.assertTrue(n3.isAlive())

        doc = None
        self.assertFalse(n3.isAlive())

        doc = Document()
        n1 = Element(doc, "n1")
        del doc
        self.assertFalse(n1.isAlive())

        doc = Document()
        root = Element(doc, "root")
        n1 = Element(root, "n1")
        n2 = Element(root, "n2")
        n3 = Element(root, "n3")
        n4 = Element(root, "n4")
        self.assertEqual(getChildNames(root), ["n1", "n2", "n3", "n4"])

        n3.destroy()
        self.assertEqual(getChildNames(root), ["n1", "n2", "n4"])

        n4.destroy()
        self.assertEqual(getChildNames(root), ["n1", "n2"])

        n1.destroy()
        self.assertEqual(getChildNames(root), ["n2"])

        n2.destroy()
        self.assertEqual(getChildNames(root), [])
コード例 #30
0
ファイル: test_node.py プロジェクト: zy20091082/vgc
 def testIsAlive(self):
     doc = Document()
     n1 = Element(doc, "n1")
     self.assertTrue(doc.isAlive())
     self.assertTrue(n1.isAlive())