74 lines
2.2 KiB
Ruby
74 lines
2.2 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe CeleryScript::Checker do
|
|
let(:device) { FactoryBot.create(:device) }
|
|
let(:tool) { FactoryBot.create(:tool, device: device) }
|
|
let(:point) { FactoryBot.create(:generic_pointer, device: device) }
|
|
let(:corpus) { Sequence::Corpus }
|
|
|
|
it "disallows the use of `identifier` nodes" do
|
|
params = { kind: "internal_farm_event",
|
|
args: {},
|
|
body: [ {kind: "parameter_application",
|
|
args: {
|
|
label: "foo",
|
|
data_value: {
|
|
kind: "identifier",
|
|
args: {
|
|
label: "makes no sense",
|
|
}
|
|
}
|
|
} } ]
|
|
}
|
|
tree = CeleryScript::AstNode.new(**params)
|
|
checker = CeleryScript::Checker.new(tree, corpus, device)
|
|
expect { checker.run! }.to raise_error(CeleryScript::TypeCheckError)
|
|
end
|
|
|
|
it "runs through a syntactically valid program" do
|
|
body = [
|
|
{
|
|
kind: "parameter_application",
|
|
args: {
|
|
label: "tool",
|
|
data_value: {
|
|
kind: "tool",
|
|
args: {
|
|
tool_id: tool.id
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
kind: "parameter_application",
|
|
args: {
|
|
label: "coordinate",
|
|
data_value: {
|
|
kind: "coordinate",
|
|
args: {
|
|
x: 0,
|
|
y: 0,
|
|
z: 0
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
kind: "parameter_application",
|
|
args: {
|
|
label: "point",
|
|
data_value: {
|
|
kind: "point",
|
|
args: { pointer_type: "GenericPointer", pointer_id: point.id }
|
|
}
|
|
}
|
|
}
|
|
]
|
|
params = { kind: "internal_farm_event", body: body, args: {} }
|
|
tree = CeleryScript::AstNode.new(**params)
|
|
checker = CeleryScript::Checker.new(tree, corpus, device)
|
|
expect { checker.run! }.not_to(raise_error)
|
|
end
|
|
end
|
|
|