48 lines
2.5 KiB
Python
48 lines
2.5 KiB
Python
|
from solution import calc
|
||
|
import codewars_test as test
|
||
|
import random
|
||
|
|
||
|
|
||
|
@test.describe("Fixed tests")
|
||
|
def _():
|
||
|
@test.it("Tests")
|
||
|
def __():
|
||
|
cases = (
|
||
|
("1 + 1", 2),
|
||
|
("8/16", 0.5),
|
||
|
("3 -(-1)", 4),
|
||
|
("2 + -2", 0),
|
||
|
("10- 2- -5", 13),
|
||
|
("(((10)))", 10),
|
||
|
("3 * 5", 15),
|
||
|
("-7 * -(6 / 3)", 14)
|
||
|
)
|
||
|
|
||
|
for x, y in cases:
|
||
|
test.assert_equals(calc(x), y)
|
||
|
|
||
|
@test.describe("Random tests")
|
||
|
def _():
|
||
|
choice = random.choice
|
||
|
randint = random.randint
|
||
|
|
||
|
@test.it("Tests")
|
||
|
def __():
|
||
|
for i in range(100):
|
||
|
try:
|
||
|
s = "{}{} {} {}{} {} {}{} {} {}{} {} {}{} {} {}{} {} {}{} {} {}{}".format(choice(["-", ""]), randint(1, 100), choice(["+", "-", "*", "/"]), choice(["-", ""]), randint(1, 100), choice(["+", "-", "*", "/"]), choice(["-", ""]), randint(1, 100), choice(["+", "-", "*", "/"]), choice(["-", ""]), randint(1, 100), choice(["+", "-", "*", "/"]), choice(["-", ""]), randint(1, 100), choice(["+", "-", "*", "/"]), choice(["-", ""]), randint(1, 100), choice(["+", "-", "*", "/"]), choice(["-", ""]), randint(1, 100), choice(["+", "-", "*", "/"]), choice(["-", ""]), randint(1, 100))
|
||
|
test.assert_approx_equals(calc(s), eval(s), 1e-6, s)
|
||
|
except ZeroDivisionError:
|
||
|
test.pass_()
|
||
|
|
||
|
for i in range(100):
|
||
|
try:
|
||
|
s = "{}({}{}) {} ({}{} {} {}{} {} {}({})) {} ({}{} {} {}((({}({}{} {} {}{})))) {} {}{})".format(choice(["-", ""]), choice(["-", ""]), randint(1, 100), choice(["+", "-", "*", "/"]), choice(["-", ""]), randint(1, 100), choice(["+", "-", "*", "/"]), choice(["-", ""]), randint(1, 100), choice(["+", "-", "*", "/"]), choice(["-", ""]), randint(1, 100), choice(["+", "-", "*", "/"]), choice(["-", ""]), randint(1, 100), choice(["+", "-", "*", "/"]), choice(["-", ""]), choice(["-", ""]), choice(["-", ""]), randint(1, 100), choice(["+", "-", "*", "/"]), choice(["-", ""]), randint(1, 100), choice(["+", "-", "*", "/"]), choice(["-", ""]), randint(1, 100))
|
||
|
test.assert_approx_equals(calc(s), eval(s), 1e-6, s)
|
||
|
except ZeroDivisionError:
|
||
|
test.pass_()
|
||
|
|
||
|
for i in range(100):
|
||
|
s = "{}{}- {}{}- {}{}- {}{}".format(choice(["-", ""]), randint(1, 100), choice(["-", ""]), randint(1, 100), choice(["-", ""]), randint(1, 100), choice(["-", ""]), randint(1, 100))
|
||
|
test.assert_approx_equals(calc(s), eval(s), 1e-6, s)
|