def test_extend_positive(self): """Sign extension of a positive number doesn't change it. Note high bit in field must be zero. 7 is a positive number in a 3-bit field, but a (different) negative number in a 3-bit field. """ self.assertEqual(sign_extend(7, 4), 7) self.assertNotEqual(sign_extend(7, 3), 7) self.assertTrue(sign_extend(7, 3) < 0)
def test_extend_negative(self): """For negative numbers, sign extension restores the high bits""" chunk = (-3) & 0b111 self.assertEqual(sign_extend(chunk, 3), -3)