Beispiel #1
0
def testItemXMLPackUnpack(nwDummy):

    theProject = NWProject(nwDummy)
    theItem = NWItem(theProject)
    nwXML = etree.Element("novelWriterXML")

    theItem.setHandle("0123456789abc")
    theItem.setParent("0123456789abc")
    theItem.setOrder(1)
    theItem.setName("A Name")
    theItem.setClass("NOVEL")
    theItem.setType("FILE")
    theItem.setStatus("Main")
    theItem.setLayout("NOTE")
    theItem.setExpanded(True)
    theItem.setParaCount(3)
    theItem.setWordCount(5)
    theItem.setCharCount(7)
    theItem.setCursorPos(11)

    # Pack
    xContent = etree.SubElement(nwXML, "content")
    theItem.packXML(xContent)
    assert etree.tostring(xContent, pretty_print=False, encoding="utf-8") == (
        b"<content>"
        b"<item handle=\"0123456789abc\" order=\"1\" parent=\"0123456789abc\">"
        b"<name>A Name</name><type>FILE</type><class>NOVEL</class><status>New</status>"
        b"<exported>True</exported><layout>NOTE</layout><charCount>7</charCount>"
        b"<wordCount>5</wordCount><paraCount>3</paraCount><cursorPos>11</cursorPos></item>"
        b"</content>")

    # Unpack
    assert theItem.unpackXML(xContent[0])
    assert theItem.itemHandle == "0123456789abc"
    assert theItem.itemParent == "0123456789abc"
    assert theItem.itemOrder == 1
    assert theItem.isExpanded
    assert theItem.paraCount == 3
    assert theItem.wordCount == 5
    assert theItem.charCount == 7
    assert theItem.cursorPos == 11
    assert theItem.itemClass == nwItemClass.NOVEL
    assert theItem.itemType == nwItemType.FILE
    assert theItem.itemLayout == nwItemLayout.NOTE

    # Errors

    ## Not an Item
    xDummy = etree.SubElement(nwXML, "stuff")
    assert not theItem.unpackXML(xDummy)

    ## Item without Handle
    xDummy = etree.SubElement(nwXML, "item", attrib={"stuff": "nah"})
    assert not theItem.unpackXML(xDummy)

    ## Item with Invalid SubElement
    xDummy = etree.SubElement(nwXML,
                              "item",
                              attrib={"handle": "0123456789abc"})
    xParam = etree.SubElement(xDummy, "invalid")
    xParam.text = "stuff"
    assert not theItem.unpackXML(xDummy)

    # Pack Valid Item
    xDummy = etree.SubElement(nwXML, "group")
    theItem._subPack(xDummy, "subGroup", {"one": "two"}, "value", False)
    assert etree.tostring(xDummy, pretty_print=False, encoding="utf-8") == (
        b"<group><subGroup one=\"two\">value</subGroup></group>")

    # Pack Not Allowed None
    xDummy = etree.SubElement(nwXML, "group")
    assert theItem._subPack(xDummy, "subGroup", {}, None, False) is None
    assert theItem._subPack(xDummy, "subGroup", {}, "None", False) is None
    assert etree.tostring(xDummy, pretty_print=False,
                          encoding="utf-8") == (b"<group/>")
Beispiel #2
0
def testItemClassSetter(nwDummy):

    theProject = NWProject(nwDummy)
    theItem = NWItem(theProject)

    # Class
    theItem.setClass(None)
    assert theItem.itemClass == nwItemClass.NO_CLASS
    theItem.setClass("NONSENSE")
    assert theItem.itemClass == nwItemClass.NO_CLASS
    theItem.setClass("NO_CLASS")
    assert theItem.itemClass == nwItemClass.NO_CLASS
    theItem.setClass("NOVEL")
    assert theItem.itemClass == nwItemClass.NOVEL
    theItem.setClass("PLOT")
    assert theItem.itemClass == nwItemClass.PLOT
    theItem.setClass("CHARACTER")
    assert theItem.itemClass == nwItemClass.CHARACTER
    theItem.setClass("WORLD")
    assert theItem.itemClass == nwItemClass.WORLD
    theItem.setClass("TIMELINE")
    assert theItem.itemClass == nwItemClass.TIMELINE
    theItem.setClass("OBJECT")
    assert theItem.itemClass == nwItemClass.OBJECT
    theItem.setClass("ENTITY")
    assert theItem.itemClass == nwItemClass.ENTITY
    theItem.setClass("CUSTOM")
    assert theItem.itemClass == nwItemClass.CUSTOM
    theItem.setClass("ARCHIVE")
    assert theItem.itemClass == nwItemClass.ARCHIVE
    theItem.setClass("TRASH")
    assert theItem.itemClass == nwItemClass.TRASH