A fork of Crisp for HARP
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 

45 lignes
1.2 KiB

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