Sha256: 2525e0092b6455beba9bd21e64f2b723a2b4c182537c2825975d2f16545215e2

Contents?: true

Size: 1.84 KB

Versions: 7

Compression:

Stored size: 1.84 KB

Contents

require_relative '../test_helper'

class MultiPinComponent
  include Denko::Behaviors::MultiPin
  
  def initialize_pins(options={})
    require_pin :one
    proxy_pin   :two,   Denko::DigitalIO::Output
    proxy_pin   :maybe, Denko::DigitalIO::Input, optional: true
  end
end

class MultiPinTest < Minitest::Test
  def board
    @board ||= BoardMock.new
  end

  def part
    @part ||= MultiPinComponent.new board: board,
                                    pins: { one: 9, two: 10, maybe: 11 }
  end

  def test_validate_pins
    assert_raises(ArgumentError) do
      MultiPinComponent.new board: board, pins: { one: 9, maybe: 11 }
    end
    assert_raises(ArgumentError) do
      MultiPinComponent.new board: board, pins: { two: 10, maybe: 11 }
    end
    MultiPinComponent.new board: board, pins: { one: 9, two:10 }
  end
  
  def test_has_nil_pin
    assert_nil part.pin
  end

  def test_build_proxies
    assert_equal Denko::DigitalIO::Output, part.proxies[:two].class
    assert_equal Denko::DigitalIO::Input, part.proxies[:maybe].class
  end
  
  def attr_reader_exists_for_optional_pins
    part = MultiPinComponent.new board: board, pins: { one: 9, two:10 }
    assert_nil part.maybe
  end

  def test_proxy_reader_methods
    assert_equal part.proxies[:two], part.two
    assert_equal part.proxies[:maybe], part.maybe
  end

  def test_pins_mapped_correctly
    assert_equal 10, part.two.pin
    assert_equal 11, part.maybe.pin
  end

  def test_proxy_states
    part.two.high
    assert_equal({two: board.high, maybe: nil}, part.proxy_states)

    part2 = MultiPinComponent.new board: board, pins: { one: 'A1', two:12 }
    part2.two.low
    assert_equal({two: board.low}, part2.proxy_states)
  end

  def test_required_but_not_proxied_pin_conversion
    part = MultiPinComponent.new board: board, pins: { one: 'A0', two:10 }
    assert_equal 14, part.pins[:one]
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
denko-0.13.6 test/behaviors/multi_pin_test.rb
denko-0.13.5 test/behaviors/multi_pin_test.rb
denko-0.13.4 test/behaviors/multi_pin_test.rb
denko-0.13.3 test/behaviors/multi_pin_test.rb
denko-0.13.2 test/behaviors/multi_pin_test.rb
denko-0.13.1 test/behaviors/multi_pin_test.rb
denko-0.13.0 test/behaviors/multi_pin_test.rb