def setUp(self): self.svgObject = GranulateSVG(svgStringIO, max = MAX) self.svgList = self.svgObject.granulate()['file_list'] self.xml = minidom.parseString(svgStringIO.getvalue())
class TestGranulateSVG(unittest.TestCase): def setUp(self): self.svgObject = GranulateSVG(svgStringIO, max = MAX) self.svgList = self.svgObject.granulate()['file_list'] self.xml = minidom.parseString(svgStringIO.getvalue()) def testCountTags(self): """ test the number of tags """ string = svgStringIO.getvalue() xmlobj = PrepareSVG() self.xml = xmlobj.removeUse( string ) self.assertEquals(self.svgObject._GranulateSVG__countTags(self.xml), 2) def testImgsPerFileAndRemainder(self): """ test the number of images per file and the remainder """ self.assertEquals(self.svgObject._GranulateSVG__imgs_per_file, 1) self.assertEquals(self.svgObject._GranulateSVG__remainder, 0) def testGetAllDefinitions(self): """ test if all definitions are defined in all the files """ for svgElement in self.svgList: definitions = '' element = minidom.parseString(svgElement.content.getvalue()) for tag in ['style', 'defs', 'metadata']: for elem in element.getElementsByTagName(tag): definitions += elem.toxml() element.unlink() defs = re.findall('(<defs>[ \n\t]*<path id="test"/>[ \n\t]*</defs>)', definitions) self.assertTrue(defs) metadata = re.findall('(<metadata id="metadataTest"/>)', definitions) self.assertTrue(metadata) def testGranulate(self): """ test the list generated by ``granulate`` """ rectTree = minidom.parseString( self.svgList[0].content.getvalue() ) rectTEST = rectTree.getElementsByTagName('rect')[0] textTree = minidom.parseString( self.svgList[1].content.getvalue() ) textTEST = textTree.getElementsByTagName('text')[0] self.assertEqual(len(self.svgList), 2) self.assertEqual(rectTEST.tagName, 'rect') self.assertEqual(rectTEST.attributes.get("x").value, "0") self.assertEqual(rectTEST.attributes.get("y").value, "0") self.assertEqual(rectTEST.attributes.get("width").value, "100") self.assertEqual(rectTEST.attributes.get("height").value, "100") self.assertEqual(rectTEST.attributes.get("fill").value, "blue") self.assertEqual(textTEST.tagName, 'text') self.assertEqual(textTEST.attributes.get('id').value, 'text') self.assertEqual(textTEST.attributes.get('x').value, '25') self.assertEqual(textTEST.attributes.get('y').value, '50') self.assertEqual(textTEST.attributes.get('font-size').value, '25') self.assertEqual(textTEST.attributes.get('font-family').value, 'Arial') self.assertEqual(textTEST.attributes.get('fill').value, 'white') # <rect x="0" y="0" width="100" height="100" fill="blue"/> # <text id="text" x="25" y="50" font-size="25" font-family="Arial" fill="white">Test</text> rectTree.unlink() textTree.unlink() def testNewElement(self): """ test the creation of a new element """ new = self.svgObject._GranulateSVG__newElement('myelem') self.assertEqual(new.tagName, "myelem") def testCreateElementBased(self): """ test the creation of a new element based on someone """ element = minidom.parseString('<myelem id="myElement" attr1="attribute 1" attr2="attr 2" />') newelement = self.svgObject._GranulateSVG__createElementBased(element.documentElement) self.assertEqual(newelement.tagName, "myelem") self.assertEqual(newelement.attributes.get("id").value, "myElement") self.assertEqual(newelement.attributes.get("attr1").value, "attribute 1") self.assertEqual(newelement.attributes.get("attr2").value, "attr 2") element.unlink() def testCreateTreeBased(self): """ test the creation of a new tree based on someone """ tree = minidom.parseString(svg0) # svg0 is my tree newTree = self.svgObject._GranulateSVG__createTreeBased(tree) self.assertTrue(tree.version, newTree.version) self.assertTrue(tree.encoding, newTree.encoding) self.assertTrue(tree.doctype, newTree.doctype) self.assertTrue(tree.documentElement, newTree.documentElement) tree.unlink() newTree.unlink() def testRemoveEmptyBlocks(self): """ test the removing all empty blocks """ newtree = copy.copy(minidom.parseString(svg0)) self.svgObject._GranulateSVG__removeEmptyBlocks(newtree) allG = newtree.getElementsByTagName('g') allSVG = newtree.getElementsByTagName('svg') for elem in allG + allSVG: self.assertTrue(elem.hasChildNodes()) newtree.unlink() def testRemoveLastNodes(self): """ test the removing the last nodes """ copyObject = copy.copy(self.svgObject) doc = minidom.Document() newParent = doc.createElement('pai') newChild = doc.createElement('filho') tupleList = [] for count in xrange(1,10): parent = copy.copy(newParent) child = copy.copy(newChild) parent.appendChild(child) tupleList.append( (parent, child) ) copyObject._GranulateSVG__lastAdded = tupleList copyObject._GranulateSVG__removeLastNodes() self.assertFalse( copyObject._GranulateSVG__lastAdded ) def testInsideDefs(self): """ test nodes inside any defs """ paths = self.xml.getElementsByTagName('path') texts = self.xml.getElementsByTagName('text') self.assertTrue(self.svgObject._GranulateSVG__insideDefs(paths[0], self.xml)) self.assertFalse(self.svgObject._GranulateSVG__insideDefs(texts[0], self.xml)) def testSetID(self): """ test setting ids """ parsed = minidom.parseString('<svg xmlns:granulate="http://www.cefetcampos.br/nsi/granulate"\ granulate:id="id0"><a/></svg>') doc = parsed.documentElement tagA = doc.getElementsByTagName('a')[0] self.svgObject._GranulateSVG__nextID = 1 self.svgObject._GranulateSVG__setID(tagA, tagA.parentNode) self.assertEqual(tagA.attributes['granulate:id'].value, 'id1') self.assertEqual(tagA.attributes['granulate:parentid'].value, 'id0') parsed.unlink() def testNewAttribute(self): """ test creating a new attribute """ pass def testCopyAttrs(self): """ test copying attributes from a node to another one """ parsed = minidom.parseString('<x xmlns:abc="abcNS" attr1="attr1" attr2="attr2"\ abc:xyz="letters" not="nothing"><first not="non_modified"/></x>') doc = parsed.documentElement first = parsed.getElementsByTagName('first')[0] self.svgObject._GranulateSVG__copyAttrs(first, doc) docAttrs = doc.attributes firstAttrs=first.attributes self.assertEqual(docAttrs['attr1'].value, firstAttrs['attr1'].value) self.assertEqual(docAttrs['attr2'].value, firstAttrs['attr2'].value) self.assertEqual(docAttrs['abc:xyz'].value, firstAttrs['abc:xyz'].value) self.assertEqual(docAttrs['not'].value, 'nothing') self.assertEqual(firstAttrs['not'].value, 'non_modified') parsed.unlink() def tearDown(self): self.xml.unlink()