require 'minitest/autorun' require 'sphero' require 'mocha/setup' class TestSphero < MiniTest::Unit::TestCase def setup Sphero.any_instance.stubs(:initialize_serialport) Sphero.any_instance.stubs(:initialize_socket) @sphero = Sphero.new 'port123' @seq = 0x00 end def test_start_returns_new_sphero assert_kind_of Sphero, Sphero.start('someport') end def test_start_sphero_executes_block Sphero.any_instance.expects(:ping) Sphero.any_instance.expects(:close) Sphero.start('someport') do ping end end def test_ping packet = mock 'packet' packet.stubs(:seq).returns(@seq) Sphero::Request::Ping.expects(:new).with(@seq).returns(packet) @sphero.expects(:queue_packet).returns(packet) @sphero.ping end def test_version packet = mock 'packet' packet.stubs(:seq).returns(@seq) Sphero::Request::GetVersioning.expects(:new).with(@seq).returns(packet) @sphero.expects(:queue_packet).returns(packet) @sphero.version end def test_bluetooth_info packet = mock 'packet' packet.stubs(:seq).returns(@seq) Sphero::Request::GetBluetoothInfo.expects(:new).with(@seq).returns(packet) @sphero.expects(:queue_packet).returns(packet) @sphero.bluetooth_info end def test_auto_reconnect= @time_s = 10 Sphero::Request::SetAutoReconnect.expects(:new).with(@seq, @time_s) @sphero.expects(:queue_packet) @sphero.auto_reconnect = @time_s end def test_auto_reconnect @time_s = 10 packet = mock 'packet' packet.stubs(:time).returns(@time_s) Sphero::Request::GetAutoReconnect.expects(:new).with(@seq) @sphero.expects(:queue_packet).returns(packet) assert_equal @sphero.auto_reconnect, @time_s end def test_disable_auto_reconnect Sphero::Request::SetAutoReconnect.expects(:new).with(@seq, 0, 0x00) @sphero.expects(:queue_packet) @sphero.disable_auto_reconnect end def test_power_state Sphero::Request::GetPowerState.expects(:new).with(@seq) @sphero.expects(:queue_packet) @sphero.power_state end def test_sphero_sleep wakeup = 1 macro = 2 Sphero::Request::Sleep.expects(:new).with(@seq, wakeup, macro) @sphero.expects(:queue_packet) @sphero.sphero_sleep wakeup, macro end def test_stabilization Sphero::Request::Stabilization.expects(:new).with(@seq, true) @sphero.expects(:queue_packet) @sphero.stabilization = true end def test_roll speed = 1 heading = 2 state = 1 Sphero::Request::Roll.expects(:new).with(@seq, speed, heading, state) @sphero.expects(:queue_packet) @sphero.roll speed, heading, true end def test_roll_upper_limit heading = 2 state = 1 Sphero::Request::Roll.expects(:new).with(@seq, 255, heading, state) @sphero.expects(:queue_packet) @sphero.roll 300, heading, true end def test_roll_lower_limit heading = 2 state = 1 Sphero::Request::Roll.expects(:new).with(@seq, 0, heading, state) @sphero.expects(:queue_packet) @sphero.roll( -10, heading, true ) end def test_roll_limit_conversion heading = 2 state = 1 Sphero::Request::Roll.expects(:new).with(@seq, 123, heading, state) @sphero.expects(:queue_packet) @sphero.roll 123.4, heading, true end def test_roll_upper_wrap speed = 3 state = 1 Sphero::Request::Roll.expects(:new).with(@seq, speed, 1, state) @sphero.expects(:queue_packet) @sphero.roll speed, 361, true end def test_roll_lower_wrap speed = 3 state = 1 Sphero::Request::Roll.expects(:new).with(@seq, speed, 359, state) @sphero.expects(:queue_packet) @sphero.roll( speed, -1, true ) end def test_roll_limit_wrap speed = 3 state = 1 Sphero::Request::Roll.expects(:new).with(@seq, speed, 123, state) @sphero.expects(:queue_packet) @sphero.roll speed, 123.4, true end def test_stop @sphero.expects(:roll).with(0, 0) @sphero.stop end def test_keepgoing Kernel.expects(:sleep).with(3) @sphero.keep_going 3 end def test_directions assert_equal 0, Sphero::FORWARD assert_equal 90, Sphero::RIGHT assert_equal 180, Sphero::BACKWARD assert_equal 270, Sphero::LEFT end end