def test_parse_from_string_is_correct(self): with self.subTest('Coeff is 0'): s = '0' self.assertEqual(Term.parse_from_string(s), Term(coeff=0, variable=None, power=0)) with self.subTest('Coeff is 1'): s = 'x^2' self.assertEqual(Term.parse_from_string(s), Term(coeff=1, variable='x', power=2)) with self.subTest('Power is 0'): s = '2' self.assertEqual(Term.parse_from_string(s), Term(coeff=2, variable=None, power=0)) with self.subTest('Power is 1'): s = '2*x' self.assertEqual(Term.parse_from_string(s), Term(coeff=2, variable='x', power=1)) with self.subTest('Coeff is 1 and power is 1'): s = 'x' self.assertEqual(Term.parse_from_string(s), Term(coeff=1, variable='x', power=1)) with self.subTest( 'Coeff is greater than 1 and power is greater than 1'): s = '2*x^2' self.assertEqual(Term.parse_from_string(s), Term(coeff=2, variable='x', power=2))
def parse_from_string(cls, s): unparsed_terms = s.split('+') terms = [Term.parse_from_string(t) for t in unparsed_terms] return cls(terms)