github.com/masahide/goansible@v0.0.0-20160116054156-01eac649e9f2/lisp/builtin_test.go (about) 1 package lisp 2 3 import "testing" 4 5 func num(i int64) Value { 6 return Value{numberValue, i} 7 } 8 9 func TestCar(t *testing.T) { 10 a, b := Value{stringValue, "a"}, Value{stringValue, "b"} 11 cons := Value{consValue, &Cons{&a, &b}} 12 if response, err := builtin.Car(cons); response != a || err != nil { 13 t.Errorf("Car %v should be %v, was %v", cons, a, response) 14 } 15 } 16 17 func TestCdr(t *testing.T) { 18 a, b := Value{stringValue, "a"}, Value{stringValue, "b"} 19 cons := Value{consValue, &Cons{&a, &b}} 20 if response, err := builtin.Cdr(cons); response != b || err != nil { 21 t.Errorf("Cdr %v should be %v, was %v", cons, b, response) 22 } 23 } 24 25 func TestAdd(t *testing.T) { 26 cons := Cons{&Value{symbolValue, "+"}, nil} 27 if !cons.isBuiltin() { 28 t.Errorf("+ is not correcly setup") 29 } 30 31 if sum, err := builtin.Add(num(1), num(2), num(3)); sum != num(6) || err != nil { 32 t.Errorf("1 + 2 + 3 should == 6, is %v, error: %v", sum, err) 33 } 34 } 35 36 func TestSub(t *testing.T) { 37 if sum, err := builtin.Sub(num(5), num(2), num(1)); sum != num(2) || err != nil { 38 t.Errorf("5 - 2 - 1 should == 2, is %v, error: %v", sum, err) 39 } 40 } 41 42 func TestMul(t *testing.T) { 43 if sum, err := builtin.Mul(num(2), num(3), num(4)); sum != num(24) || err != nil { 44 t.Errorf("2 * 3 * 4 should == 24, is %v, error: %v", sum, err) 45 } 46 } 47 48 func TestGt(t *testing.T) { 49 if result, err := builtin.Gt(num(4), num(3), num(2)); result == False || err != nil { 50 t.Errorf("4 > 3 > 2 should == true, is %v, error: %v", result, err) 51 } 52 53 if result, err := builtin.Gt(num(4), num(4), num(2)); result == True || err != nil { 54 t.Errorf("4 > 4 > 2 should == true, is %v, error: %v", result, err) 55 } 56 } 57 58 func TestLt(t *testing.T) { 59 if result, err := builtin.Lt(num(2), num(3), num(4)); result == False || err != nil { 60 t.Errorf("2 < 3 < 4 should == true, is %v, error: %v", result, err) 61 } 62 } 63 64 func TestGte(t *testing.T) { 65 if result, err := builtin.Gte(num(4), num(4), num(2)); result == False || err != nil { 66 t.Errorf("4 >= 4 >= 2 should == true, is %v, error: %v", result, err) 67 } 68 } 69 70 func TestLte(t *testing.T) { 71 if result, err := builtin.Lte(num(2), num(2), num(4)); result == False || err != nil { 72 t.Errorf("2 <= 2 <= 4 should == true, is %v, error: %v", result, err) 73 } 74 }