def test_expand_then_factor(self):
        chain = expand_tuple_list((['m_{4}', 'm_{11}'], ['c_{3}', 'c_{7}'], ['t_{5}', 't_{6}', 't_{7}', 't_{8}']))

        result = factorize_cycles(chain, self.BR_C)
        result = [tuple([set(tp_cmp) for tp_cmp in x]) for x in result]
        self.assertEqual(result, [({'m_{4}', 'm_{11}'}, {'c_{3}', 'c_{7}'}, {'t_{5}', 't_{6}', 't_{7}', 't_{8}'})])
    def test_non_cycle2(self):
        chain = ['t_{3}', 't_{2}', 't_{5}', 't_{4}']

        result = factorize_cycles(chain, self.BR_C)
        self.assertEqual(result, [['t_{3}'], ['t_{2}'], ['t_{5}'], ['t_{4}']])
    def test_non_cycle1(self):
        chain = ['v_{10}', 'v_{3}']

        result = factorize_cycles(chain, self.BR_C)
        self.assertEqual(result, [['v_{10}'], ['v_{3}']])
    def test_tuple_cycle1(self):
        chain = [('m_{4}', 'c_{3}'), ('m_{11}', 'c_{3}'), ('m_{4}', 'c_{7}'), ('m_{11}', 'c_{7}')]

        result = factorize_cycles(chain, self.BR_C)
        self.assertEqual(result, [(['m_{4}', 'm_{11}'], ['c_{3}', 'c_{7}'])])
    def test_double_cycle2(self):
        chain = ['c_{7}', 'm_{4}', 'c_{3}', 'm_{11}']

        result = factorize_cycles(chain, self.BR_C)
        self.assertEqual(result, [['c_{7}', 'c_{3}'], ['m_{4}', 'm_{11}']])
    def test_simple_cycle1(self):
        chain = ['m_{4}', 'm_{11}']

        result = factorize_cycles(chain, self.BR_C)
        self.assertEqual(result, [['m_{4}', 'm_{11}']])