######################################################################################### # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ######################################################################################### import scanner import unittest import diff import xml.parsers.expat class ReadXmlTestCase(unittest.TestCase): def testReadOne(self): document = diff.Document() parser = xml.parsers.expat.ParserCreate() parser.StartElementHandler = document.start_element parser.EndElementHandler = document.end_element parser.CharacterDataHandler = document.char_data parser.Parse(""" MD5 SUM SHA SUM RIPEMD """, 1) self.assertEqual('a directory', document.dir) self.assertEqual('a name', document.name) self.assertEqual('MD5 SUM', document.md5) self.assertEqual('SHA SUM', document.sha) self.assertEqual('RIPEMD', document.ripemd) def testLoad(self): documents = diff.Documents() documents.load(""" MD5 SUM SHA SUM RIPEMD ANOTHER MD5 SUM ANOTHER SHA SUM ANOTHER RIPEMD """) self.assert_(not documents.documents == None) self.assertEqual('2008-01-22', documents.on) self.assertEqual(2, len(documents.documents)) document = documents.documents[0] self.assertEqual('a directory', document.dir) self.assertEqual('a name', document.name) self.assertEqual('MD5 SUM', document.md5) self.assertEqual('SHA SUM', document.sha) self.assertEqual('RIPEMD', document.ripemd) document = documents.documents[1] self.assertEqual('another directory', document.dir) self.assertEqual('another name', document.name) self.assertEqual('ANOTHER MD5 SUM', document.md5) self.assertEqual('ANOTHER SHA SUM', document.sha) self.assertEqual('ANOTHER RIPEMD', document.ripemd) class DiffTestCase(unittest.TestCase): def setUp(self): self.documents = [] self.documents.append(diff.document("dir", "name", "md5", "sha", "ripemd")) self.document2 = diff.document("dir", "name2", "2md5", "2sha", "2ripemd") self.documents.append(self.document2) self.documents.append(diff.document("dirA", "name", "Amd5", "Asha", "Aripemd")) self.documents.append(diff.document("dirA", "nameB", "Bmd5", "Bsha", "Bripemd")) def testIsMissing(self): document = diff.document("dir", "name", "md5", "sha", "ripemd") self.assertEquals(False, document.isMissing(self.documents)) document = diff.document("dirA", "name", "Amd5", "Asha", "Aripemd") self.assertEquals(False, document.isMissing(self.documents)) document = diff.document("dirC", "name", "md5", "sha", "ripemd") self.assertEquals(True, document.isMissing(self.documents)) document = diff.document("dir", "nameB", "md5", "sha", "ripemd") self.assertEquals(True, document.isMissing(self.documents)) def testIsModified(self): document = diff.document("dir", "name", "md5", "sha", "ripemd") self.assertEquals(False, document.isModified(self.documents)) document = diff.document("dirA", "name", "Amd5", "Asha", "Aripemd") self.assertEquals(False, document.isModified(self.documents)) document = diff.document("dirC", "name", "md5", "sha", "ripemd") self.assertEquals(False, document.isModified(self.documents)) document = diff.document("dir", "nameB", "md5", "sha", "ripemd") self.assertEquals(False, document.isModified(self.documents)) document = diff.document("dir", "name", "Amd5", "sha", "ripemd") self.assertEquals(True, document.isModified(self.documents)) document = diff.document("dir", "name", "md5", "Qsha", "ripemd") self.assertEquals(True, document.isModified(self.documents)) document = diff.document("dir", "name", "md5", "sha", "Tripemd") self.assertEquals(True, document.isModified(self.documents)) def testCompareEmpty(self): emptyDocuments = diff.Documents() documents = diff.documents(self.documents) added, removed, modified = documents.compare(emptyDocuments) self.assert_(not added == None) self.assert_(not removed == None) self.assert_(not modified == None) self.assertEquals(4, len(added)) self.assertEquals(0, len(modified)) self.assertEquals(0, len(removed)) added, removed, modified = emptyDocuments.compare(documents) self.assert_(not added == None) self.assert_(not removed == None) self.assert_(not modified == None) self.assertEquals(0, len(added)) self.assertEquals(0, len(modified)) self.assertEquals(4, len(removed)) def testCompareDiffering(self): documents = diff.documents(self.documents) differentsDocuments = diff.Documents() modifiedDocument = diff.document("dir", "name", "NOT", "NOT", "NOT") newDocument = diff.document("anotherdir", "anothername", "NOT", "NOT", "NOT") differentsDocuments.append(modifiedDocument) differentsDocuments.append(newDocument) differentsDocuments.append(diff.document("dirA", "name", "Amd5", "Asha", "Aripemd")) differentsDocuments.append(diff.document("dirA", "nameB", "Bmd5", "Bsha", "Bripemd")) added, removed, modified = differentsDocuments.compare(documents) self.assert_(not added == None) self.assert_(not removed == None) self.assert_(not modified == None) self.assertEquals(1, len(modified)) self.assertEquals(1, len(added)) self.assertEquals(1, len(removed)) self.assertEquals(modifiedDocument, modified[0]) self.assertEquals(newDocument, added[0]) self.assertEquals(self.document2, removed[0])