Пример #1
0
def test_factorial():
    # 0 => 1
    #   => n * (n - 1)!
    source = '''
        factorial = (n) ->
            if n then
                (n * factorial((n - 1)))
            else
                1
        factorial(0)
        factorial(5)
    '''
    assert Mini().eval(source)[1:] == [1, 120]
Пример #2
0
class MiniTestCase(unittest.TestCase):
    """Basic tests"""

    def setUp(self):
        self.m = Mini()

    def test_numbers(self):
        self.assertTrue(self.m.eval('') == [])
        self.assertTrue(self.m.eval('42') == [42])
        self.assertTrue(self.m.eval('42 12') == [42, 12])

    def test_operators(self):
        self.assertTrue(self.m.eval('(42 + 2)') == [44])
        self.assertTrue(self.m.eval('(42 + ( 2 * 4))') == [50])

    def test_functions(self):
        self.assertTrue(self.m.eval('sum(10 20)') == [30])
        self.assertTrue(self.m.eval('sum()') == [0])

    def test_if(self):
        self.assertTrue(self.m.eval('if 1 then 42 else 12') == [42])
        self.assertTrue(self.m.eval('if 0 then 42 else 12') == [12])
Пример #3
0
def test_numbers():
    assert Mini().eval('') == []
    assert Mini().eval('42') == [42]
    assert Mini().eval('42 12') == [42, 12]
Пример #4
0
 def func(*args):
     env = dict(self.env.items() + zip(params, args))
     return Mini(env).eval(expr)
Пример #5
0
def test_lambdas():
    assert Mini().eval('addten = (b) -> (b + 10) \n addten(2)')[-1] == 12
    source = 'x = 10 \n addx = (a) -> (a + x) \n addx(2)'
    assert Mini().eval(source)[-1] == 12
    assert Mini().eval('add = (a b) -> (a + b) \n add(42 12)')[-1] == 54
Пример #6
0
def test_if():
    assert Mini().eval('if 1 then 42 else 12') == [42]
    assert Mini().eval('if 0 then 42 else 12') == [12]
Пример #7
0
def test_functions():
    assert Mini().eval('sum(10 20)') == [30]
    assert Mini().eval('sum(10 20 30)') == [60]
Пример #8
0
def test_operators():
    assert Mini().eval('(42 + 2)') == [44]
    assert Mini().eval('(42 + (2 * 4))') == [50]
Пример #9
0
def test_variables():
    assert Mini({'a': 42}).eval('a') == [42]
    assert Mini().eval('a = 2 \n a') == [2, 2]
Пример #10
0
 def setUp(self):
     self.m = Mini()
Пример #11
0
class MiniCompileTestCase(unittest.TestCase):
    """Compilation test cases"""

    def setUp(self):
        self.m = Mini()

    def test_addten(self):
        self.m.compile('addten = (b) -> (b + 10)')
        self.assertTrue(self.m.eval('addten(2)') == [12])

    def test_addx(self):
        source = 'x = 10 \n addx = (a) -> (a + x)'
        self.m.compile(source)
        self.assertTrue(self.m.env['x'] == 10)
        self.assertTrue(self.m.eval('addx(2)') == [12])

    def test_add(self):
        self.m.compile('add = (a b) -> (a + b)')
        self.assertTrue(self.m.eval('add(42 12)')[-1] == 54)

    def test_factorial(self):
        # 0 => 1
        # => n * (n - 1)!
        source = '''
factorial = (n) ->
if n then
(n * factorial((n - 1)))
else
1
'''
        self.m.compile(source)
        self.assertTrue(self.m.eval('factorial(0)') == [1])
        self.assertTrue(self.m.eval('factorial(5)') == [120])
Пример #12
0
def test_operators():
	assert Mini.eval('(42 + 3)') == [45]
Пример #13
0
from mini import Mini

def test_numbers(): assert Mini().eval('') == [] assert Mini().eval('42') == [42] assert Mini().eval('42 12') == [42, 12]

def test_variables(): assert Mini({'a': 42}).eval('a') == [42] assert Mini().eval('a = 2 \n a') == [2, 2]

def test_operators(): assert Mini().eval('(42 + 2)') == [44] assert Mini().eval('(42 + (2 * 4))') == [50]

def test_functions(): assert Mini().eval('sum(10 20)') == [30] assert Mini().eval('sum(10 20 30)') == [60]

def test_if(): assert Mini().eval('if 1 then 42 else 12') == [42] assert Mini().eval('if 0 then 42 else 12') == [12]

def test_lambdas(): assert Mini().eval('addten = (b) -> (b + 10) \n addten(2)')[-1] == 12    source = 'x = 10 \n addx = (a) -> (a + x) \n addx(2)' assert Mini().eval(source)[-1] == 12 assert Mini().eval('add = (a b) -> (a + b) \n add(42 12)')[-1] == 54

def test_factorial(): # 0 => 1 #   => n * (n - 1)!    source = '''        factorial = (n) ->            if n then                (n * factorial((n - 1)))            else                1        factorial(0)        factorial(5) ''' assert Mini().eval(source)[1:] == [1, 120]

# github.com/halst/mini