def test_valid_range(self):
        input, expected, num, si, sj = [1, 2, 3, 4, 5, 6, 7], [1,5,6,4,2,3,7], 2, 1, 4
        result = swap_num_elements(input, num, si, sj)
        self.assertEqual(expected, result)

        input, expected, num, si, sj = [1, 2, 3, 4, 5, 6, 7], [4, 5, 6, 1, 2, 3, 7], 3, 0 , 3
        result = swap_num_elements(input, num, si, sj)
        self.assertEqual(expected, result)
 def test_empty_array(self):
     input, expected, num, si, sj = [], [], 1, 0, 2
     result = swap_num_elements(input, num, si, sj)
     self.assertEqual(expected, result)
 def test_invaid_mix_range(self):
     input, expected, num, si, sj = [1, 2, 3, 4], [1, 2, 3, 4], 2, 0, 1
     result = swap_num_elements(input, num, si, sj)
     self.assertEqual(expected, result)
 def test_out_of_range(self):
     input, expected, num, si, sj = [1, 2, 3, 4], [1, 2, 3, 4], 3, 0, 3
     result = swap_num_elements(input, num, si, sj)
     self.assertEqual(expected, result)
 def test_border_swap(self):
     input, expected, num, si, sj = [1, 2, 3, 4],  [3, 4, 1,2], 2, 0, 2
     result = swap_num_elements(input, num, si, sj)
     self.assertEqual(expected, result)
 def test_zero_swap(self):
     input, expected, num, si, sj = [1, 2, 3],  [1, 2, 3], 0, 0, 1
     result = swap_num_elements(input, num, si, sj)
     self.assertEqual(expected, result)