|
|
- require "../helper"
-
- describe "Crisp::Interpreter" do
- describe "#initialize" do
- it "takes arguments as string value" do
- i = Crisp::Interpreter.new %w(foo bar baz)
- result = i.eval_string("*ARGV*")
- result.should be_a(Crisp::Expr)
- unwrapped = result.unwrap
- unwrapped.should be_a(Crisp::List)
- if unwrapped.is_a? Crisp::List
- unwrapped.size.should eq(3)
- a0 = unwrapped[0].unwrap
- a1 = unwrapped[1].unwrap
- a2 = unwrapped[2].unwrap
- a0.should be_a(String)
- a1.should be_a(String)
- a2.should be_a(String)
- a0.should eq("foo")
- a1.should eq("bar")
- a2.should eq("baz")
- end
- end
- end
-
- describe "#eval_string" do
- it "evaluates string of Crisp expression" do
- i = Crisp::Interpreter.new
- result = i.eval_string "(+ 1 2)"
- result.should be_a(Crisp::Expr)
- unwrapped = result.unwrap
- unwrapped.should be_a(Int32)
- unwrapped.should eq(3)
- end
- end
-
- describe "#run" do
- it "raises eval error with file which doesn't exist" do
- i = Crisp::Interpreter.new
- expect_raises Crisp::EvalException do
- i.run "/non/existent/file"
- end
- end
- end
- end
|