Add tests for StatusZero and StatusBoard

This commit is contained in:
Ben Nuttall
2017-05-01 16:18:56 +01:00
committed by Dave Jones
parent 8c656e4c4d
commit 83cf4cada5

View File

@@ -778,3 +778,117 @@ def test_energenie():
pins[5].assert_states_and_times([(0.0, False), (0.1, True), (0.25, False)])
device1.close()
assert repr(device1) == '<gpiozero.Energenie object closed>'
def test_statuszero_bad_init():
with pytest.raises(ValueError):
StatusZero('')
with pytest.raises(ValueError):
StatusZero('1')
with pytest.raises(ValueError):
StatusZero(1)
with pytest.raises(ValueError):
StatusZero('a', 'b', 'c', 'd')
def test_statuszero_good_init():
with StatusZero() as sz:
assert sz
with StatusZero('a') as sz:
assert sz
with StatusZero('a', 'b') as sz:
assert sz
with StatusZero('a', 'b', 'c') as sz:
assert sz
def test_statuszero():
with StatusZero() as sz:
assert isinstance(sz.one, LEDBoard)
assert isinstance(sz.two, LEDBoard)
assert isinstance(sz.three, LEDBoard)
assert isinstance(sz.one.red, LED)
assert isinstance(sz.one.green, LED)
assert sz.value == ((False, False), (False, False), (False, False))
sz.on()
assert sz.value == ((True, True), (True, True), (True, True))
sz.one.green.off()
assert sz.one.value == (True, False)
def test_statuszero_kwargs():
with StatusZero(pwm=True, initial_value=True) as sz:
assert isinstance(sz.one, LEDBoard)
assert isinstance(sz.two, LEDBoard)
assert isinstance(sz.three, LEDBoard)
assert isinstance(sz.one.red, PWMLED)
assert isinstance(sz.one.green, PWMLED)
assert sz.value == ((1, 1), (1, 1), (1, 1))
sz.off()
assert sz.value == ((0, 0), (0, 0), (0, 0))
def test_statuszero_named():
with StatusZero('a') as sz:
assert isinstance(sz.a, LEDBoard)
assert isinstance(sz.a.red, LED)
with pytest.raises(AttributeError):
sz.one
def test_statusboard_bad_init():
with pytest.raises(ValueError):
StatusBoard('')
with pytest.raises(ValueError):
StatusBoard('1')
with pytest.raises(ValueError):
StatusBoard(1)
with pytest.raises(ValueError):
StatusBoard('a', 'b', 'c', 'd', 'e', 'f')
def test_statusboard_good_init():
with StatusBoard() as sb:
assert sb
with StatusBoard('a') as sb:
assert sb
with StatusBoard('a', 'b') as sb:
assert sb
with StatusBoard('a', 'b', 'c', 'd', 'e') as sb:
assert sb
def test_statusboard():
with StatusBoard() as sb:
assert isinstance(sb.one, CompositeOutputDevice)
assert isinstance(sb.two, CompositeOutputDevice)
assert isinstance(sb.five, CompositeOutputDevice)
assert isinstance(sb.one.button, Button)
assert isinstance(sb.one.lights, LEDBoard)
assert isinstance(sb.one.lights.red, LED)
assert isinstance(sb.one.lights.green, LED)
assert sb.value == ((False, (False, False)), (False, (False, False)),
(False, (False, False)), (False, (False, False)),
(False, (False, False)))
sb.on()
assert sb.value == ((False, (True, True)), (False, (True, True)),
(False, (True, True)), (False, (True, True)),
(False, (True, True)))
sb.one.lights.green.off()
assert sb.one.value == (False, (True, False))
def test_statusboard_kwargs():
with StatusBoard(pwm=True, initial_value=True) as sb:
assert isinstance(sb.one, CompositeOutputDevice)
assert isinstance(sb.two, CompositeOutputDevice)
assert isinstance(sb.five, CompositeOutputDevice)
assert isinstance(sb.one.button, Button)
assert isinstance(sb.one.lights, LEDBoard)
assert isinstance(sb.one.lights.red, PWMLED)
assert isinstance(sb.one.lights.green, PWMLED)
assert sb.value == ((False, (1, 1)), (False, (1, 1)), (False, (1, 1)),
(False, (1, 1)), (False, (1, 1)))
sb.off()
assert sb.value == ((False, (0, 0)), (False, (0, 0)), (False, (0, 0)),
(False, (0, 0)), (False, (0, 0)))
def test_statusboard_named():
with StatusBoard('a') as sb:
assert isinstance(sb.a, CompositeOutputDevice)
assert isinstance(sb.a.button, Button)
assert isinstance(sb.a.lights, LEDBoard)
assert isinstance(sb.a.lights.red, LED)
with pytest.raises(AttributeError):
sb.one