# -*- coding: utf-8 -*-
require 'spec_helper'
require_relative 'shared/block_examples'
# rubocop:disable EmptyLines, LineLength
describe RubyToBlock::Block, 'Smalrubot v3 blocks', to_blocks: true do
parts = <<-EOS
require "smalruby"
init_hardware
car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
car1.on(:start) do
smalrubot_v3.forward
smalrubot_v3.backward
smalrubot_v3.turn_left
smalrubot_v3.turn_right
smalrubot_v3.stop
smalrubot_v3.forward(sec: 0.5)
smalrubot_v3.backward(sec: 0.4)
smalrubot_v3.turn_left(sec: 0.3)
smalrubot_v3.turn_right(sec: 0.2)
smalrubot_v3.stop(sec: 0.1)
p(smalrubot_v3.left_touch_sensor.pressed?)
p(smalrubot_v3.left_touch_sensor.released?)
p(smalrubot_v3.right_touch_sensor.pressed?)
p(smalrubot_v3.right_touch_sensor.released?)
p(smalrubot_v3.light_sensor.value)
smalrubot_v3.red_led.turn_on
smalrubot_v3.green_led.turn_off
p(smalrubot_v3.left_motor_speed)
p(smalrubot_v3.right_motor_speed)
smalrubot_v3.left_motor_speed = 10
smalrubot_v3.right_motor_speed = 90
end
car1.smalrubot_v3.forward
car1.smalrubot_v3.backward
car1.smalrubot_v3.turn_left
car1.smalrubot_v3.turn_right
car1.smalrubot_v3.stop
car1.smalrubot_v3.forward(sec: 0.5)
car1.smalrubot_v3.backward(sec: 0.4)
car1.smalrubot_v3.turn_left(sec: 0.3)
car1.smalrubot_v3.turn_right(sec: 0.2)
car1.smalrubot_v3.stop(sec: 0.1)
p(car1.smalrubot_v3.left_touch_sensor.pressed?)
p(car1.smalrubot_v3.left_touch_sensor.released?)
p(car1.smalrubot_v3.right_touch_sensor.pressed?)
p(car1.smalrubot_v3.right_touch_sensor.released?)
p(car1.smalrubot_v3.light_sensor.value)
car1.smalrubot_v3.red_led.turn_on
car1.smalrubot_v3.green_led.turn_off
p(car1.smalrubot_v3.left_motor_speed)
p(car1.smalrubot_v3.right_motor_speed)
car1.smalrubot_v3.left_motor_speed = 10
car1.smalrubot_v3.right_motor_speed = 90
EOS
describe compact_source_code(parts) do
_parts = parts
let(:data) { _parts }
it '結果が正しいこと' do
should eq_block_xml(<<-XML)
car1
forward
backward
turn_left
turn_right
stop
forward
0.5
backward
0.4
turn_left
0.3
turn_right
0.2
stop
0.1
left
pressed
left
released
right
pressed
right
released
red
turn_on
green
turn_off
left
right
left
10
right
90
forward
backward
turn_left
turn_right
stop
forward
0.5
backward
0.4
turn_left
0.3
turn_right
0.2
stop
0.1
left
pressed
left
released
right
pressed
right
released
red
turn_on
green
turn_off
left
right
left
10
right
90
XML
end
end
end