mirror of
https://github.com/naruxde/revpimodio2.git
synced 2025-11-08 22:03:53 +01:00
117 lines
4.1 KiB
Python
117 lines
4.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""Tests instantiation all local classes."""
|
|
__author__ = "Sven Sager"
|
|
__copyright__ = "Copyright (C) 2024 Sven Sager"
|
|
__license__ = "GPLv2"
|
|
|
|
from os.path import dirname
|
|
|
|
from revpimodio2 import OUT, MEM, INP
|
|
from revpimodio2.device import Virtual, Base
|
|
from tests import TestRevPiModIO
|
|
|
|
|
|
class TestDevicesModule(TestRevPiModIO):
|
|
data_dir = dirname(__file__)
|
|
|
|
def test_device(self):
|
|
"""Test device attributes."""
|
|
rpi = self.modio()
|
|
|
|
self.assertEqual(rpi.device[64].name, "virt01")
|
|
self.assertEqual(rpi.device.virt01.length, 64)
|
|
self.assertEqual(rpi.device.virt01.name, "virt01")
|
|
self.assertIsInstance(rpi.device.virt01.offset, int)
|
|
self.assertEqual(rpi.device.virt01.position, 64)
|
|
self.assertEqual(rpi.device.virt01.producttype, 32768)
|
|
|
|
# Magic
|
|
self.assertEqual("virt01" in rpi.device, True)
|
|
self.assertEqual("nixnix" in rpi.device, False)
|
|
self.assertEqual(64 in rpi.device, True)
|
|
self.assertEqual(128 in rpi.device, False)
|
|
self.assertEqual(rpi.device.virt01 in rpi.device, True)
|
|
self.assertIsInstance(bytes(rpi.device.virt01), bytes)
|
|
|
|
# We have 7 devices in config.rsc file
|
|
self.assertEqual(len(rpi.device), 7)
|
|
|
|
def test_devs_and_ios(self):
|
|
"""Test IO grouping of devices."""
|
|
rpi = self.modio()
|
|
|
|
self.assertEqual(len(rpi.device.virt01), 64)
|
|
|
|
# getIOs
|
|
self.assertIsInstance(rpi.device.aio01.get_inputs(), list)
|
|
self.assertIsInstance(rpi.device.aio01.get_outputs(), list)
|
|
self.assertIsInstance(rpi.device.aio01.get_memories(), list)
|
|
int_inputs = len(rpi.device.aio01.get_inputs())
|
|
int_output = len(rpi.device.aio01.get_outputs())
|
|
|
|
self.assertIsInstance(rpi.device.aio01.get_allios(), list)
|
|
self.assertEqual(len(rpi.device.aio01.get_allios()), int_inputs + int_output)
|
|
|
|
# IO Byte vergleichen
|
|
int_byte = 0
|
|
for devio in [rpi.device.aio01.get_allios(), rpi.device.aio01.get_memories()]:
|
|
for io in devio:
|
|
int_byte += io.length
|
|
self.assertEqual(len(rpi.device.aio01), int_byte)
|
|
|
|
# Test the types of IOs
|
|
len_end = 0
|
|
len_start = len_end
|
|
for io in rpi.device.aio01.get_inputs():
|
|
self.assertEqual(io.type, INP)
|
|
len_end += io.length
|
|
self.assertEqual(len_start, rpi.device.aio01._slc_inp.start)
|
|
self.assertEqual(len_end, rpi.device.aio01._slc_inp.stop)
|
|
|
|
len_start = len_end
|
|
for io in rpi.device.aio01.get_outputs():
|
|
self.assertEqual(io.type, OUT)
|
|
len_end += io.length
|
|
self.assertEqual(len_start, rpi.device.aio01._slc_out.start)
|
|
self.assertEqual(len_end, rpi.device.aio01._slc_out.stop)
|
|
|
|
len_start = len_end
|
|
for io in rpi.device.aio01.get_memories():
|
|
self.assertEqual(io.type, MEM)
|
|
len_end += io.length
|
|
self.assertEqual(len_start, rpi.device.aio01._slc_mem.start)
|
|
self.assertEqual(len_end, rpi.device.aio01._slc_mem.stop)
|
|
|
|
def test_device_modifications(self):
|
|
"""Test device modifications."""
|
|
rpi = self.modio()
|
|
|
|
# Zugriffe
|
|
self.assertIsInstance(rpi.device.virt01, Virtual)
|
|
self.assertIsInstance(rpi.device["virt01"], Virtual)
|
|
|
|
# IO-Abfragen
|
|
self.assertEqual("pbit0_7" in rpi.device.virt01, True)
|
|
self.assertEqual(rpi.io.pbit0_7 in rpi.device.virt01, True)
|
|
self.assertEqual(33 in rpi.device.virt01, False)
|
|
self.assertEqual(552 in rpi.device.virt01, True)
|
|
|
|
# Löschen
|
|
del rpi.device.virt01
|
|
with self.assertRaises(AttributeError):
|
|
rpi.device.virt01
|
|
self.assertEqual(rpi.device[0].name, "picore01")
|
|
del rpi.device[0]
|
|
with self.assertRaises(IndexError):
|
|
rpi.device[0]
|
|
with self.assertRaises(AttributeError):
|
|
rpi.device.picore01
|
|
|
|
del rpi.device[rpi.device.di01]
|
|
|
|
def test_new_basedevice(self):
|
|
"""Test unknown (new) base device."""
|
|
rpi = self.modio(configrsc="config_new_base.rsc")
|
|
self.assertEqual(type(rpi.device[0]), Base)
|
|
del rpi
|