mirror of
https://github.com/naruxde/revpimodio2.git
synced 2025-11-08 22:03:53 +01:00
98 lines
3.4 KiB
Python
98 lines
3.4 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
|
|
from tests import TestRevPiModIO
|
|
|
|
|
|
class TestIoFunctions(TestRevPiModIO):
|
|
data_dir = dirname(__file__)
|
|
|
|
def test_io_base(self):
|
|
"""Test io attributes."""
|
|
rpi = self.modio()
|
|
|
|
# Transformations
|
|
self.assertEqual(rpi.io.v_druck.address, 307)
|
|
with self.assertRaises(AttributeError):
|
|
rpi.io.v_druck.address = 10
|
|
self.assertEqual(rpi.io.v_druck.byteorder, "little")
|
|
with self.assertRaises(AttributeError):
|
|
rpi.io.v_druck.byteorder = "big"
|
|
self.assertIsInstance(rpi.io.v_druck.defaultvalue, bool)
|
|
self.assertEqual(rpi.io.v_druck.defaultvalue, 0)
|
|
with self.assertRaises(AttributeError):
|
|
rpi.io.v_druck.defaultvalue = 255
|
|
self.assertEqual(rpi.io.v_druck.length, 0)
|
|
with self.assertRaises(AttributeError):
|
|
rpi.io.v_druck.length = 2
|
|
self.assertEqual(rpi.io.v_druck.name, "v_druck")
|
|
with self.assertRaises(AttributeError):
|
|
rpi.io.v_druck.name = "test"
|
|
self.assertEqual(rpi.io.v_druck.type, OUT)
|
|
with self.assertRaises(AttributeError):
|
|
rpi.io.v_druck.type = 399
|
|
self.assertFalse(rpi.io.v_druck.value)
|
|
|
|
self.assertFalse(rpi.io.v_druck._read_only_io)
|
|
self.assertTrue(rpi.io.t_stop._read_only_io)
|
|
|
|
rpi.io.v_druck(True)
|
|
self.assertTrue(rpi.io.v_druck.value)
|
|
rpi.io.v_druck.value = False
|
|
self.assertFalse(rpi.io.v_druck())
|
|
|
|
# Magic-function __call__
|
|
self.assertEqual(rpi.io.pbit0_7(), 0)
|
|
self.assertFalse(bool(rpi.io.v_druck))
|
|
self.assertFalse(bool(rpi.io.magazin1))
|
|
rpi.io.magazin1(129)
|
|
self.assertEqual(int(rpi.io.magazin1), 129)
|
|
self.assertEqual(rpi.io.magazin1(), 129)
|
|
rpi.io.magazin1.value = 128
|
|
self.assertTrue(bool(rpi.io.magazin1))
|
|
self.assertEqual(int(rpi.io.magazin1), 128)
|
|
self.assertEqual(rpi.io.magazin1(), 128)
|
|
with self.assertRaises(TypeError):
|
|
rpi.io.magazin1(b"\x00")
|
|
|
|
rpi.io.meldung0_7.replace_io("test4", frm="?", bit=4)
|
|
rpi.io.test4(True)
|
|
rpi.io.test4(False)
|
|
|
|
with self.assertRaises(ValueError):
|
|
rpi.io.magazin1.byteorder = 0
|
|
rpi.io.magazin1.byteorder = "big"
|
|
self.assertIsInstance(rpi.io.magazin1.defaultvalue, int)
|
|
|
|
# Signed and unsigned change
|
|
self.assertEqual(rpi.io.magazin1.value, 128)
|
|
self.assertEqual(rpi.io.magazin1.signed, False)
|
|
with self.assertRaises(TypeError):
|
|
rpi.io.magazin1.signed = 0
|
|
rpi.io.magazin1.signed = True
|
|
self.assertEqual(rpi.io.magazin1.signed, True)
|
|
self.assertEqual(rpi.io.magazin1.value, -128)
|
|
|
|
with self.assertRaises(TypeError):
|
|
rpi.io.magazin1.value = "test"
|
|
|
|
# Cound IOs
|
|
int_len = len(rpi.io)
|
|
int_iter = 0
|
|
for myio in rpi.io:
|
|
int_iter += 1
|
|
self.assertEqual(int_len, int_iter)
|
|
|
|
self.assertEqual(rpi.io["v_druck"].name, "v_druck")
|
|
with self.assertRaises(IndexError):
|
|
rpi.io[8192]
|
|
with self.assertRaises(AttributeError):
|
|
# Prevent input assignment
|
|
rpi.io.v_druck = True
|