| 1 |  |  | import unittest, os | 
            
                                                                                                            
                            
            
                                    
            
            
                | 2 |  |  | from mock import Mock, patch, call | 
            
                                                                                                            
                            
            
                                    
            
            
                | 3 |  |  | from tests.ditest import DependencyInjectionTestBase | 
            
                                                                                                            
                            
            
                                    
            
            
                | 4 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 5 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 6 |  |  | class DiffTests(DependencyInjectionTestBase): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 7 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 8 |  |  |     def setUp(self): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 9 |  |  |         super(DiffTests, self).setUp() | 
            
                                                                                                            
                            
            
                                    
            
            
                | 10 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 11 |  |  |     def test_areEqual_true_for_same_provenance(self): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 12 |  |  |         from niprov.diff import Diff | 
            
                                                                                                            
                            
            
                                    
            
            
                | 13 |  |  |         diff = Diff(self.fileWithP({'a':1,'b':2}),  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 14 |  |  |                     self.fileWithP({'a':1,'b':2})) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 15 |  |  |         self.assertTrue(diff.areEqual()) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 16 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 17 |  |  |     def test_areEqual_false_for_missing_key(self): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 18 |  |  |         from niprov.diff import Diff | 
            
                                                                                                            
                            
            
                                    
            
            
                | 19 |  |  |         diff = Diff(self.fileWithP({'a':1,'b':2,'c':3}),  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 20 |  |  |                     self.fileWithP({'a':1,'b':2})) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 21 |  |  |         self.assertFalse(diff.areEqual()) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 22 |  |  |         diff = Diff(self.fileWithP({'a':1,'b':2}),  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 23 |  |  |                     self.fileWithP({'a':1,'b':2,'d':4})) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 24 |  |  |         self.assertFalse(diff.areEqual()) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 25 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 26 |  |  |     def test_areEqual_false_for_different_value(self): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 27 |  |  |         from niprov.diff import Diff | 
            
                                                                                                            
                            
            
                                    
            
            
                | 28 |  |  |         diff = Diff(self.fileWithP({'a':1}),  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 29 |  |  |                     self.fileWithP({'a':2})) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 30 |  |  |         self.assertFalse(diff.areEqual()) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 31 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 32 |  |  |     def test_can_ignore_key(self): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 33 |  |  |         from niprov.diff import Diff | 
            
                                                                                                            
                            
            
                                    
            
            
                | 34 |  |  |         diff = Diff(self.fileWithP({'a':1}),  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 35 |  |  |                     self.fileWithP({'a':1,'b':3})) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 36 |  |  |         self.assertTrue(diff.areEqual(ignore=['b','c'])) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 37 |  |  |         diff = Diff(self.fileWithP({'a':1,'b':3}),  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 38 |  |  |                     self.fileWithP({'a':2,'b':3})) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 39 |  |  |         self.assertTrue(diff.areEqual(ignore=['a','c'])) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 40 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 41 |  |  |     def test_areEqual_ignores_id_by_default(self): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 42 |  |  |         from niprov.diff import Diff | 
            
                                                                                                            
                            
            
                                    
            
            
                | 43 |  |  |         diff = Diff(self.fileWithP({'_id':1,'b':3}),  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 44 |  |  |                     self.fileWithP({'_id':2,'b':3})) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 45 |  |  |         self.assertTrue(diff.areEqual()) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 46 |  |  |         diff = Diff(self.fileWithP({'_id':1,'b':3}),  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 47 |  |  |                     self.fileWithP({'b':3})) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 48 |  |  |         self.assertTrue(diff.areEqual()) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 49 |  |  |         diff = Diff(self.fileWithP({'_id':1,'b':3}),  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 50 |  |  |                     self.fileWithP({'b':3})) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 51 |  |  |         self.assertTrue(diff.areEqual(ignore=['d'])) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 52 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 53 |  |  |     def test_can_select_specific_keys_and_ignore_the_rest(self): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 54 |  |  |         from niprov.diff import Diff | 
            
                                                                                                            
                            
            
                                    
            
            
                | 55 |  |  |         diff = Diff(self.fileWithP({'a':1,'b':2,'c':3}),  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 56 |  |  |                     self.fileWithP({'a':1,'b':9,'c':3,'d':4})) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 57 |  |  |         self.assertTrue(diff.areEqual(select=['a','c'])) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 58 |  |  |         self.assertFalse(diff.areEqual(select=['b'])) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 59 |  |  |         self.assertFalse(diff.areEqual(select=['d'])) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 60 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 61 |  |  |     def test_assertEqual_throws_for_different_value(self): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 62 |  |  |         from niprov.diff import Diff | 
            
                                                                                                            
                            
            
                                    
            
            
                | 63 |  |  |         diff = Diff(self.fileWithP({'a':1}),  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 64 |  |  |                     self.fileWithP({'a':2})) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 65 |  |  |         with self.assertRaises(AssertionError): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 66 |  |  |             diff.assertEqual() | 
            
                                                                                                            
                            
            
                                    
            
            
                | 67 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 68 |  |  |     def test_areEqualProtocol_selects_on_BaseFile_getProtocolFields(self): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 69 |  |  |         from niprov.diff import Diff | 
            
                                                                                                            
                            
            
                                    
            
            
                | 70 |  |  |         diff = Diff(self.fileWithP({'a':1,'x':7}, protocol=['x']),  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 71 |  |  |                     self.fileWithP({'a':2,'x':7})) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 72 |  |  |         self.assertTrue(diff.areEqualProtocol()) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 73 |  |  |         diff = Diff(self.fileWithP({'a':1,'x':7}, protocol=['x']),  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 74 |  |  |                     self.fileWithP({'a':2,'x':8})) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 75 |  |  |         self.assertFalse(diff.areEqualProtocol()) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 76 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 77 |  |  |     def test_assertEqualProtocol_throws_if_not_areEqualProtocol(self): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 78 |  |  |         from niprov.diff import Diff | 
            
                                                                                                            
                            
            
                                    
            
            
                | 79 |  |  |         diff = Diff(self.fileWithP({'a':1,'x':7}, protocol=['x']),  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 80 |  |  |                     self.fileWithP({'a':2,'x':8})) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 81 |  |  |         with self.assertRaises(AssertionError): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 82 |  |  |             diff.assertEqualProtocol() | 
            
                                                                                                            
                            
            
                                    
            
            
                | 83 |  |  |  | 
            
                                                                                                            
                            
            
                                                                    
                                                                                                        
            
            
                | 84 |  | View Code Duplication |     def test_getDifferenceString(self): | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 85 |  |  |         from niprov.diff import Diff | 
            
                                                                                                            
                            
            
                                    
            
            
                | 86 |  |  |         n = Diff.NCHARSCOL | 
            
                                                                                                            
                            
            
                                    
            
            
                | 87 |  |  |         diff = Diff(self.fileWithP({'a':1}),  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 88 |  |  |                     self.fileWithP({'a':2,'b':3})) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 89 |  |  |         diffStr = diff.getDifferenceString() | 
            
                                                                                                            
                            
            
                                    
            
            
                | 90 |  |  |         line = ' '.ljust(n)+'afilename'.ljust(n)+' '+'afilename'.ljust(n) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 91 |  |  |         self.assertIn(line, diffStr) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 92 |  |  |         line = 'a'.ljust(n)+' '+str(1).ljust(n)+' '+str(2).ljust(n) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 93 |  |  |         self.assertIn(line, diffStr) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 94 |  |  |         line = 'b'.ljust(n)+' '+'n/a'.ljust(n)+' '+str(3).ljust(n) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 95 |  |  |         self.assertIn(line, diffStr) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 96 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 97 |  |  |     def test_assertEqual_exception_message_is_getDifferenceString(self): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 98 |  |  |         from niprov.diff import Diff | 
            
                                                                                                            
                            
            
                                    
            
            
                | 99 |  |  |         n = Diff.NCHARSCOL | 
            
                                                                                                            
                            
            
                                    
            
            
                | 100 |  |  |         diff = Diff(self.fileWithP({'a':1}),  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 101 |  |  |                     self.fileWithP({'a':2,'b':2})) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 102 |  |  |         exception = None | 
            
                                                                                                            
                            
            
                                    
            
            
                | 103 |  |  |         try: | 
            
                                                                                                            
                            
            
                                    
            
            
                | 104 |  |  |             diff.assertEqual() | 
            
                                                                                                            
                            
            
                                    
            
            
                | 105 |  |  |         except AssertionError as e: | 
            
                                                                                                            
                            
            
                                    
            
            
                | 106 |  |  |             exception = e | 
            
                                                                                                            
                            
            
                                    
            
            
                | 107 |  |  |         self.assertIsNotNone(exception, 'No AssertionError raised') | 
            
                                                                                                            
                            
            
                                    
            
            
                | 108 |  |  |         self.assertEqual(diff.getDifferenceString(), str(e)) | 
            
                                                                                                            
                                                                
            
                                    
            
            
                | 109 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 110 |  |  |     def test_Diff_to_string_is_(self): | 
            
                                                                        
                            
            
                                    
            
            
                | 111 |  |  |         from niprov.diff import Diff | 
            
                                                                        
                            
            
                                    
            
            
                | 112 |  |  |         diff = Diff(self.fileWithP({'a':1}),  | 
            
                                                                        
                            
            
                                    
            
            
                | 113 |  |  |                     self.fileWithP({'a':2})) | 
            
                                                                        
                            
            
                                    
            
            
                | 114 |  |  |         self.assertEqual(diff.getDifferenceString(), str(diff)) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 115 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 116 |  |  |     def test_getSame(self): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 117 |  |  |         from niprov.diff import Diff | 
            
                                                                                                            
                            
            
                                    
            
            
                | 118 |  |  |         diff = Diff(self.fileWithP({'a':1,'b':2}),  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 119 |  |  |                     self.fileWithP({'a':1,'b':3})) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 120 |  |  |         self.assertEqual(diff.getSame(), {'a':'same'}) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 121 |  |  |  | 
            
                                                                                                            
                            
            
                                                                    
                                                                                                        
            
            
                | 122 |  | View Code Duplication |     def test_getSameString(self): | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                                                            
                            
            
                                    
            
            
                | 123 |  |  |         from niprov.diff import Diff | 
            
                                                                                                            
                            
            
                                    
            
            
                | 124 |  |  |         n = Diff.NCHARSCOL | 
            
                                                                                                            
                            
            
                                    
            
            
                | 125 |  |  |         diff = Diff(self.fileWithP({'a':1}),  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 126 |  |  |                     self.fileWithP({'a':1,'b':3})) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 127 |  |  |         diffStr = diff.getSameString() | 
            
                                                                                                            
                            
            
                                    
            
            
                | 128 |  |  |         line = ' '.ljust(n)+'afilename'.ljust(n)+' '+'afilename'.ljust(n) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 129 |  |  |         self.assertIn(line, diffStr) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 130 |  |  |         line = 'a'.ljust(n)+' '+str(1).ljust(n)+' '+str(1).ljust(n) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 131 |  |  |         self.assertIn(line, diffStr) | 
            
                                                                                                            
                            
            
                                    
            
            
                | 132 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 133 |  |  |     def fileWithP(self, provenance, protocol=None): | 
            
                                                                                                            
                            
            
                                    
            
            
                | 134 |  |  |         mfile = Mock() | 
            
                                                                                                            
                            
            
                                    
            
            
                | 135 |  |  |         mfile.location = 'afilename' | 
            
                                                                                                            
                            
            
                                    
            
            
                | 136 |  |  |         mfile.getProvenance.return_value = provenance | 
            
                                                                                                            
                            
            
                                    
            
            
                | 137 |  |  |         mfile.getProtocolFields.return_value = protocol | 
            
                                                                                                            
                            
            
                                    
            
            
                | 138 |  |  |         return mfile | 
            
                                                                                                            
                            
            
                                    
            
            
                | 139 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 140 |  |  |  | 
            
                                                                                                            
                                                                
            
                                    
            
            
                | 141 |  |  |  | 
            
                                                        
            
                                    
            
            
                | 142 |  |  |  |