75 lines
2.1 KiB
Ruby
75 lines
2.1 KiB
Ruby
module CeleryScript
|
|
# Some helpers to DRY up Flat IR unit tests.
|
|
class FlatIrHelpers
|
|
def self.typical_sequence
|
|
{
|
|
kind: "sequence",
|
|
name: "move_abs(1,2,3), move_rel(4,5,6), write_pin(13, off, digital)",
|
|
color: "gray",
|
|
args: {
|
|
locals: { kind: "scope_declaration", args: {}, body: [] },
|
|
version: 6,
|
|
label: "move_abs(1,2,3), move_rel(4,5,6), write_pin(13, off, digital)"
|
|
},
|
|
body: [
|
|
{
|
|
kind: "move_absolute",
|
|
args: {
|
|
location: { kind: "coordinate", args: { x: 0, y: 0, z: 0 } },
|
|
offset: { kind: "coordinate", args: { x: 0, y: 0, z: 0 } },
|
|
speed: 100
|
|
}
|
|
},
|
|
{
|
|
kind: "move_relative",
|
|
args: { x: 0, y: 0, z: 0, speed: 100 }
|
|
},
|
|
{
|
|
kind: "write_pin",
|
|
args: { pin_number: 0, pin_value: 0, pin_mode: 0 }
|
|
}
|
|
]
|
|
}
|
|
end
|
|
|
|
def self.typical_sequence2
|
|
{
|
|
kind: 'sequence',
|
|
args: { locals: { kind: 'scope_declaration', args: {}, body: [] } },
|
|
body: [
|
|
{ kind: 'take_photo', args: {} },
|
|
{
|
|
kind: 'send_message',
|
|
args: { message: 'test case 1', message_type: 'success' },
|
|
body: [
|
|
{ kind: 'channel', args: { channel_name: 'toast' } },
|
|
],
|
|
},
|
|
{
|
|
kind: '_if',
|
|
args: {
|
|
lhs: 'x',
|
|
op: 'is',
|
|
rhs: 0,
|
|
_then: { kind: 'execute', args: { sequence_id: 10 } },
|
|
_else: { kind: 'nothing', args: {} }
|
|
}
|
|
},
|
|
]
|
|
}
|
|
end
|
|
|
|
def self.flattened_heap
|
|
slicer = CeleryScript::Slicer.new
|
|
slicer.run!(typical_sequence2)
|
|
slicer.heap_values
|
|
end
|
|
|
|
def self.fake_first_pass
|
|
sequence = FactoryBot.create(:sequence)
|
|
sequence.args = typical_sequence[:args]
|
|
sequence.body = typical_sequence[:body]
|
|
FirstPass.run!(sequence: sequence)
|
|
end
|
|
end
|
|
end |