示例#1
0
def test_eval_eq_false():
    assert evaluate(parse_source('(= 2 3)')) == 0
示例#2
0
def test_eval_no_operator_detail():
    with raises(InvalidOperator) as excinfo:
        evaluate(parse_source('(2 3)'))

    assert str(excinfo.value) == 'invalid operator: 2'
示例#3
0
def test_eval_div():
    assert evaluate(parse_source('(/ 6 2)')) == 3
示例#4
0
def test_eval_op():
    assert callable(evaluate(parse_source('+')))
示例#5
0
def test_eval_numexp_inner():
    assert evaluate(parse_source('(+ 2 (* 3 4))')) == 14
示例#6
0
def test_parse_open_paren():
    with raises(UnexpectedEndOfInput):
        parse_source('(')
示例#7
0
def test_parse_plus_one():
    assert parse_source('(++ 2)') == ['++', 2]
示例#8
0
def test_eval_too_few_args():
    with raises(MissingArguments):
        evaluate(parse_source('(* 1)'))
示例#9
0
def test_eval_too_many_args():
    with raises(TooManyArguments):
        evaluate(parse_source('(* 1 2 3)'))
示例#10
0
def test_eval_gt_false_2():
    assert evaluate(parse_source('(> 3 4)')) == 0
示例#11
0
def test_plus_number1():
    with raises(UnknownIdentifier):
        evaluate(parse_source('+1'))
示例#12
0
def test_eval_gt_true():
    assert evaluate(parse_source('(> 4 3)')) == 1
示例#13
0
def test_eval_lt_false_2():
    assert evaluate(parse_source('(< 3 2)')) == 0
示例#14
0
def test_eval_lt_true():
    assert evaluate(parse_source('(< 2 3)')) == 1
示例#15
0
def test_parse_empty():
    with raises(UnexpectedEndOfInput):
        parse_source('')
示例#16
0
def test_parse_number():
    assert parse_source('3') == 3
示例#17
0
def test_parse_right_paren():
    with raises(UnexpectedRightParen):
        parse_source(')')
示例#18
0
def test_parse_negative_number():
    assert parse_source('-3') == -3
示例#19
0
def test_parse_right_paren_detail():
    with raises(UnexpectedRightParen) as excinfo:
        parse_source(')')

    assert str(excinfo.value) == 'unexpected )'
示例#20
0
def test_parse_symbol():
    assert parse_source('+') == '+'
示例#21
0
def test_eval_int():
    assert evaluate(parse_source('3')) == 3
示例#22
0
def test_parse_plus_number_as_symbol():
    assert parse_source('+1') == '+1'
示例#23
0
def test_eval_numexp():
    assert evaluate(parse_source('(+ 2 3)')) == 5
示例#24
0
def test_parse_numexp():
    assert parse_source('(+ 2 3)') == ['+', 2, 3]
示例#25
0
def test_eval_no_operator2():
    with raises(InvalidOperator):
        evaluate(parse_source('(2 3)'))
示例#26
0
def test_parse_numexp_inner():
    assert parse_source('(+ 2 (* 3 4))') == ['+', 2, ['*', 3, 4]]
示例#27
0
def test_eval_sub():
    assert evaluate(parse_source('(- 2 3)')) == -1
示例#28
0
def test_parse_empty_paren():
    assert parse_source('()') == []
示例#29
0
def test_eval_div_returns_int():
    assert evaluate(parse_source('(/ 6 4)')) == 1
示例#30
0
def test_eval_eq_true():
    assert evaluate(parse_source('(= 2 2)')) == 1