def test_parse_term_with_valid_strings(self): with self.subTest('2'): term = Term.parse_term('2') expected_term = Term.constant(2) self.assertEqual(term, expected_term) with self.subTest('x'): term = Term.parse_term('x') expected_term = Term(coeff=1, variable='x', power=1) self.assertEqual(term, expected_term) with self.subTest('x^2'): term = Term.parse_term('x^2') expected_term = Term(coeff=1, variable='x', power=2) self.assertEqual(term, expected_term) with self.subTest('2*x'): term = Term.parse_term('2*x') expected_term = Term(coeff=2, variable='x', power=1) self.assertEqual(term, expected_term) with self.subTest('2*x^2'): term = Term.parse_term('2*x^2') expected_term = Term(coeff=2, variable='x', power=2) self.assertEqual(term, expected_term)
def parse_from_string(cls, s): unparsed_terms = s.split('+') terms = [Term.parse_term(t) for t in unparsed_terms] return cls(terms)
def test_parse_term_with_invalid_string(self): with self.assertRaises(Exception): Term.parse_term('2*2*x')