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  }