Skip to main content

module demo::lang::Lisra::Test

rascal-0.34.0

Usage

import demo::lang::Lisra::Test;

Dependencies

import demo::lang::Lisra::Runtime;
import demo::lang::Lisra::Eval;

Tests

test eval01

test bool eval01() = eval("42").val == Integer(42);

test eval02

test bool eval02() = eval("x").val == Atom("x");

test eval03

test bool eval03() = eval("(quote 1)").val == Integer(1);

test eval04

test bool eval04() = eval("(quote 1 2)").val == List([Integer(1), Integer(2)]);

test eval05

test bool eval05() = eval("(+ 1 2)").val == Integer(3);

test eval06

test bool eval06() = eval("(- 5 3)").val == Integer(2);

test eval07

test bool eval07() = eval("(* 5 3)").val == Integer(15);

test eval08

test bool eval08() = eval("(\< 3 4)").val != FALSE;

test eval09

test bool eval09() = eval("(\< 3 2)").val == FALSE;

test eval10

test bool eval10() = eval("(\> 3 2)").val != FALSE;

test eval11

test bool eval11() = eval("(\>3 4)").val == FALSE;

test eval12

test bool eval12() = eval("(equal? 3 3)").val != FALSE;

test eval13

test bool eval13() = eval("(equal? 3 2)").val == FALSE;

test eval14

test bool eval14() = eval("(null? ())").val != FALSE;

test eval15

test bool eval15() = eval("(null? (quote 1 2))").val == FALSE;

test eval16

test bool eval16() = eval("(begin (define swap (lambda (a b) (list b a))) (swap 1 2))").val == 
List([Integer(2), Integer(1)]);

test eval17

test bool eval17() = eval("(begin (define * (lambda (a b) (+ a b))) (* 1 2))"). val == Integer(3);

test eval18

test bool eval18() = eval("(begin (set! x 1) x)").val == Integer(1);

test eval19

test bool eval19() = eval("(if (\> 5 2) 10 20)").val == Integer(10);

test eval20

test bool eval20() = eval("(if (\> 2 5) 10 20)").val == Integer(20);

test eval21

test bool eval21() = eval("(begin (define fac (lambda (n) (if (\> n 1) (* n (fac (- n 1))) 1))) (fac 3))").val == Integer(6);

test eval22

test bool eval22() = eval("(begin (define length (lambda (x) (if(null? x) 0 (+ 1 (length (cdr x)))))) (length (quote (1 2 3))))").val == Integer(3);

test eval23

test bool eval23() = eval("(begin (define rev (lambda (x) (if (null? x) () (append (rev (cdr x)) (car x))))) (rev (quote 1 2 3)))").val == List([Integer(3), Integer(2), Integer(1)]);

test eval24

test bool eval24() = eval("(begin (define F (lambda (x) y)) (set! y 10) (F 1))").val == Integer(10);