Sha256: 29ff13279b72af1bf5fde93f947222266d18f003cda66423f54b7b9d69cc81d1

Contents?: true

Size: 1.86 KB

Versions: 3

Compression:

Stored size: 1.86 KB

Contents

require_relative '../test_helper'

class BoardPulseTest < Minitest::Test
  include TestPacker

  def connection
    @connection ||= ConnectionMock.new
  end

  def board
    @board ||= Denko::Board.new(connection)
  end

  def test_pulse_read
    # Default settings
    mock = MiniTest::Mock.new
    aux = pack(:uint16, [0, 200]) << pack(:uint8, 100)
    message = Denko::Message.encode command: 9, pin: 4, value: 0b00, aux_message: aux
    
    mock.expect :call, nil, [message]
    board.stub(:write, mock) do
      board.pulse_read(4)
    end
    mock.verify
    
    # Good options
    mock = MiniTest::Mock.new
    aux = pack(:uint16, [1000, 200]) << pack(:uint8, 160)
    message1 = Denko::Message.encode command: 9, pin: 4, value: 0b01, aux_message: aux
    message2 = Denko::Message.encode command: 9, pin: 4, value: 0b11, aux_message: aux
    
    mock.expect :call, nil, [message1]
    mock.expect :call, nil, [message2]
    board.stub(:write, mock) do
      board.pulse_read(4, reset: board.low, reset_time: 1000, timeout: 200, pulse_limit: 160)
      board.pulse_read(4, reset: board.high, reset_time: 1000, timeout: 200, pulse_limit: 160)
    end
    mock.verify
    
    # Bad options
    assert_raises(ArgumentError) { board.pulse_read(4, reset_time: 65536)  }
    assert_raises(ArgumentError) { board.pulse_read(4, reset_time: -1)     }
    assert_raises(ArgumentError) { board.pulse_read(4, reset_time: "bad")  }
    assert_raises(ArgumentError) { board.pulse_read(4, timeout: 65536)     }
    assert_raises(ArgumentError) { board.pulse_read(4, timeout: -1)        }
    assert_raises(ArgumentError) { board.pulse_read(4, timeout: "bad")     }
    assert_raises(ArgumentError) { board.pulse_read(4, pulse_limit: 256)   }
    assert_raises(ArgumentError) { board.pulse_read(4, pulse_limit: -1)    }    
    assert_raises(ArgumentError) { board.pulse_read(4, pulse_limit: "bad") }
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
denko-0.13.2 test/board/pulse_test.rb
denko-0.13.1 test/board/pulse_test.rb
denko-0.13.0 test/board/pulse_test.rb