def test_shift(self): s = sstr("abcde") self.assertEqual(s << 0, "abcde") self.assertEqual(s >> 0, "abcde") self.assertEqual(s << 2, "cdeab") self.assertEqual(s >> 2, "deabc") self.assertEqual(s >> 5, "abcde") self.assertTrue((s >> 5) << 5 == "abcde") self.assertRaises(TypeError, s >> 2.3) self.assertTrue(s >> -1 == s << 1) # Supports negative shift as reverse direction
def test_sstr_exercise(self): s1 = sstr("abcde") self.assertEqual('abcde', s1 << 0) self.assertEqual('abcde', s1 >> 0) self.assertEqual('cdeab', s1 << 2) self.assertEqual('deabc', s1 >> 2) self.assertEqual('abcde', s1 >> 5) self.assertTrue((s1 >> 5) << 5 == 'abcde')
def test_sstr_extra(self): s2 = sstr(12345) self.assertEqual('12345', s2 << 10) self.assertEqual('45123', s2 >> 12) self.assertEqual('51234', s2 << 14) self.assertEqual('34512', s2 >> -7) with self.assertRaises(TypeError): s2 << 5.6
def test_shift_left(self): s = sstr("abcde") self.assertEqual(s << 0, "abcde") self.assertEqual(s << 2, "cdeab") self.assertEqual(s >> 5, "abcde")
def test_shift_multiple(self): s = sstr("abcde") self.assertTrue((s >> 5) << 5 == "abcde")
def test_shift_right(self): s = sstr("abcde") self.assertEqual(s >> 0, "abcde") self.assertEqual(s >> 2, "deabc")