Beispiel #1
0
 def test_different_keyword_values(self):
     ha = Header([('A', 1), ('B', 2), ('C', 3)])
     hb = ha.copy()
     hb['C'] = 4
     diff = HeaderDiff(ha, hb)
     assert not diff.identical
     assert diff.diff_keyword_values == {'C': [(3, 4)]}
Beispiel #2
0
    def test_ignore_blank_cards(self):
        """Test for #152--ignore blank cards."""

        ha = Header([('A', 1), ('B', 2), ('C', 3)])
        hb = Header([('A', 1), ('', ''), ('B', 2), ('', ''), ('C', 3)])
        hc = ha.copy()
        hc.append()
        hc.append()

        # We now have a header with interleaved blanks, and a header with end
        # blanks, both of which should ignore the blanks
        assert_true(HeaderDiff(ha, hb).identical)
        assert_true(HeaderDiff(ha, hc).identical)
        assert_true(HeaderDiff(hb, hc).identical)

        assert_false(HeaderDiff(ha, hb, ignore_blank_cards=False).identical)
        assert_false(HeaderDiff(ha, hc, ignore_blank_cards=False).identical)

        # Both hb and hc have the same number of blank cards; since order is
        # currently ignored, these should still be identical even if blank
        # cards are not ignored
        assert_true(HeaderDiff(hb, hc, ignore_blank_cards=False).identical)

        hc.append()
        # But now there are different numbers of blanks, so they should not be
        # ignored:
        assert_false(HeaderDiff(hb, hc, ignore_blank_cards=False).identical)
Beispiel #3
0
 def test_different_keyword_values(self):
     ha = Header([('A', 1), ('B', 2), ('C', 3)])
     hb = ha.copy()
     hb['C'] = 4
     diff = HeaderDiff(ha, hb)
     assert_false(diff.identical)
     assert_equal(diff.diff_keyword_values, {'C': [(3, 4)]})
Beispiel #4
0
 def test_different_keyword_comments(self):
     ha = Header([('A', 1), ('B', 2), ('C', 3, 'comment 1')])
     hb = ha.copy()
     hb.comments['C'] = 'comment 2'
     diff = HeaderDiff(ha, hb)
     assert_false(diff.identical)
     assert_equal(diff.diff_keyword_comments,
                  {'C': [('comment 1', 'comment 2')]})
Beispiel #5
0
 def test_different_keyword_values_with_duplicate(self):
     ha = Header([('A', 1), ('B', 2), ('C', 3)])
     hb = ha.copy()
     ha.append(('C', 4))
     hb.append(('C', 5))
     diff = HeaderDiff(ha, hb)
     assert_false(diff.identical)
     assert_equal(diff.diff_keyword_values, {'C': [None, (4, 5)]})
Beispiel #6
0
 def test_different_keywords(self):
     ha = Header([('A', 1), ('B', 2), ('C', 3)])
     hb = ha.copy()
     hb['C'] = 4
     hb['D'] = (5, 'Comment')
     ha['E'] = (6, 'Comment')
     ha['F'] = (7, 'Comment')
     diff = HeaderDiff(ha, hb)
     assert_false(diff.identical)
     assert_equal(diff.diff_keywords, (['E', 'F'], ['D']))
Beispiel #7
0
    def test_different_keyword_count(self):
        ha = Header([('A', 1), ('B', 2), ('C', 3)])
        hb = ha.copy()
        del hb['B']
        diff = HeaderDiff(ha, hb)
        assert_false(diff.identical)
        assert_equal(diff.diff_keyword_count, (3, 2))

        # But make sure the common keywords are at least correct
        assert_equal(diff.common_keywords, ['A', 'C'])
Beispiel #8
0
    def test_different_keyword_count(self):
        ha = Header([('A', 1), ('B', 2), ('C', 3)])
        hb = ha.copy()
        del hb['B']
        diff = HeaderDiff(ha, hb)
        assert not diff.identical
        assert diff.diff_keyword_count == (3, 2)

        # But make sure the common keywords are at least correct
        assert diff.common_keywords == ['A', 'C']
Beispiel #9
0
 def test_asymmetric_duplicate_keywords(self):
     ha = Header([('A', 1), ('B', 2), ('C', 3)])
     hb = ha.copy()
     ha.append(('A', 2, 'comment 1'))
     ha.append(('A', 3, 'comment 2'))
     hb.append(('B', 4, 'comment 3'))
     hb.append(('C', 5, 'comment 4'))
     diff = HeaderDiff(ha, hb)
     assert_false(diff.identical)
     assert_equal(diff.diff_keyword_values, {})
     assert_equal(diff.diff_duplicate_keywords,
                  {'A': (3, 1), 'B': (1, 2), 'C': (1, 2)})
Beispiel #10
0
 def test_floating_point_tolerance(self):
     ha = Header([('A', 1), ('B', 2.00001), ('C', 3.000001)])
     hb = ha.copy()
     hb['B'] = 2.00002
     hb['C'] = 3.000002
     diff = HeaderDiff(ha, hb)
     assert_false(diff.identical)
     assert_equal(diff.diff_keyword_values,
                  {'B': [(2.00001, 2.00002)], 'C': [(3.000001, 3.000002)]})
     diff = HeaderDiff(ha, hb, tolerance=1e-6)
     assert_false(diff.identical)
     assert_equal(diff.diff_keyword_values, {'B': [(2.00001, 2.00002)]})
Beispiel #11
0
    def test_ignore_keyword_values(self):
        ha = Header([('A', 1), ('B', 2), ('C', 3)])
        hb = ha.copy()
        hb['B'] = 4
        hb['C'] = 5
        diff = HeaderDiff(ha, hb, ignore_keywords=['*'])
        assert diff.identical
        diff = HeaderDiff(ha, hb, ignore_keywords=['B'])
        assert not diff.identical
        assert diff.diff_keyword_values == {'C': [(3, 5)]}

        report = diff.report()
        assert 'Keyword B        has different values' not in report
        assert 'Keyword C        has different values' in report

        # Test case-insensitivity
        diff = HeaderDiff(ha, hb, ignore_keywords=['b'])
        assert not diff.identical
        assert diff.diff_keyword_values == {'C': [(3, 5)]}
Beispiel #12
0
    def test_ignore_keyword_values(self):
        ha = Header([('A', 1), ('B', 2), ('C', 3)])
        hb = ha.copy()
        hb['B'] = 4
        hb['C'] = 5
        diff = HeaderDiff(ha, hb, ignore_keywords=['*'])
        assert_true(diff.identical)
        diff = HeaderDiff(ha, hb, ignore_keywords=['B'])
        assert_false(diff.identical)
        assert_equal(diff.diff_keyword_values, {'C': [(3, 5)]})

        report = diff.report()
        assert_true('Keyword B        has different values' not in report)
        assert_true('Keyword C        has different values' in report)

        # Test case-insensitivity
        diff = HeaderDiff(ha, hb, ignore_keywords=['b'])
        assert_false(diff.identical)
        assert_equal(diff.diff_keyword_values, {'C': [(3, 5)]})
Beispiel #13
0
    def test_ignore_blanks(self):
        pyfits.STRIP_HEADER_WHITESPACE = False
        try:
            ha = Header([('A', 1), ('B', 2), ('C', 'A       ')])
            hb = ha.copy()
            hb['C'] = 'A'
            assert_not_equal(ha['C'], hb['C'])

            diff = HeaderDiff(ha, hb)
            # Trailing blanks are ignored by default
            assert_true(diff.identical)
            assert_equal(diff.diff_keyword_values, {})

            # Don't ignore blanks
            diff = HeaderDiff(ha, hb, ignore_blanks=False)
            assert_false(diff.identical)
            assert_equal(diff.diff_keyword_values, {'C': [('A       ', 'A')]})
        finally:
            pyfits.STRIP_HEADER_WHITESPACE = True
Beispiel #14
0
    def test_ignore_keyword_comments(self):
        ha = Header([('A', 1, 'A'), ('B', 2, 'B'), ('C', 3, 'C')])
        hb = ha.copy()
        hb.comments['B'] = 'D'
        hb.comments['C'] = 'E'
        diff = HeaderDiff(ha, hb, ignore_comments=['*'])
        assert diff.identical
        diff = HeaderDiff(ha, hb, ignore_comments=['B'])
        assert not diff.identical
        assert diff.diff_keyword_comments == {'C': [('C', 'E')]}

        report = diff.report()
        assert 'Keyword B        has different comments' not in report
        assert 'Keyword C        has different comments' in report

        # Test case-insensitivity
        diff = HeaderDiff(ha, hb, ignore_comments=['b'])
        assert not diff.identical
        assert diff.diff_keyword_comments == {'C': [('C', 'E')]}
Beispiel #15
0
    def test_ignore_keyword_comments(self):
        ha = Header([('A', 1, 'A'), ('B', 2, 'B'), ('C', 3, 'C')])
        hb = ha.copy()
        hb.comments['B'] = 'D'
        hb.comments['C'] = 'E'
        diff = HeaderDiff(ha, hb, ignore_comments=['*'])
        assert_true(diff.identical)
        diff = HeaderDiff(ha, hb, ignore_comments=['B'])
        assert_false(diff.identical)
        assert_equal(diff.diff_keyword_comments, {'C': [('C', 'E')]})

        report = diff.report()
        assert_true('Keyword B        has different comments' not in report)
        assert_true('Keyword C        has different comments' in report)

        # Test case-insensitivity
        diff = HeaderDiff(ha, hb, ignore_comments=['b'])
        assert_false(diff.identical)
        assert_equal(diff.diff_keyword_comments, {'C': [('C', 'E')]})
Beispiel #16
0
    def test_ignore_blanks(self):
        fits.STRIP_HEADER_WHITESPACE = False
        try:
            ha = Header([('A', 1), ('B', 2), ('C', 'A       ')])
            hb = ha.copy()
            hb['C'] = 'A'
            assert ha['C'] != hb['C']

            diff = HeaderDiff(ha, hb)
            # Trailing blanks are ignored by default
            assert diff.identical
            assert diff.diff_keyword_values == {}

            # Don't ignore blanks
            diff = HeaderDiff(ha, hb, ignore_blanks=False)
            assert not diff.identical
            assert diff.diff_keyword_values == {'C': [('A       ', 'A')]}
        finally:
            fits.STRIP_HEADER_WHITESPACE = True
Beispiel #17
0
 def test_slightly_different_headers(self):
     ha = Header([('A', 1), ('B', 2), ('C', 3)])
     hb = ha.copy()
     hb['C'] = 4
     assert_false(HeaderDiff(ha, hb).identical)
Beispiel #18
0
 def test_identical_headers(self):
     ha = Header([('A', 1), ('B', 2), ('C', 3)])
     hb = ha.copy()
     assert_true(HeaderDiff(ha, hb).identical)
Beispiel #19
0
 def test_common_keywords(self):
     ha = Header([('A', 1), ('B', 2), ('C', 3)])
     hb = ha.copy()
     hb['C'] = 4
     hb['D'] = (5, 'Comment')
     assert_equal(HeaderDiff(ha, hb).common_keywords, ['A', 'B', 'C'])