Example #1
0
    def test_none_vs_numeric(self):
        diff = _make_difference(None, 6)          # For None vs non-zero,
        self.assertEqual(diff, Deviation(-6, 6))  # difference is calculated
                                                  # as 0 - other.

        diff = _make_difference(None, 0)            # For None vs zero,
        self.assertEqual(diff, Deviation(None, 0))  # difference remains None.
Example #2
0
    def test_same(self):
        """The _make_difference() function returns differences for
        objects that are KNOWN TO BE DIFFERENT--it does not test
        for differences itself.
        """
        diff = _make_difference('a', 'a')
        self.assertEqual(diff, Invalid('a', 'a'))

        diff = _make_difference(None, None)
        self.assertEqual(diff, Invalid(None, None))
Example #3
0
    def test_show_expected(self):
        """If requirement is common it should be omitted from Invalid
        difference (but not from Deviation differences).
        """
        diff = _make_difference('a', 6, show_expected=True)
        self.assertEqual(diff, Invalid('a', expected=6))

        diff = _make_difference('a', 6, show_expected=False)
        self.assertEqual(diff, Invalid('a'))

        diff = _make_difference(NOVALUE, 6, show_expected=False)
        self.assertEqual(diff, Deviation(-6, 6))
Example #4
0
    def test_novalue_comparisons(self):
        diff = _make_difference('a', NOVALUE)
        self.assertEqual(diff, Extra('a'))

        diff = _make_difference(NOVALUE, 'b')
        self.assertEqual(diff, Missing('b'))

        # For numeric comparisons, NOVALUE behaves like None.
        diff = _make_difference(5, NOVALUE)
        self.assertEqual(diff, Deviation(+5, None))

        diff = _make_difference(0, NOVALUE)
        self.assertEqual(diff, Deviation(0, None))

        diff = _make_difference(NOVALUE, 6)
        self.assertEqual(diff, Deviation(-6, 6))  # <- Asymmetric behavior
                                                  #    (see None vs numeric)!

        diff = _make_difference(NOVALUE, 0)
        self.assertEqual(diff, Deviation(None, 0))
Example #5
0
    def test_object_vs_object(self):
        """Non-numeric comparisons return Invalid type."""
        diff = _make_difference('a', 'b')
        self.assertEqual(diff, Invalid('a', 'b'))

        diff = _make_difference(5, 'b')
        self.assertEqual(diff, Invalid(5, 'b'))

        diff = _make_difference('a', 6)
        self.assertEqual(diff, Invalid('a', 6))

        diff = _make_difference(float('nan'), 6)
        self.assertEqual(diff, Invalid(float('nan'), 6))

        diff = _make_difference(5, float('nan'))
        self.assertEqual(diff, Invalid(5, float('nan')))

        fn = lambda x: True
        diff = _make_difference('a', fn)
        self.assertEqual(diff, Invalid('a', fn))

        regex = re.compile('^test$')
        diff = _make_difference('a', regex)
        self.assertEqual(diff, Invalid('a', re.compile('^test$')))
Example #6
0
    def test_numeric_vs_none(self):
        diff = _make_difference(5, None)
        self.assertEqual(diff, Deviation(+5, None))

        diff = _make_difference(0, None)
        self.assertEqual(diff, Deviation(+0, None))
Example #7
0
 def test_numeric_vs_numeric(self):
     diff = _make_difference(5, 6)
     self.assertEqual(diff, Deviation(-1, 6))