コード例 #1
0
ファイル: test_csvdiff.py プロジェクト: danielecook/csvdiff
    def test_diff_records_multikey(self):
        lhs = [
            {'name': 'a', 'type': 1, 'sheep': 7},
            {'name': 'b', 'type': 1, 'sheep': 12},
            {'name': 'c', 'type': 1, 'sheep': 0},
        ]
        rhs = [
            {'name': 'a', 'type': 1, 'sheep': 7},
            {'name': 'c', 'type': 1, 'sheep': 2},
            {'name': 'd', 'type': 1, 'sheep': 8},
        ]

        diff = csvdiff.diff_records(lhs, rhs, ['name', 'type'])
        assert patch.is_valid(diff)
        assert patch.is_typed(diff)

        self.assertEqual(diff['added'], [
            {'name': 'd', 'sheep': 8, 'type': 1}
        ])
        self.assertEqual(diff['removed'], [
            {'name': 'b', 'sheep': 12, 'type': 1}
        ])
        self.assertEqual(diff['changed'], [
            {'key': ['c', 1],
             'fields': {'sheep': {'from': 0, 'to': 2}}}
        ])

        # check that we can apply the diff
        patched = csvdiff.patch_records(diff, lhs)
        self.assertRecordsEqual(rhs, patched)
コード例 #2
0
ファイル: test_csvdiff.py プロジェクト: danielecook/csvdiff
    def test_diff_records_str_values(self):
        lhs = [
            {'name': 'a', 'sheep': '7'},
            {'name': 'b', 'sheep': '12'},
            {'name': 'c', 'sheep': '0'},
        ]
        rhs = [
            {'name': 'a', 'sheep': '7'},
            {'name': 'c', 'sheep': '2'},
            {'name': 'd', 'sheep': '8'},
        ]

        diff = csvdiff.diff_records(lhs, rhs, ['name'])
        assert patch.is_valid(diff)
        assert not patch.is_typed(diff)

        # check the contents of the diff
        self.assertEqual(diff['added'], [
            {'name': 'd', 'sheep': '8'}
        ])
        self.assertEqual(diff['removed'], [
            {'name': 'b', 'sheep': '12'}
        ])
        self.assertEqual(diff['changed'], [
            {'key': ['c'],
             'fields': {'sheep': {'from': '0', 'to': '2'}}}
        ])

        # check that we can apply the diff
        patched = csvdiff.patch_records(diff, lhs)
        self.assertRecordsEqual(rhs, patched)
コード例 #3
0
    def test_diff_records_multikey(self):
        lhs = [
            {
                'name': 'a',
                'type': 1,
                'sheep': 7
            },
            {
                'name': 'b',
                'type': 1,
                'sheep': 12
            },
            {
                'name': 'c',
                'type': 1,
                'sheep': 0
            },
        ]
        rhs = [
            {
                'name': 'a',
                'type': 1,
                'sheep': 7
            },
            {
                'name': 'c',
                'type': 1,
                'sheep': 2
            },
            {
                'name': 'd',
                'type': 1,
                'sheep': 8
            },
        ]

        diff = csvdiff.diff_records(lhs, rhs, ['name', 'type'])
        assert patch.is_valid(diff)
        assert patch.is_typed(diff)

        self.assertEqual(diff['added'], [{'name': 'd', 'sheep': 8, 'type': 1}])
        self.assertEqual(diff['removed'], [{
            'name': 'b',
            'sheep': 12,
            'type': 1
        }])
        self.assertEqual(diff['changed'], [{
            'key': ['c', 1],
            'fields': {
                'sheep': {
                    'from': 0,
                    'to': 2
                }
            }
        }])

        # check that we can apply the diff
        patched = csvdiff.patch_records(diff, lhs)
        self.assertRecordsEqual(rhs, patched)
コード例 #4
0
    def test_diff_records_str_values(self):
        lhs = [
            {
                'name': 'a',
                'sheep': '7'
            },
            {
                'name': 'b',
                'sheep': '12'
            },
            {
                'name': 'c',
                'sheep': '0'
            },
        ]
        rhs = [
            {
                'name': 'a',
                'sheep': '7'
            },
            {
                'name': 'c',
                'sheep': '2'
            },
            {
                'name': 'd',
                'sheep': '8'
            },
        ]

        diff = csvdiff.diff_records(lhs, rhs, ['name'])
        assert patch.is_valid(diff)
        assert not patch.is_typed(diff)

        # check the contents of the diff
        self.assertEqual(diff['added'], [{'name': 'd', 'sheep': '8'}])
        self.assertEqual(diff['removed'], [{'name': 'b', 'sheep': '12'}])
        self.assertEqual(diff['changed'], [{
            'key': ['c'],
            'fields': {
                'sheep': {
                    'from': '0',
                    'to': '2'
                }
            }
        }])

        # check that we can apply the diff
        patched = csvdiff.patch_records(diff, lhs)
        self.assertRecordsEqual(rhs, patched)
コード例 #5
0
ファイル: test_csvdiff.py プロジェクト: danielecook/csvdiff
 def test_summarize_identical(self):
     lhs = [
         {'name': 'a', 'sheep': '7'},
         {'name': 'b', 'sheep': '12'},
         {'name': 'c', 'sheep': '0'},
     ]
     diff = csvdiff.diff_records(lhs, lhs, ['name'])
     assert patch.is_valid(diff)
     assert not patch.is_typed(diff)
     o = StringIO()
     csvdiff._summarize_diff(diff, len(lhs), stream=o)
     self.assertEqual(
         o.getvalue(),
         'files are identical\n'
     )
コード例 #6
0
 def test_summarize_identical(self):
     lhs = [
         {
             'name': 'a',
             'sheep': '7'
         },
         {
             'name': 'b',
             'sheep': '12'
         },
         {
             'name': 'c',
             'sheep': '0'
         },
     ]
     diff = csvdiff.diff_records(lhs, lhs, ['name'])
     assert patch.is_valid(diff)
     assert not patch.is_typed(diff)
     o = StringIO()
     csvdiff._summarize_diff(diff, len(lhs), stream=o)
     self.assertEqual(o.getvalue(), 'files are identical\n')
コード例 #7
0
ファイル: test_csvdiff.py プロジェクト: danielecook/csvdiff
 def test_summarize(self):
     lhs = [
         {'name': 'a', 'sheep': '7'},
         {'name': 'b', 'sheep': '12'},
         {'name': 'c', 'sheep': '0'},
     ]
     rhs = [
         {'name': 'a', 'sheep': '7'},
         {'name': 'c', 'sheep': '2'},
         {'name': 'd', 'sheep': '8'},
     ]
     diff = csvdiff.diff_records(lhs, rhs, ['name'])
     assert patch.is_valid(diff)
     assert not patch.is_typed(diff)
     o = StringIO()
     csvdiff._summarize_diff(diff, len(lhs), stream=o)
     self.assertEqual(
         o.getvalue(),
         "1 rows removed (33.3%)\n"
         "1 rows added (33.3%)\n"
         "1 rows changed (33.3%)\n"
     )
コード例 #8
0
 def test_summarize(self):
     lhs = [
         {
             'name': 'a',
             'sheep': '7'
         },
         {
             'name': 'b',
             'sheep': '12'
         },
         {
             'name': 'c',
             'sheep': '0'
         },
     ]
     rhs = [
         {
             'name': 'a',
             'sheep': '7'
         },
         {
             'name': 'c',
             'sheep': '2'
         },
         {
             'name': 'd',
             'sheep': '8'
         },
     ]
     diff = csvdiff.diff_records(lhs, rhs, ['name'])
     assert patch.is_valid(diff)
     assert not patch.is_typed(diff)
     o = StringIO()
     csvdiff._summarize_diff(diff, len(lhs), stream=o)
     self.assertEqual(
         o.getvalue(), "1 rows removed (33.3%)\n"
         "1 rows added (33.3%)\n"
         "1 rows changed (33.3%)\n")