diff --git a/tests/flat/config_flat.rsc b/tests/flat/config_flat.rsc new file mode 100644 index 0000000..945561f --- /dev/null +++ b/tests/flat/config_flat.rsc @@ -0,0 +1 @@ +{"App":{"name": "PiCtory", "version": "1.4.8","saveTS": "20210212181938","language": "en","layout": {"north":{"size":70,"initClosed":false,"initHidden":false},"south":{"size":285,"initClosed":false,"initHidden":false,"children":{"layout1":{"east":{"size":500,"initClosed":false,"initHidden":false}}}},"east":{"size":70,"initClosed":true,"initHidden":false,"children":{}},"west":{"size":200,"initClosed":false,"initHidden":false,"children":{"layout1":{}}}}},"Summary":{"inpTotal": 7,"outTotal": 5},"Devices":[{"GUID": "d8ded3e4-5b2b-3407-baa3-abbdde07e335","id": "device_RevPiFlat_20200921_1_0_001","type": "BASE","productType": "135","position": "0","name": "flat01","bmk": "RevPi Flat","inpVariant": 0,"outVariant": 0,"comment": "This is a RevPiFlat Device","offset": 0,"inp": {"0": ["AIn","0","16","0",true,"0000", "",""],"1": ["AIn_Status","0","8","2",false,"0001", "",""],"2": ["AOut_Status","0","8","3",false,"0002", "",""],"3": ["Core_Temperature","0","8","4",false,"0003", "",""],"4": ["Core_Frequency","0","8","5",false,"0004", "",""],"5": ["Top_Button","0","8","6",true,"0005", "",""]},"out": {"0": ["RevPiLED","0","16","7",true,"0006", "",""],"1": ["AOut","0","16","9",true,"0007", "",""],"2": ["DOut","0","8","11",true,"0008", "",""]},"mem": {"0": ["AInMode","0","8","12",false,"0009", "Select the type of analog input signal",""]},"extend": {}}],"Connections":[]} \ No newline at end of file diff --git a/tests/flat/config_flat_bits.rsc b/tests/flat/config_flat_bits.rsc new file mode 100644 index 0000000..c78c7d2 --- /dev/null +++ b/tests/flat/config_flat_bits.rsc @@ -0,0 +1,260 @@ +{ + "App": { + "name": "PiCtory", + "version": "1.4.8", + "saveTS": "20210212181938", + "language": "en", + "layout": { + "north": { + "size": 70, + "initClosed": false, + "initHidden": false + }, + "south": { + "size": 285, + "initClosed": false, + "initHidden": false, + "children": { + "layout1": { + "east": { + "size": 500, + "initClosed": false, + "initHidden": false + } + } + } + }, + "east": { + "size": 70, + "initClosed": true, + "initHidden": false, + "children": {} + }, + "west": { + "size": 200, + "initClosed": false, + "initHidden": false, + "children": { + "layout1": {} + } + } + } + }, + "Summary": { + "inpTotal": 7, + "outTotal": 5 + }, + "Devices": [ + { + "GUID": "d8ded3e4-5b2b-3407-baa3-abbdde07e335", + "id": "device_RevPiFlat_20200921_1_0_001", + "type": "BASE", + "productType": "135", + "position": "0", + "name": "flat01", + "bmk": "RevPi Flat", + "inpVariant": 0, + "outVariant": 0, + "comment": "This is a RevPiFlat Device", + "offset": 0, + "inp": { + "0": [ + "AIn", + "0", + "16", + "0", + true, + "0000", + "", + "" + ], + "1": [ + "AIn_Status", + "0", + "8", + "2", + false, + "0001", + "", + "" + ], + "2": [ + "AOut_Status", + "0", + "8", + "3", + false, + "0002", + "", + "" + ], + "3": [ + "Core_Temperature", + "0", + "8", + "4", + false, + "0003", + "", + "" + ], + "4": [ + "Core_Frequency", + "0", + "8", + "5", + false, + "0004", + "", + "" + ], + "5": [ + "switch", + "0", + "1", + "6", + true, + "0005", + "", + "0" + ] + }, + "out": { + "0": [ + "a1green", + "0", + "1", + "7", + true, + "0006", + "", + "0" + ], + "1": [ + "a1red", + "0", + "1", + "7", + true, + "0007", + "", + "1" + ], + "2": [ + "a2green", + "0", + "1", + "7", + true, + "0008", + "", + "2" + ], + "3": [ + "a2red", + "0", + "1", + "7", + true, + "0009", + "", + "3" + ], + "4": [ + "a3green", + "0", + "1", + "7", + true, + "0010", + "", + "4" + ], + "5": [ + "a3red", + "0", + "1", + "7", + true, + "0011", + "", + "5" + ], + "6": [ + "a4green", + "0", + "1", + "7", + true, + "0012", + "", + "6" + ], + "7": [ + "a4red", + "0", + "1", + "7", + true, + "0013", + "", + "7" + ], + "8": [ + "a5green", + "0", + "1", + "7", + true, + "0014", + "", + "8" + ], + "9": [ + "a5red", + "0", + "1", + "7", + true, + "0015", + "", + "9" + ], + "10": [ + "AOut", + "0", + "16", + "9", + true, + "0016", + "", + "" + ], + "11": [ + "relais", + "0", + "1", + "11", + true, + "0017", + "", + "" + ] + }, + "mem": { + "0": [ + "AInMode", + "0", + "8", + "12", + false, + "0009", + "Select the type of analog input signal", + "" + ] + }, + "extend": {} + } + ], + "Connections": [] +} \ No newline at end of file diff --git a/tests/flat/test_flat.py b/tests/flat/test_flat.py new file mode 100644 index 0000000..98e8472 --- /dev/null +++ b/tests/flat/test_flat.py @@ -0,0 +1,94 @@ +# -*- coding: utf-8 -*- +"""Test RevPi Flat devices.""" +__author__ = "Sven Sager" +__copyright__ = "Copyright (C) 2024 Sven Sager" +__license__ = "GPLv2" + +from os.path import dirname + +import revpimodio2 +from tests import TestRevPiModIO + + +class TestFlat(TestRevPiModIO): + + data_dir = dirname(__file__) + + def test_flat(self): + rpi = self.modio(configrsc="config_flat.rsc") + rpi.setdefaultvalues() + + self.assertIsInstance(rpi.core, revpimodio2.device.Flat) + + # FLAT LEDs prüfen + rpi.core.A1 = revpimodio2.OFF + self.assertEqual(rpi.io.RevPiLED.get_value(), b"\x00\x00") + self.assertEqual(rpi.core.A1, 0) + rpi.core.A1 = revpimodio2.GREEN + self.assertEqual(rpi.io.RevPiLED.get_value(), b"\x01\x00") + self.assertEqual(rpi.core.A1, 1) + rpi.core.A1 = revpimodio2.RED + self.assertEqual(rpi.io.RevPiLED.get_value(), b"\x02\x00") + self.assertEqual(rpi.core.A1, 2) + with self.assertRaises(ValueError): + rpi.core.A1 = 5 + + rpi.core.A2 = revpimodio2.OFF + self.assertEqual(rpi.core.A2, 0) + rpi.core.A2 = revpimodio2.GREEN + self.assertEqual(rpi.io.RevPiLED.get_value(), b"\x06\x00") + self.assertEqual(rpi.core.A2, 1) + rpi.core.A2 = revpimodio2.RED + self.assertEqual(rpi.io.RevPiLED.get_value(), b"\x0a\x00") + self.assertEqual(rpi.core.A2, 2) + with self.assertRaises(ValueError): + rpi.core.A2 = 5 + + rpi.core.A3 = revpimodio2.OFF + self.assertEqual(rpi.core.A3, 0) + rpi.core.A3 = revpimodio2.GREEN + self.assertEqual(rpi.io.RevPiLED.get_value(), b"\x1a\x00") + self.assertEqual(rpi.core.A3, 1) + rpi.core.A3 = revpimodio2.RED + self.assertEqual(rpi.io.RevPiLED.get_value(), b"\x2a\x00") + self.assertEqual(rpi.core.A3, 2) + with self.assertRaises(ValueError): + rpi.core.A3 = 5 + + rpi.core.A4 = revpimodio2.OFF + self.assertEqual(rpi.core.A4, 0) + rpi.core.A4 = revpimodio2.GREEN + self.assertEqual(rpi.io.RevPiLED.get_value(), b"\x6a\x00") + self.assertEqual(rpi.core.A4, 1) + rpi.core.A4 = revpimodio2.RED + self.assertEqual(rpi.io.RevPiLED.get_value(), b"\xaa\x00") + self.assertEqual(rpi.core.A4, 2) + with self.assertRaises(ValueError): + rpi.core.A4 = 5 + + rpi.core.A5 = revpimodio2.OFF + self.assertEqual(rpi.core.A5, 0) + rpi.core.A5 = revpimodio2.GREEN + self.assertEqual(rpi.io.RevPiLED.get_value(), b"\xaa\x01") + self.assertEqual(rpi.core.A5, 1) + rpi.core.A5 = revpimodio2.RED + self.assertEqual(rpi.io.RevPiLED.get_value(), b"\xaa\x02") + self.assertEqual(rpi.core.A5, 2) + with self.assertRaises(ValueError): + rpi.core.A5 = 5 + + # Spezielle Werte aufrufen + self.assertIsInstance(rpi.core.temperature, int) + self.assertIsInstance(rpi.core.frequency, int) + rpi.core.wd_toggle() + + # Directzuweisung nicht erlaubt + with self.assertRaisesRegex(AttributeError, r"direct assignment is not supported"): + rpi.core.a1green = True + + rpi.exit() + del rpi + + # Bit piCtory config + rpi = self.modio(configrsc="config_flat_bits.rsc") + del rpi