diff --git a/tests/revpi4/config_connect4.rsc b/tests/revpi4/config_connect4.rsc new file mode 100644 index 0000000..25fd350 --- /dev/null +++ b/tests/revpi4/config_connect4.rsc @@ -0,0 +1 @@ +{"App":{"name": "PiCtory", "version": "2.1.0","saveTS": "20230627075202","language": "en","layout": {"north":{"size":70,"initClosed":false,"initHidden":false},"south":{"size":200,"initClosed":false,"initHidden":false,"children":{"layout1":{"east":{"size":500,"initClosed":false,"initHidden":false}}}},"east":{"size":70,"initClosed":true,"initHidden":false,"children":{}},"west":{"size":253,"initClosed":false,"initHidden":false,"children":{"layout1":{}}}}},"Summary":{"inpTotal": 6,"outTotal": 7},"Devices":[{"GUID": "d2621a30-e371-87de-2b81-b301da201aa8","id": "device_RevPiConnect4_20230409_1_0_001","type": "BASE","productType": "136","position": "0","name": "RevPi Connect 4","bmk": "RevPi Connect 4","inpVariant": 0,"outVariant": 0,"comment": "This is a RevPi Connect 4 Device","offset": 0,"inp": {"0": ["RevPiStatus","0","8","0",true,"0000", "",""],"1": ["RevPiIOCycle","0","8","1",true,"0001", "",""],"2": ["RS485ErrorCnt","0","16","2",false,"0002", "",""],"3": ["Core_Temperature","0","8","4",false,"0003", "",""],"4": ["Core_Frequency","0","8","5",false,"0004", "",""]},"out": {"0": ["RevPiOutput","0","8","6",true,"0005", "",""],"1": ["RS485ErrorLimit1","10","16","7",false,"0006", "",""],"2": ["RS485ErrorLimit2","1000","16","9",false,"0007", "",""],"3": ["RevPiLED","0","16","11",true,"0008", "",""]},"mem": {},"extend": {}}],"Connections":[]} \ No newline at end of file diff --git a/tests/revpi4/test_connect4.py b/tests/revpi4/test_connect4.py new file mode 100644 index 0000000..c6def4a --- /dev/null +++ b/tests/revpi4/test_connect4.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +"""Tests for RevPi 4 devices.""" +__author__ = "Sven Sager" +__copyright__ = "Copyright (C) 2024 Sven Sager" +__license__ = "GPLv2" + +from os.path import join, dirname + +import revpimodio2 +from tests import TestRevPiModIO + + +class TestRevPi4(TestRevPiModIO): + + data_dir = dirname(__file__) + + def test_connect4(self): + rpi = self.modio(configrsc="config_connect4.rsc") + rpi.setdefaultvalues() + + self.assertIsInstance(rpi.core, revpimodio2.device.Connect4) + + # Test all LED (A1 - A5) with all colors + lst_led_test = [ + (rpi.core._get_leda1, rpi.core._set_leda1), + (rpi.core._get_leda2, rpi.core._set_leda2), + (rpi.core._get_leda3, rpi.core._set_leda3), + (rpi.core._get_leda4, rpi.core._set_leda4), + (rpi.core._get_leda5, rpi.core._set_leda5), + ] + for i in range(len(lst_led_test)): + get_led = lst_led_test[i][0] + set_led = lst_led_test[i][1] + for k in ( + (revpimodio2.GREEN, 2), + (revpimodio2.RED, 1), + (revpimodio2.BLUE, 4), + (revpimodio2.OFF, 0), + ): + set_led(k[0]) + self.assertEqual( + rpi.io.RevPiLED.get_value(), + (k[1] << (i * 3)).to_bytes(2, "little"), + ) + self.assertEqual(get_led(), k[0]) + with self.assertRaises(ValueError): + set_led(8) + + self.assertIsInstance(rpi.core.temperature, int) + self.assertIsInstance(rpi.core.frequency, int) + + with self.assertRaises(AttributeError): + rpi.core.wd_toggle() + + with self.assertRaisesRegex(AttributeError, r"direct assignment is not supported"): + rpi.core.a5green = True + + rpi.exit() + del rpi