def test_negative_and_3_swap(self): #This would ideally raise SwapError due to negative numbers being swapped but ParseError is sufficient with self.assertRaises(ParseError): parse_swap_elements('1 2 3 4 : -4-3')
def test_basic1(self): result = parse_swap_elements('1 2 3 4 5 6 7 8 9 : 0-8') self.assertEqual(result, '9 2 3 4 5 6 7 8 1')
def test_empty_string(self): with self.assertRaises(ParseError): result = parse_swap_elements('')
def test_0_and_out_of_bounds_swap(self): with self.assertRaises(SwapError): parse_swap_elements('1 2 3 4 : 0-10')
def test_wrong_format4(self): with self.assertRaises(ParseError): parse_swap_elements('1 2 3 4 : 0:1, 1:2, 2:3')
def test_wrong_format5(self): with self.assertRaises(ParseError): parse_swap_elements('1 2 3 4 : 0-1, 1-x, 2-3')
def test_mixed_list_types(self): result = parse_swap_elements('1 ABC 3 4 : 0-1') self.assertEqual(result, 'ABC 1 3 4')
def test_wrong_format(self): with self.assertRaises(ParseError): parse_swap_elements('Hello World!')
def test_multiple_same_nums(self): result = parse_swap_elements('1 2 1 4 : 0-1, 1-2, 2-3') self.assertEqual(result, '2 1 4 1')
def test_swap_int_input(self): with self.assertRaises(TypeError): parse_swap_elements(101)
def test_long_input(self): result = parse_swap_elements( '1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 : 5-8, 1-3, 9-1, 15-18, 0-1' ) self.assertEqual(result, '10 1 3 2 5 9 7 8 6 4 11 12 13 14 15 19 17 18 16 20')
def test_swap_order(self): result = parse_swap_elements('1 2 3 4 : 0-1, 1-2, 2-3') self.assertEqual(result, '2 3 4 1')
def test_swap_same(self): result = parse_swap_elements('1 2 3 4 : 0-0, 1-1, 2-2, 3-3') self.assertEqual(result, '1 2 3 4')
def test_0_and_1_swap(self): result = parse_swap_elements('1 2 3 4 : 0-1') self.assertEqual(result, '2 1 3 4')
def test_basic2(self): result = parse_swap_elements('1 2 3 4 5 6 7 8 9 10 : 0-1, 1-3') self.assertEqual(result, '2 4 3 1 5 6 7 8 9 10')