test: Add RevPi Flat tests

This commit is contained in:
2024-09-18 08:41:45 +02:00
parent 379899f54c
commit 6adfe95201
3 changed files with 355 additions and 0 deletions

View File

@@ -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":[]}

View File

@@ -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": []
}

94
tests/flat/test_flat.py Normal file
View File

@@ -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