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/>")
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