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.
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))
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))
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))
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$')))
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))
def test_numeric_vs_numeric(self): diff = _make_difference(5, 6) self.assertEqual(diff, Deviation(-1, 6))