From d7a185451a7d9ddb98325851b5d958e8dc8ddb0c Mon Sep 17 00:00:00 2001 From: Sven Sager Date: Tue, 29 Oct 2024 09:36:51 +0100 Subject: [PATCH] test: IO values and counter --- tests/io_tests/config_supervirt.rsc | 2107 +++++++++++++++++++++++++++ tests/io_tests/test_ios.py | 107 ++ 2 files changed, 2214 insertions(+) create mode 100644 tests/io_tests/config_supervirt.rsc create mode 100644 tests/io_tests/test_ios.py diff --git a/tests/io_tests/config_supervirt.rsc b/tests/io_tests/config_supervirt.rsc new file mode 100644 index 0000000..37cc3d6 --- /dev/null +++ b/tests/io_tests/config_supervirt.rsc @@ -0,0 +1,2107 @@ +{ + "App": { + "name": "PiCtory", + "version": "1.3.10", + "saveTS": "20180731113226", + "language": "en", + "layout": { + "north": { + "size": 70, + "initClosed": false, + "initHidden": false + }, + "south": { + "size": 358, + "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": 70, + "outTotal": 69 + }, + "Devices": [ + { + "GUID": "54047c39-c817-5a63-e0fe-cfcc3acb1db1", + "id": "device_RevPiCore_20170404_1_2_001", + "type": "BASE", + "productType": "95", + "position": "0", + "name": "core01", + "bmk": "RevPi Core V1.2", + "inpVariant": 0, + "outVariant": 0, + "comment": "This is a RevPiCore 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": [ + "RevPiLED", + "0", + "8", + "6", + true, + "0005", + "", + "" + ], + "1": [ + "RS485ErrorLimit1", + "10", + "16", + "7", + false, + "0006", + "", + "" + ], + "2": [ + "RS485ErrorLimit2", + "1000", + "16", + "9", + false, + "0007", + "", + "" + ] + }, + "mem": {}, + "extend": {} + }, + { + "GUID": "5aef8ad8-2966-f37c-cdb7-e2d241add484", + "id": "device_Virtual01_20160818_1_0_001", + "type": "VIRTUAL", + "productType": "32768", + "position": "64", + "name": "virt01", + "bmk": "Virtual Device 32 Byte", + "inpVariant": 0, + "outVariant": 0, + "comment": "Virtual Device to reserve space in process image for user applications", + "offset": 11, + "inp": { + "0": [ + "in_status01", + "0", + "8", + "0", + false, + "0000", + "", + "" + ], + "1": [ + "in_status02", + "0", + "8", + "1", + false, + "0001", + "", + "" + ], + "2": [ + "in_blinkspeed", + "0", + "8", + "2", + false, + "0002", + "", + "" + ], + "3": [ + "in_blink_activated", + "0", + "8", + "3", + false, + "0003", + "", + "" + ], + "4": [ + "Input_5", + "0", + "8", + "4", + false, + "0004", + "", + "" + ], + "5": [ + "Input_6", + "0", + "8", + "5", + false, + "0005", + "", + "" + ], + "6": [ + "Input_7", + "0", + "8", + "6", + false, + "0006", + "", + "" + ], + "7": [ + "Input_8", + "0", + "8", + "7", + false, + "0007", + "", + "" + ], + "8": [ + "Input_9", + "0", + "8", + "8", + false, + "0008", + "", + "" + ], + "9": [ + "Input_10", + "0", + "8", + "9", + false, + "0009", + "", + "" + ], + "10": [ + "Input_11", + "0", + "8", + "10", + false, + "0010", + "", + "" + ], + "11": [ + "Input_12", + "0", + "8", + "11", + false, + "0011", + "", + "" + ], + "12": [ + "Input_13", + "0", + "8", + "12", + false, + "0012", + "", + "" + ], + "13": [ + "Input_14", + "0", + "8", + "13", + false, + "0013", + "", + "" + ], + "14": [ + "Input_15", + "0", + "8", + "14", + false, + "0014", + "", + "" + ], + "15": [ + "Input_16", + "0", + "8", + "15", + false, + "0015", + "", + "" + ], + "16": [ + "Input_17", + "0", + "8", + "16", + false, + "0016", + "", + "" + ], + "17": [ + "Input_18", + "0", + "8", + "17", + false, + "0017", + "", + "" + ], + "18": [ + "Input_19", + "0", + "8", + "18", + false, + "0018", + "", + "" + ], + "19": [ + "Input_20", + "0", + "8", + "19", + false, + "0019", + "", + "" + ], + "20": [ + "Input_21", + "0", + "8", + "20", + false, + "0020", + "", + "" + ], + "21": [ + "Input_22", + "0", + "8", + "21", + false, + "0021", + "", + "" + ], + "22": [ + "Input_23", + "0", + "8", + "22", + false, + "0022", + "", + "" + ], + "23": [ + "Input_24", + "0", + "8", + "23", + false, + "0023", + "", + "" + ], + "24": [ + "Input_25", + "0", + "8", + "24", + false, + "0024", + "", + "" + ], + "25": [ + "Input_26", + "0", + "8", + "25", + false, + "0025", + "", + "" + ], + "26": [ + "Input_27", + "0", + "8", + "26", + false, + "0026", + "", + "" + ], + "27": [ + "Input_28", + "0", + "8", + "27", + false, + "0027", + "", + "" + ], + "28": [ + "Input_29", + "0", + "8", + "28", + false, + "0028", + "", + "" + ], + "29": [ + "Input_30", + "0", + "8", + "29", + false, + "0029", + "", + "" + ], + "30": [ + "Input_31", + "0", + "8", + "30", + false, + "0030", + "", + "" + ], + "31": [ + "Input_32", + "0", + "8", + "31", + false, + "0031", + "", + "" + ] + }, + "out": { + "0": [ + "Output_1", + "0", + "8", + "32", + false, + "0032", + "", + "" + ], + "1": [ + "Output_2", + "0", + "8", + "33", + false, + "0033", + "", + "" + ], + "2": [ + "out_blinkcounter01", + "0", + "8", + "34", + false, + "0034", + "", + "" + ], + "3": [ + "out_blinkcounter02", + "0", + "8", + "35", + false, + "0035", + "", + "" + ], + "4": [ + "out_blinkcounter03", + "0", + "8", + "36", + false, + "0036", + "", + "" + ], + "5": [ + "out_blinkcounter04", + "0", + "8", + "37", + false, + "0037", + "", + "" + ], + "6": [ + "out_blinkcounter05", + "0", + "8", + "38", + false, + "0038", + "", + "" + ], + "7": [ + "out_blinkcounter06", + "0", + "8", + "39", + false, + "0039", + "", + "" + ], + "8": [ + "out_blinkcounter07", + "0", + "8", + "40", + false, + "0040", + "", + "" + ], + "9": [ + "out_blinkcounter08", + "0", + "8", + "41", + false, + "0041", + "", + "" + ], + "10": [ + "Output_11", + "0", + "8", + "42", + false, + "0042", + "", + "" + ], + "11": [ + "Output_12", + "0", + "8", + "43", + false, + "0043", + "", + "" + ], + "12": [ + "Output_13", + "0", + "8", + "44", + false, + "0044", + "", + "" + ], + "13": [ + "Output_14", + "0", + "8", + "45", + false, + "0045", + "", + "" + ], + "14": [ + "Output_15", + "0", + "8", + "46", + false, + "0046", + "", + "" + ], + "15": [ + "Output_16", + "0", + "8", + "47", + false, + "0047", + "", + "" + ], + "16": [ + "Output_17", + "0", + "8", + "48", + false, + "0048", + "", + "" + ], + "17": [ + "Output_18", + "0", + "8", + "49", + false, + "0049", + "", + "" + ], + "18": [ + "Output_19", + "0", + "8", + "50", + false, + "0050", + "", + "" + ], + "19": [ + "Output_20", + "0", + "8", + "51", + false, + "0051", + "", + "" + ], + "20": [ + "Output_21", + "0", + "8", + "52", + false, + "0052", + "", + "" + ], + "21": [ + "Output_22", + "0", + "8", + "53", + false, + "0053", + "", + "" + ], + "22": [ + "Output_23", + "0", + "8", + "54", + false, + "0054", + "", + "" + ], + "23": [ + "Output_24", + "0", + "8", + "55", + false, + "0055", + "", + "" + ], + "24": [ + "Output_25", + "0", + "8", + "56", + false, + "0056", + "", + "" + ], + "25": [ + "Output_26", + "0", + "8", + "57", + false, + "0057", + "", + "" + ], + "26": [ + "Output_27", + "0", + "8", + "58", + false, + "0058", + "", + "" + ], + "27": [ + "Output_28", + "0", + "8", + "59", + false, + "0059", + "", + "" + ], + "28": [ + "Output_29", + "0", + "8", + "60", + false, + "0060", + "", + "" + ], + "29": [ + "Output_30", + "0", + "8", + "61", + false, + "0061", + "", + "" + ], + "30": [ + "Output_31", + "0", + "8", + "62", + false, + "0062", + "", + "" + ], + "31": [ + "Output_32", + "0", + "8", + "63", + false, + "0063", + "", + "" + ] + }, + "mem": {}, + "extend": {} + }, + { + "GUID": "2c70e67f-a024-794b-953d-2ec7508ddea9", + "id": "device_Virtual01_20160818_1_0_002", + "type": "VIRTUAL", + "productType": "32768", + "position": "65", + "name": "Virtual Device 32 Byte", + "bmk": "Virtual Device 32 Byte", + "inpVariant": 2, + "outVariant": 2, + "comment": "Virtual Device to reserve space in process image for user applications", + "offset": 75, + "inp": { + "0": [ + "InBit_1", + "0", + "1", + "0", + false, + "0000", + "", + "0" + ], + "1": [ + "InBit_2", + "0", + "1", + "0", + false, + "0001", + "", + "1" + ], + "2": [ + "InBit_3", + "0", + "1", + "0", + false, + "0002", + "", + "2" + ], + "3": [ + "InBit_4", + "0", + "1", + "0", + false, + "0003", + "", + "3" + ], + "4": [ + "InBit_5", + "0", + "1", + "0", + false, + "0004", + "", + "4" + ], + "5": [ + "InBit_6", + "0", + "1", + "0", + false, + "0005", + "", + "5" + ], + "6": [ + "InBit_7", + "0", + "1", + "0", + false, + "0006", + "", + "6" + ], + "7": [ + "InBit_8", + "0", + "1", + "0", + false, + "0007", + "", + "7" + ], + "8": [ + "InBit_9", + "0", + "1", + "0", + false, + "0008", + "", + "8" + ], + "9": [ + "InBit_10", + "0", + "1", + "0", + false, + "0009", + "", + "9" + ], + "10": [ + "InBit_11", + "0", + "1", + "0", + false, + "0010", + "", + "10" + ], + "11": [ + "InBit_12", + "0", + "1", + "0", + false, + "0011", + "", + "11" + ], + "12": [ + "InBit_13", + "0", + "1", + "0", + false, + "0012", + "", + "12" + ], + "13": [ + "InBit_14", + "0", + "1", + "0", + false, + "0013", + "", + "13" + ], + "14": [ + "InBit_15", + "0", + "1", + "0", + false, + "0014", + "", + "14" + ], + "15": [ + "InBit_16", + "0", + "1", + "0", + false, + "0015", + "", + "15" + ], + "16": [ + "InBit_17", + "0", + "1", + "0", + false, + "0016", + "", + "16" + ], + "17": [ + "InBit_18", + "0", + "1", + "0", + false, + "0017", + "", + "17" + ], + "18": [ + "InBit_19", + "0", + "1", + "0", + false, + "0018", + "", + "18" + ], + "19": [ + "InBit_20", + "0", + "1", + "0", + false, + "0019", + "", + "19" + ], + "20": [ + "InBit_21", + "0", + "1", + "0", + false, + "0020", + "", + "20" + ], + "21": [ + "InBit_22", + "0", + "1", + "0", + false, + "0021", + "", + "21" + ], + "22": [ + "InBit_23", + "0", + "1", + "0", + false, + "0022", + "", + "22" + ], + "23": [ + "InBit_24", + "0", + "1", + "0", + false, + "0023", + "", + "23" + ], + "24": [ + "InBit_25", + "0", + "1", + "0", + false, + "0024", + "", + "24" + ], + "25": [ + "InBit_26", + "0", + "1", + "0", + false, + "0025", + "", + "25" + ], + "26": [ + "InBit_27", + "0", + "1", + "0", + false, + "0026", + "", + "26" + ], + "27": [ + "InBit_28", + "0", + "1", + "0", + false, + "0027", + "", + "27" + ], + "28": [ + "InBit_29", + "0", + "1", + "0", + false, + "0028", + "", + "28" + ], + "29": [ + "InBit_30", + "0", + "1", + "0", + false, + "0029", + "", + "29" + ], + "30": [ + "InBit_31", + "0", + "1", + "0", + false, + "0030", + "", + "30" + ], + "31": [ + "InBit_32", + "0", + "1", + "0", + false, + "0031", + "", + "31" + ], + "32": [ + "InBit_33", + "0", + "1", + "0", + false, + "0032", + "", + "32" + ], + "33": [ + "InBit_34", + "0", + "1", + "0", + false, + "0033", + "", + "33" + ], + "34": [ + "InBit_35", + "0", + "1", + "0", + false, + "0034", + "", + "34" + ], + "35": [ + "InBit_36", + "0", + "1", + "0", + false, + "0035", + "", + "35" + ], + "36": [ + "InBit_37", + "0", + "1", + "0", + false, + "0036", + "", + "36" + ], + "37": [ + "InBit_38", + "0", + "1", + "0", + false, + "0037", + "", + "37" + ], + "38": [ + "InBit_39", + "0", + "1", + "0", + false, + "0038", + "", + "38" + ], + "39": [ + "InBit_40", + "0", + "1", + "0", + false, + "0039", + "", + "39" + ], + "40": [ + "InBit_41", + "0", + "1", + "0", + false, + "0040", + "", + "40" + ], + "41": [ + "InBit_42", + "0", + "1", + "0", + false, + "0041", + "", + "41" + ], + "42": [ + "InBit_43", + "0", + "1", + "0", + false, + "0042", + "", + "42" + ], + "43": [ + "InBit_44", + "0", + "1", + "0", + false, + "0043", + "", + "43" + ], + "44": [ + "InBit_45", + "0", + "1", + "0", + false, + "0044", + "", + "44" + ], + "45": [ + "InBit_46", + "0", + "1", + "0", + false, + "0045", + "", + "45" + ], + "46": [ + "InBit_47", + "0", + "1", + "0", + false, + "0046", + "", + "46" + ], + "47": [ + "InBit_48", + "0", + "1", + "0", + false, + "0047", + "", + "47" + ], + "48": [ + "InByte_1", + "0", + "8", + "6", + false, + "0048", + "", + "" + ], + "49": [ + "InByte_2", + "0", + "8", + "7", + false, + "0049", + "", + "" + ], + "50": [ + "InByte_3", + "0", + "8", + "8", + false, + "0050", + "", + "" + ], + "51": [ + "InByte_4", + "0", + "8", + "9", + false, + "0051", + "", + "" + ], + "52": [ + "InByte_5", + "0", + "8", + "10", + false, + "0052", + "", + "" + ], + "53": [ + "InByte_6", + "0", + "8", + "11", + false, + "0053", + "", + "" + ], + "54": [ + "InByte_7", + "0", + "8", + "12", + false, + "0054", + "", + "" + ], + "55": [ + "InByte_8", + "0", + "8", + "13", + false, + "0055", + "", + "" + ], + "56": [ + "InByte_9", + "0", + "8", + "14", + false, + "0056", + "", + "" + ], + "57": [ + "InByte_10", + "0", + "8", + "15", + false, + "0057", + "", + "" + ], + "58": [ + "InWord_1", + "0", + "16", + "16", + false, + "0058", + "", + "" + ], + "59": [ + "InWord_2", + "0", + "16", + "18", + false, + "0059", + "", + "" + ], + "60": [ + "InWord_3", + "0", + "16", + "20", + false, + "0060", + "", + "" + ], + "61": [ + "InWord_4", + "0", + "16", + "22", + false, + "0061", + "", + "" + ], + "62": [ + "InDword_1", + "0", + "32", + "24", + false, + "0062", + "", + "" + ], + "63": [ + "InDword_2", + "0", + "32", + "28", + false, + "0063", + "", + "" + ] + }, + "out": { + "0": [ + "OutBit_1", + "0", + "1", + "32", + false, + "0064", + "", + "0" + ], + "1": [ + "OutBit_2", + "0", + "1", + "32", + false, + "0065", + "", + "1" + ], + "2": [ + "OutBit_3", + "0", + "1", + "32", + false, + "0066", + "", + "2" + ], + "3": [ + "OutBit_4", + "0", + "1", + "32", + false, + "0067", + "", + "3" + ], + "4": [ + "OutBit_5", + "0", + "1", + "32", + false, + "0068", + "", + "4" + ], + "5": [ + "OutBit_6", + "0", + "1", + "32", + false, + "0069", + "", + "5" + ], + "6": [ + "OutBit_7", + "0", + "1", + "32", + false, + "0070", + "", + "6" + ], + "7": [ + "OutBit_8", + "0", + "1", + "32", + false, + "0071", + "", + "7" + ], + "8": [ + "OutBit_9", + "0", + "1", + "32", + false, + "0072", + "", + "8" + ], + "9": [ + "OutBit_10", + "0", + "1", + "32", + false, + "0073", + "", + "9" + ], + "10": [ + "OutBit_11", + "0", + "1", + "32", + false, + "0074", + "", + "10" + ], + "11": [ + "OutBit_12", + "0", + "1", + "32", + false, + "0075", + "", + "11" + ], + "12": [ + "OutBit_13", + "0", + "1", + "32", + false, + "0076", + "", + "12" + ], + "13": [ + "OutBit_14", + "0", + "1", + "32", + false, + "0077", + "", + "13" + ], + "14": [ + "OutBit_15", + "0", + "1", + "32", + false, + "0078", + "", + "14" + ], + "15": [ + "OutBit_16", + "0", + "1", + "32", + false, + "0079", + "", + "15" + ], + "16": [ + "OutBit_17", + "0", + "1", + "32", + false, + "0080", + "", + "16" + ], + "17": [ + "OutBit_18", + "0", + "1", + "32", + false, + "0081", + "", + "17" + ], + "18": [ + "OutBit_19", + "0", + "1", + "32", + false, + "0082", + "", + "18" + ], + "19": [ + "OutBit_20", + "0", + "1", + "32", + false, + "0083", + "", + "19" + ], + "20": [ + "OutBit_21", + "0", + "1", + "32", + false, + "0084", + "", + "20" + ], + "21": [ + "OutBit_22", + "0", + "1", + "32", + false, + "0085", + "", + "21" + ], + "22": [ + "OutBit_23", + "0", + "1", + "32", + false, + "0086", + "", + "22" + ], + "23": [ + "OutBit_24", + "0", + "1", + "32", + false, + "0087", + "", + "23" + ], + "24": [ + "OutBit_25", + "0", + "1", + "32", + false, + "0088", + "", + "24" + ], + "25": [ + "OutBit_26", + "0", + "1", + "32", + false, + "0089", + "", + "25" + ], + "26": [ + "OutBit_27", + "0", + "1", + "32", + false, + "0090", + "", + "26" + ], + "27": [ + "OutBit_28", + "0", + "1", + "32", + false, + "0091", + "", + "27" + ], + "28": [ + "OutBit_29", + "0", + "1", + "32", + false, + "0092", + "", + "28" + ], + "29": [ + "OutBit_30", + "0", + "1", + "32", + false, + "0093", + "", + "29" + ], + "30": [ + "OutBit_31", + "0", + "1", + "32", + false, + "0094", + "", + "30" + ], + "31": [ + "OutBit_32", + "0", + "1", + "32", + false, + "0095", + "", + "31" + ], + "32": [ + "OutBit_33", + "0", + "1", + "32", + false, + "0096", + "", + "32" + ], + "33": [ + "OutBit_34", + "0", + "1", + "32", + false, + "0097", + "", + "33" + ], + "34": [ + "OutBit_35", + "0", + "1", + "32", + false, + "0098", + "", + "34" + ], + "35": [ + "OutBit_36", + "0", + "1", + "32", + false, + "0099", + "", + "35" + ], + "36": [ + "OutBit_37", + "0", + "1", + "32", + false, + "0100", + "", + "36" + ], + "37": [ + "OutBit_38", + "0", + "1", + "32", + false, + "0101", + "", + "37" + ], + "38": [ + "OutBit_39", + "0", + "1", + "32", + false, + "0102", + "", + "38" + ], + "39": [ + "OutBit_40", + "0", + "1", + "32", + false, + "0103", + "", + "39" + ], + "40": [ + "OutBit_41", + "0", + "1", + "32", + false, + "0104", + "", + "40" + ], + "41": [ + "OutBit_42", + "0", + "1", + "32", + false, + "0105", + "", + "41" + ], + "42": [ + "OutBit_43", + "0", + "1", + "32", + false, + "0106", + "", + "42" + ], + "43": [ + "OutBit_44", + "0", + "1", + "32", + false, + "0107", + "", + "43" + ], + "44": [ + "OutBit_45", + "0", + "1", + "32", + false, + "0108", + "", + "44" + ], + "45": [ + "OutBit_46", + "0", + "1", + "32", + false, + "0109", + "", + "45" + ], + "46": [ + "OutBit_47", + "0", + "1", + "32", + false, + "0110", + "", + "46" + ], + "47": [ + "OutBit_48", + "0", + "1", + "32", + false, + "0111", + "", + "47" + ], + "48": [ + "OutByte_1", + "0", + "8", + "38", + false, + "0112", + "", + "" + ], + "49": [ + "OutByte_2", + "0", + "8", + "39", + false, + "0113", + "", + "" + ], + "50": [ + "OutByte_3", + "0", + "8", + "40", + false, + "0114", + "", + "" + ], + "51": [ + "OutByte_4", + "0", + "8", + "41", + false, + "0115", + "", + "" + ], + "52": [ + "OutByte_5", + "0", + "8", + "42", + false, + "0116", + "", + "" + ], + "53": [ + "OutByte_6", + "0", + "8", + "43", + false, + "0117", + "", + "" + ], + "54": [ + "OutByte_7", + "0", + "8", + "44", + false, + "0118", + "", + "" + ], + "55": [ + "OutByte_8", + "0", + "8", + "45", + false, + "0119", + "", + "" + ], + "56": [ + "OutByte_9", + "0", + "8", + "46", + false, + "0120", + "", + "" + ], + "57": [ + "OutByte_10", + "0", + "8", + "47", + false, + "0121", + "", + "" + ], + "58": [ + "OutWord_1", + "0", + "16", + "48", + false, + "0122", + "", + "" + ], + "59": [ + "OutWord_2", + "0", + "16", + "50", + false, + "0123", + "", + "" + ], + "60": [ + "OutWord_3", + "0", + "16", + "52", + false, + "0124", + "", + "" + ], + "61": [ + "OutWord_4", + "0", + "16", + "54", + false, + "0125", + "", + "" + ], + "62": [ + "OutDWord_1", + "0", + "32", + "56", + false, + "0126", + "", + "" + ], + "63": [ + "OutDWord_2", + "0", + "32", + "60", + false, + "0127", + "", + "" + ] + }, + "mem": {}, + "extend": {} + } + ], + "Connections": [] +} diff --git a/tests/io_tests/test_ios.py b/tests/io_tests/test_ios.py new file mode 100644 index 0000000..83c6b73 --- /dev/null +++ b/tests/io_tests/test_ios.py @@ -0,0 +1,107 @@ +# -*- 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.io import IntIOCounter +from tests import TestRevPiModIO + + +class TestIos(TestRevPiModIO): + data_dir = dirname(__file__) + + def test_ios(self): + """Test values of IOs.""" + rpi = self.modio() + + # Change values + rpi.io.magazin1.value = 255 + self.assertEqual(rpi.io.magazin1.value, 255) + rpi.device.virt01.setdefaultvalues() + self.assertEqual(rpi.io.magazin1.value, 0) + + # Use __call__ function + with self.assertRaises(TypeError): + rpi.io.magazin1.set_value(44) + with self.assertRaises(ValueError): + rpi.io.magazin1.set_value(b"\x01\x01") + rpi.io.magazin1.set_value(b"\x01") + self.assertEqual(rpi.io.magazin1.value, 1) + + # Inputs and Mems + with self.assertRaises(RuntimeError): + rpi.io.magazin1_max.set_value(b"\x01") + with self.assertRaises(RuntimeError): + rpi.io.InputMode_1.set_value(b"\x01") + + rpi.io.magazin1_max._iotype = 303 + with self.assertRaises(RuntimeError): + rpi.io.magazin1_max.set_value(b"\x01") + + def test_counter_io(self): + """Test counter inputs.""" + rpi = self.modio() + + # Just for testing buffered mode + rpi._buffedwrite = True + + # Counter vorbereiten + self.fh_procimg.seek(rpi.io.Counter_1.address) + self.fh_procimg.write(b"\x00\x01") + rpi.readprocimg() + + self.assertEqual(type(rpi.io.Counter_1), IntIOCounter) + self.assertEqual(rpi.io.Counter_1.value, 256) + rpi.io.Counter_1.reset() + rpi.readprocimg() + self.assertEqual(rpi.io.Counter_1.value, 0) + + # This will use ioctl calls + rpi._run_on_pi = True + + with self.assertWarnsRegex(RuntimeWarning, r"'iorst' and count \d"): + rpi.io.Counter_1.reset() + self.assertEqual(rpi.ioerrors, 1) + + del rpi + + rpi = self.modio(monitoring=True) + self.assertEqual(type(rpi.io.Counter_2), IntIOCounter) + with self.assertRaises(RuntimeError): + rpi.io.Counter_2.reset() + del rpi + + rpi = self.modio(simulator=True) + self.assertEqual(type(rpi.io.Counter_3), IntIOCounter) + with self.assertRaises(RuntimeError): + rpi.io.Counter_3.reset() + del rpi + + def test_superio(self): + """Testet mehrbittige IOs.""" + rpi = self.modio(configrsc="config_supervirt.rsc") + + # Adressen und Längen prüfen + self.assertEqual(rpi.device[65]._offset, 75) + + self.assertEqual(rpi.io.InBit_1.length, 1) + self.assertEqual(rpi.io.InBit_2.length, 0) + self.assertEqual(rpi.io.InBit_6.address, 75) + self.assertEqual(rpi.io.InBit_48.address, 80) + self.assertEqual(rpi.io.InDword_1.address, 99) + self.assertEqual(rpi.io.OutBit_1.length, 1) + self.assertEqual(rpi.io.OutBit_2.length, 0) + self.assertEqual(rpi.io.OutBit_8.address, 107) + self.assertEqual(rpi.io.OutBit_9.address, 108) + + self.assertEqual(len(rpi.device[65]._ba_devdata), 64) + + # Inputs setzen + rpi.io.OutBit_6.value = True + self.assertTrue(rpi.io.OutBit_6.value) + self.assertEqual(rpi.device[65]._ba_devdata[32:38], b"\x20\x00\x00\x00\x00\x00") + rpi.io.OutBit_48.value = True + self.assertEqual(rpi.device[65]._ba_devdata[32:38], b"\x20\x00\x00\x00\x00\x80")