Sha256: 3669ad91710f4dd70fd54305cc15923c31a51448b4df3c3e75c54b67a59191fb

Contents?: true

Size: 1.46 KB

Versions: 3

Compression:

Stored size: 1.46 KB

Contents

require_relative '../test_helper'

class ServoMotorTest < MiniTest::Test
  def board
    @board ||= BoardMock.new
  end

  def part
    @part ||= Denko::Motor::Servo.new(board: board, pin:1, min: 0, max: 360)
  end

  def test_toggle_on_initialize
    mock = MiniTest::Mock.new.expect(:call, nil, [1, :on], min: 544, max: 2400)
    board.stub(:servo_toggle, mock) do
      Denko::Motor::Servo.new(board: board, pin:1)
    end
    mock.verify
  end

  def test_attach
    part
    mock = MiniTest::Mock.new.expect(:call, nil, [1, :on], min: 0, max: 360)
    board.stub(:servo_toggle, mock) { part.attach }
    mock.verify
  end

  def test_detach
    part
    mock = MiniTest::Mock.new.expect(:call, nil, [1, :off])
    board.stub(:servo_toggle, mock) { part.detach }
    mock.verify
  end

  def test_position_modulo_180
    part.position = 190
    assert_equal 10, part.position
    part.position = 180
    assert_equal 180, part.position
    part.position = 0
    assert_equal 0, part.position
    part.position = -1
    assert_equal 179, part.position
  end

  def test_position_writes_mapped_microseconds_to_board
    part
    mock = MiniTest::Mock.new.expect(:call, nil, [1, 20])
    board.stub(:servo_write, mock) do
      part.position = 10
    end
    mock.verify
  end

  def test_speed_writes_mapped_microseconds_to_board
    part
    mock = MiniTest::Mock.new.expect(:call, nil, [1, 180])
    board.stub(:servo_write, mock) do
      part.speed = 0
    end
    mock.verify
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
denko-0.13.2 test/motor/servo_test.rb
denko-0.13.1 test/motor/servo_test.rb
denko-0.13.0 test/motor/servo_test.rb