def pol(t): return p.compute(to_postfix(parse(t)))
assert parse('2') == ['2'], 'Jedno číslo' assert parse('50 * 2') == ['50', '*', '2'], 'Násobení' assert parse('(x+2)(3x+2) + 20') == ['(', 'x', '+', '2', ')', '*', '(', '3', '*', 'x', '+', '2', ')', '+', '20'], '(...)(...)' assert parse('2 x^2') == ['2', '*', 'x', '^', '2'], 'ax^n' assert parse('2*x+3 - 5^2') == ['2', '*', 'x', '+', '3', '-', '5', '^', '2'], 'Pokročilejší' assert parse('2x * (5 + 10 * 2x) / 2') == ['2', '*', 'x', '*', '(', '5', '+', '10', '*', '2', '*', 'x', ')', '/', '2'], 'I dělení' assert parse('-2 * (-5 * -5) + 2') == ['-2', '*', '(', '-5', '*', '-5', ')', '+', '2'], '0-n neboli -n' print('→ OK') # postfix print('POSTFIX') assert to_postfix(['0']) == ['0'], 'Jedno číslo' assert to_postfix(['5', '+', '1']) == ['5', '1', '+'], 'Sčítání' assert to_postfix(['2', '*', '6', '+', '(', '5', '-', '2', ')']) == ['2', '6', '*', '5', '2', '-', '+'], 'Násobení a závorky' assert to_postfix(['1', '+', '20', '-', '(', '2', '-', '5', '+', '5', ')']) == ['1', '20', '+', '2', '5', '-', '5', '+', '-'], 'Ach! Jak já ty závorky nenávidím!' assert to_postfix(['15', '-', '(', '2', '+', '9', '*', '2', ')', '*', '11', '-', '(', '15', '+', '3', ')', '/', '3']) == ['15', '2', '9', '2', '*', '+', '11', '*', '-', '15', '3', '+', '3', '/', '-'], 'Trochu složitější' assert to_postfix(['3', '+', '4', '*', '2', '/', '(', '1', '-', '5', ')', '^', '2', '^', '3']) == ['3', '4', '2', '*', '1', '5', '-', '2', '^', '3', '^', '/', '+'], 'Ty mocniny!' print('→ OK') # polynomials print('POLYNOMIALS') assert pol('1^3') == '1', 'Bez proměnné 1' assert pol('2*x^2 + 5x - 12') == '2x^2 + 5x - 12', 'Bez proměnné 2' assert pol('( 5 * 10 ) / 2 + ( 11 * 2 / 10 ) - 2') == '25.2', 'Bez proměnné 3'