Add unit tests for new options

This commit is contained in:
Eitot 2016-08-29 11:24:29 +02:00
parent 5f2dd101df
commit aa1842fa45
4 changed files with 81 additions and 3 deletions

View file

@ -141,15 +141,59 @@ class NoAdobeXPathElements(unittest.TestCase):
lambda e: e.namespaceURI != 'http://ns.adobe.com/XPath/1.0/'), False, lambda e: e.namespaceURI != 'http://ns.adobe.com/XPath/1.0/'), False,
'Found Adobe XPath elements' ) 'Found Adobe XPath elements' )
class DoNotRemoveTitleWithOnlyText(unittest.TestCase):
def runTest(self):
doc = scour.scourXmlFile('unittests/descriptive-elements-with-text.svg')
self.assertEqual(len(doc.getElementsByTagNameNS(SVGNS, 'title')), 1,
'Removed title element with only text child' )
class RemoveEmptyTitleElement(unittest.TestCase):
def runTest(self):
doc = scour.scourXmlFile('unittests/empty-descriptive-elements.svg')
self.assertEqual(len(doc.getElementsByTagNameNS(SVGNS, 'title')), 0,
'Did not remove empty title element' )
class DoNotRemoveDescriptionWithOnlyText(unittest.TestCase):
def runTest(self):
doc = scour.scourXmlFile('unittests/descriptive-elements-with-text.svg')
self.assertEqual(len(doc.getElementsByTagNameNS(SVGNS, 'desc')), 1,
'Removed description element with only text child' )
class RemoveEmptyDescriptionElement(unittest.TestCase):
def runTest(self):
doc = scour.scourXmlFile('unittests/empty-descriptive-elements.svg')
self.assertEqual(len(doc.getElementsByTagNameNS(SVGNS, 'desc')), 0,
'Did not remove empty description element' )
class DoNotRemoveMetadataWithOnlyText(unittest.TestCase): class DoNotRemoveMetadataWithOnlyText(unittest.TestCase):
def runTest(self): def runTest(self):
doc = scour.scourXmlFile('unittests/metadata-with-text.svg') doc = scour.scourXmlFile('unittests/descriptive-elements-with-text.svg')
self.assertEqual(len(doc.getElementsByTagNameNS(SVGNS, 'metadata')), 1, self.assertEqual(len(doc.getElementsByTagNameNS(SVGNS, 'metadata')), 1,
'Removed metadata element with only text child' ) 'Removed metadata element with only text child' )
class RemoveEmptyMetadataElement(unittest.TestCase): class RemoveEmptyMetadataElement(unittest.TestCase):
def runTest(self): def runTest(self):
doc = scour.scourXmlFile('unittests/empty-metadata.svg') doc = scour.scourXmlFile('unittests/empty-descriptive-elements.svg')
self.assertEqual(len(doc.getElementsByTagNameNS(SVGNS, 'metadata')), 0,
'Did not remove empty metadata element' )
class DoNotRemoveDescriptiveElementsWithOnlyText(unittest.TestCase):
def runTest(self):
doc = scour.scourXmlFile('unittests/descriptive-elements-with-text.svg')
self.assertEqual(len(doc.getElementsByTagNameNS(SVGNS, 'title')), 1,
'Removed title element with only text child' )
self.assertEqual(len(doc.getElementsByTagNameNS(SVGNS, 'desc')), 1,
'Removed description element with only text child')
self.assertEqual(len(doc.getElementsByTagNameNS(SVGNS, 'metadata')), 1,
'Removed metadata element with only text child' )
class RemoveEmptyDescriptiveElements(unittest.TestCase):
def runTest(self):
doc = scour.scourXmlFile('unittests/empty-descriptive-elements.svg')
self.assertEqual(len(doc.getElementsByTagNameNS(SVGNS, 'title')), 0,
'Did not remove empty title element' )
self.assertEqual(len(doc.getElementsByTagNameNS(SVGNS, 'desc')), 0,
'Did not remove empty description element' )
self.assertEqual(len(doc.getElementsByTagNameNS(SVGNS, 'metadata')), 0, self.assertEqual(len(doc.getElementsByTagNameNS(SVGNS, 'metadata')), 0,
'Did not remove empty metadata element' ) 'Did not remove empty metadata element' )
@ -1152,13 +1196,34 @@ class PathImplicitLineWithMoveCommands(unittest.TestCase):
self.assertEqual( path.getAttribute('d'), "m100 100v100m200-100h-200m200 100v-100", self.assertEqual( path.getAttribute('d'), "m100 100v100m200-100h-200m200 100v-100",
"Implicit line segments after move not preserved") "Implicit line segments after move not preserved")
class RemoveTitlesOption(unittest.TestCase):
def runTest(self):
doc = scour.scourXmlFile('unittests/full-descriptive-elements.svg',
scour.parse_args(['--remove-titles']))
self.assertEqual(doc.childNodes.length, 1,
'Did not remove <title> tag with --remove-titles')
class RemoveDescriptionsOption(unittest.TestCase):
def runTest(self):
doc = scour.scourXmlFile('unittests/full-descriptive-elements.svg',
scour.parse_args(['--remove-descriptions']))
self.assertEqual(doc.childNodes.length, 1,
'Did not remove <desc> tag with --remove-descriptions')
class RemoveMetadataOption(unittest.TestCase): class RemoveMetadataOption(unittest.TestCase):
def runTest(self): def runTest(self):
doc = scour.scourXmlFile('unittests/full-metadata.svg', doc = scour.scourXmlFile('unittests/full-descriptive-elements.svg',
scour.parse_args(['--remove-metadata'])) scour.parse_args(['--remove-metadata']))
self.assertEqual(doc.childNodes.length, 1, self.assertEqual(doc.childNodes.length, 1,
'Did not remove <metadata> tag with --remove-metadata') 'Did not remove <metadata> tag with --remove-metadata')
class RemoveDescriptiveElementsOption(unittest.TestCase):
def runTest(self):
doc = scour.scourXmlFile('unittests/full-descriptive-elements.svg',
scour.parse_args(['--remove-descriptive-elements']))
self.assertEqual(doc.childNodes.length, 1,
'Did not remove <title>, <desc> and <metadata> tags with --remove-descriptive-elements')
class EnableCommentStrippingOption(unittest.TestCase): class EnableCommentStrippingOption(unittest.TestCase):
def runTest(self): def runTest(self):
with open('unittests/comment-beside-xml-decl.svg') as f: with open('unittests/comment-beside-xml-decl.svg') as f:

View file

@ -1,4 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg"> <svg xmlns="http://www.w3.org/2000/svg">
<title>This is a title element with only text node children</title>
<desc>This is a desc element with only text node children</desc>
<metadata>This is a metadata element with only text node children</metadata> <metadata>This is a metadata element with only text node children</metadata>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 182 B

After

Width:  |  Height:  |  Size: 319 B

Before After
Before After

View file

@ -1,3 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg"> <svg xmlns="http://www.w3.org/2000/svg">
<title></title>
<desc></desc>
<metadata></metadata> <metadata></metadata>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 72 B

After

Width:  |  Height:  |  Size: 106 B

Before After
Before After

View file

@ -1,4 +1,13 @@
<svg xmlns="http://www.w3.org/2000/svg"> <svg xmlns="http://www.w3.org/2000/svg">
<title xmlns:mytitle="http://example.org/mytitle">
<mytitle:title>This is an example SVG file</mytitle:title>
<mytitle:desc>Unit test for Scour's --remove-titles option</mytitle:desc>
</title>
<desc xmlns:mydesc="http://example.org/mydesc">
<mydesc:title>This is an example SVG file</mydesc:title>
<mydesc:para>Unit test for Scour's
<mydesc:emph>--remove-descriptions</mydesc:emph> option</mydesc:para>
</desc>
<metadata> <metadata>
<rdf:RDF <rdf:RDF
xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"

Before

Width:  |  Height:  |  Size: 765 B

After

Width:  |  Height:  |  Size: 1.2 KiB

Before After
Before After