def test_row_change(self):
        ar0 = [['a*a + b*g', 'a*g + x*g'], ['b*a + x*b', 'g*b + x*x']]
        ar1_a = [['a*a + b*g', 'a*g + x*g'], ['a*a + b*g', 'a*g + x*g']]
        ar1_b = [['b*a + x*b', 'g*b + x*x'], ['b*a + x*b', 'g*b + x*x']]
        ar1_c = [['b*a + x*b', 'g*b + x*x'], ['a*a + b*g', 'a*g + x*g']]

        array0 = SymArray(ar0)
        new_array_a = array0.switch_rows([0, 0])
        new_array_b = array0.switch_rows([1, 1])
        new_array_c = array0.switch_rows([1, 0])

        self.assertEqual(new_array_a, SymArray(ar1_a))
        self.assertEqual(new_array_b, SymArray(ar1_b))
        self.assertEqual(new_array_c, SymArray(ar1_c))
    def test_rowcols_change(self):
        ar0 = [['a', 'b', 'c'], ['a', 'd', 'g'], ['b', 'd', 'f']]
        ar1_a = [['a', 'a', 'a'], ['a', 'a', 'a'], ['a', 'a', 'a']]
        ar1_b = [['d', 'b', 'f'], ['d', 'a', 'g'], ['b', 'a', 'c']]

        array0 = SymArray(ar0)  # initial array for operations

        # Checking with ar1_a
        new_array_a = array0.switch_cols([0, 0, 0])
        new_array_a = new_array_a.switch_rows([1, 1, 1])
        self.assertEqual(new_array_a, SymArray(ar1_a))
        # Checking with ar1_b
        new_array_b = array0.switch_rows([2, 1, 0])
        new_array_b = new_array_b.switch_cols([1, 0, 2])
        self.assertEqual(new_array_b, SymArray(ar1_b))