Exemplo n.º 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/>")
Exemplo n.º 2
0
def testItemSettersSimple(nwDummy):

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

    # Name
    theItem.setName("A Name")
    assert theItem.itemName == "A Name"
    theItem.setName("\t A Name   ")
    assert theItem.itemName == "A Name"

    # Handle
    theItem.setHandle(123)
    assert theItem.itemHandle is None
    theItem.setHandle("0123456789abcdef")
    assert theItem.itemHandle is None
    theItem.setHandle("0123456789abc")
    assert theItem.itemHandle == "0123456789abc"

    # Parent
    theItem.setParent(None)
    assert theItem.itemParent is None
    theItem.setParent(123)
    assert theItem.itemParent is None
    theItem.setParent("0123456789abcdef")
    assert theItem.itemParent is None
    theItem.setParent("0123456789abc")
    assert theItem.itemParent == "0123456789abc"

    # Order
    theItem.setOrder(None)
    assert theItem.itemOrder == 0
    theItem.setOrder("1")
    assert theItem.itemOrder == 1
    theItem.setOrder(1)
    assert theItem.itemOrder == 1

    # Status
    theItem.setStatus("Nonsense")
    assert theItem.itemStatus == "New"
    theItem.setStatus("New")
    assert theItem.itemStatus == "New"
    theItem.setStatus("Minor")
    assert theItem.itemStatus == "Minor"
    theItem.setStatus("Major")
    assert theItem.itemStatus == "Major"
    theItem.setStatus("Main")
    assert theItem.itemStatus == "Main"

    # Expanded
    theItem.setExpanded(8)
    assert not theItem.isExpanded
    theItem.setExpanded(None)
    assert not theItem.isExpanded
    theItem.setExpanded("None")
    assert not theItem.isExpanded
    theItem.setExpanded("What?")
    assert not theItem.isExpanded
    theItem.setExpanded("True")
    assert theItem.isExpanded
    theItem.setExpanded(True)
    assert theItem.isExpanded

    # CharCount
    theItem.setCharCount(None)
    assert theItem.charCount == 0
    theItem.setCharCount("1")
    assert theItem.charCount == 1
    theItem.setCharCount(1)
    assert theItem.charCount == 1

    # WordCount
    theItem.setWordCount(None)
    assert theItem.wordCount == 0
    theItem.setWordCount("1")
    assert theItem.wordCount == 1
    theItem.setWordCount(1)
    assert theItem.wordCount == 1

    # ParaCount
    theItem.setParaCount(None)
    assert theItem.paraCount == 0
    theItem.setParaCount("1")
    assert theItem.paraCount == 1
    theItem.setParaCount(1)
    assert theItem.paraCount == 1

    # CursorPos
    theItem.setCursorPos(None)
    assert theItem.cursorPos == 0
    theItem.setCursorPos("1")
    assert theItem.cursorPos == 1
    theItem.setCursorPos(1)
    assert theItem.cursorPos == 1