diff --git a/tests/test_boards.py b/tests/test_boards.py index 1ba4879..e415757 100644 --- a/tests/test_boards.py +++ b/tests/test_boards.py @@ -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) == '' + +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