Sha256: 38536bf36e67eaf3e3997e0c8c495051b721a93267a9de8b1bfc8246414b3e01

Contents?: true

Size: 1.21 KB

Versions: 3

Compression:

Stored size: 1.21 KB

Contents

require_relative '../test_helper'

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

  def part
    @part ||= Denko::AnalogIO::Potentiometer.new(board: board, pin:14)
  end

  def test_setup
    mock = MiniTest::Mock.new.expect(:call, nil, [14,8])
    board.stub(:analog_listen, mock) do
      part
    end

    assert part.smoothing
    assert_equal 8,   part.divider
    assert_equal [],  part.instance_variable_get(:@smoothing_set)
  end
  
  def test_smoothing_on
    7.times do
      part.update(10)
    end
    part.update(50)
    
    # 120/8 = 15
    assert_equal part.state, 15
  end
  
  def test_smoothing_off
    part.smoothing = false
    7.times do
      part.update(10)
    end
    part.update(50)
    
    # Give latest value.
    assert_equal part.state, 50
  end
  
  def test_on_change
    mock = Minitest::Mock.new.expect(:call, nil)
    
    # Turn off smoothing and set an initial value
    part.smoothing = false
    part.update(100)
    
    # Add the callback
    part.on_change { mock.call }
    
    # Send a few updates
    part.update(100)
    part.update(100)
    part.update(101)
        
    # Should have only been called once.
    mock.verify
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
denko-0.13.2 test/analog_io/potentiometer_test.rb
denko-0.13.1 test/analog_io/potentiometer_test.rb
denko-0.13.0 test/analog_io/potentiometer_test.rb