|
4 | 4 |
|
5 | 5 | EDS_PATH = os.path.join(os.path.dirname(__file__), 'sample.eds') |
6 | 6 |
|
| 7 | + |
7 | 8 | class TestEDS(unittest.TestCase): |
8 | 9 |
|
9 | 10 | def setUp(self): |
@@ -47,6 +48,20 @@ def test_record(self): |
47 | 48 | self.assertEqual(var.data_type, canopen.objectdictionary.UNSIGNED32) |
48 | 49 | self.assertEqual(var.access_type, 'ro') |
49 | 50 |
|
| 51 | + def test_record_with_limits(self): |
| 52 | + int8 = self.od[0x3020] |
| 53 | + self.assertEqual(int8.min, 0) |
| 54 | + self.assertEqual(int8.max, 127) |
| 55 | + uint8 = self.od[0x3021] |
| 56 | + self.assertEqual(uint8.min, 2) |
| 57 | + self.assertEqual(uint8.max, 10) |
| 58 | + int32 = self.od[0x3030] |
| 59 | + self.assertEqual(int32.min, -2147483648) |
| 60 | + self.assertEqual(int32.max, 0) |
| 61 | + int64 = self.od[0x3040] |
| 62 | + self.assertEqual(int64.min, -10) |
| 63 | + self.assertEqual(int64.max, +10) |
| 64 | + |
50 | 65 | def test_array_compact_subobj(self): |
51 | 66 | array = self.od[0x1003] |
52 | 67 | self.assertIsInstance(array, canopen.objectdictionary.Array) |
@@ -98,73 +113,76 @@ def test_dummy_variable_undefined(self): |
98 | 113 |
|
99 | 114 | def test_comments(self): |
100 | 115 | self.assertEqual(self.od.comments, |
101 | | -""" |
| 116 | + """ |
102 | 117 | |-------------| |
103 | 118 | | Don't panic | |
104 | 119 | |-------------| |
105 | | -""".strip() |
106 | | - ) |
107 | | - |
| 120 | +""".strip()) |
108 | 121 |
|
109 | 122 | def test_export_eds(self): |
110 | 123 | import tempfile |
111 | 124 | for doctype in {"eds", "dcf"}: |
112 | | - with tempfile.NamedTemporaryFile(suffix="."+doctype, mode="w+") as tempeds: |
| 125 | + with tempfile.NamedTemporaryFile(suffix="." + doctype, mode="w+") as tempeds: |
113 | 126 | print("exporting %s to " % doctype + tempeds.name) |
114 | 127 | canopen.export_od(self.od, tempeds, doc_type=doctype) |
115 | 128 | tempeds.flush() |
116 | 129 | exported_od = canopen.import_od(tempeds.name) |
117 | 130 |
|
118 | 131 | for index in exported_od: |
119 | 132 | self.assertIn(exported_od[index].name, self.od) |
120 | | - self.assertIn(index , self.od) |
| 133 | + self.assertIn(index, self.od) |
121 | 134 |
|
122 | 135 | for index in self.od: |
123 | 136 | if index < 0x0008: |
124 | 137 | # ignore dummies |
125 | 138 | continue |
126 | 139 | self.assertIn(self.od[index].name, exported_od) |
127 | | - self.assertIn(index , exported_od) |
| 140 | + self.assertIn(index, exported_od) |
128 | 141 |
|
129 | | - actual_object = exported_od[index] |
130 | | - expected_object = self.od[index] |
| 142 | + actual_object = exported_od[index] |
| 143 | + expected_object = self.od[index] |
131 | 144 | self.assertEqual(type(actual_object), type(expected_object)) |
132 | 145 | self.assertEqual(actual_object.name, expected_object.name) |
133 | 146 |
|
134 | 147 | if type(actual_object) is canopen.objectdictionary.Variable: |
135 | 148 | expected_vars = [expected_object] |
136 | | - actual_vars = [actual_object ] |
137 | | - else : |
| 149 | + actual_vars = [actual_object] |
| 150 | + else: |
138 | 151 | expected_vars = [expected_object[idx] for idx in expected_object] |
139 | | - actual_vars = [actual_object [idx] for idx in actual_object] |
| 152 | + actual_vars = [actual_object[idx] for idx in actual_object] |
140 | 153 |
|
141 | 154 | for prop in [ |
142 | | - "allowed_baudrates", |
143 | | - "vendor_name", |
144 | | - "vendor_number", |
145 | | - "product_name", |
146 | | - "product_number", |
147 | | - "revision_number", |
148 | | - "order_code", |
149 | | - "simple_boot_up_master", |
150 | | - "simple_boot_up_slave", |
151 | | - "granularity", |
152 | | - "dynamic_channels_supported", |
153 | | - "group_messaging", |
154 | | - "nr_of_RXPDO", |
155 | | - "nr_of_TXPDO", |
156 | | - "LSS_supported", |
| 155 | + "allowed_baudrates", |
| 156 | + "vendor_name", |
| 157 | + "vendor_number", |
| 158 | + "product_name", |
| 159 | + "product_number", |
| 160 | + "revision_number", |
| 161 | + "order_code", |
| 162 | + "simple_boot_up_master", |
| 163 | + "simple_boot_up_slave", |
| 164 | + "granularity", |
| 165 | + "dynamic_channels_supported", |
| 166 | + "group_messaging", |
| 167 | + "nr_of_RXPDO", |
| 168 | + "nr_of_TXPDO", |
| 169 | + "LSS_supported", |
157 | 170 | ]: |
158 | | - self.assertEqual(getattr(self.od.device_information, prop), getattr(exported_od.device_information, prop), f"prop {prop!r} mismatch on DeviceInfo") |
159 | | - |
160 | | - |
161 | | - for evar,avar in zip(expected_vars,actual_vars): |
162 | | - self. assertEqual(getattr(avar, "data_type" , None) , getattr(evar,"data_type" ,None) , " mismatch on %04X:%X"%(evar.index, evar.subindex)) |
163 | | - self. assertEqual(getattr(avar, "default_raw", None) , getattr(evar,"default_raw",None) , " mismatch on %04X:%X"%(evar.index, evar.subindex)) |
164 | | - self. assertEqual(getattr(avar, "min" , None) , getattr(evar,"min" ,None) , " mismatch on %04X:%X"%(evar.index, evar.subindex)) |
165 | | - self. assertEqual(getattr(avar, "max" , None) , getattr(evar,"max" ,None) , " mismatch on %04X:%X"%(evar.index, evar.subindex)) |
| 171 | + self.assertEqual(getattr(self.od.device_information, prop), |
| 172 | + getattr(exported_od.device_information, prop), |
| 173 | + f"prop {prop!r} mismatch on DeviceInfo") |
| 174 | + |
| 175 | + for evar, avar in zip(expected_vars, actual_vars): |
| 176 | + self.assertEqual(getattr(avar, "data_type", None), getattr(evar, "data_type", None), |
| 177 | + " mismatch on %04X:%X" % (evar.index, evar.subindex)) |
| 178 | + self.assertEqual(getattr(avar, "default_raw", None), getattr(evar, "default_raw", None), |
| 179 | + " mismatch on %04X:%X" % (evar.index, evar.subindex)) |
| 180 | + self.assertEqual(getattr(avar, "min", None), getattr(evar, "min", None), |
| 181 | + " mismatch on %04X:%X" % (evar.index, evar.subindex)) |
| 182 | + self.assertEqual(getattr(avar, "max", None), getattr(evar, "max", None), |
| 183 | + " mismatch on %04X:%X" % (evar.index, evar.subindex)) |
166 | 184 | if doctype == "dcf": |
167 | | - self.assertEqual(getattr(avar, "value" , None) , getattr(evar,"value" ,None) , " mismatch on %04X:%X"%(evar.index, evar.subindex)) |
| 185 | + self.assertEqual(getattr(avar, "value", None), getattr(evar, "value", None), |
| 186 | + " mismatch on %04X:%X" % (evar.index, evar.subindex)) |
168 | 187 |
|
169 | 188 | self.assertEqual(self.od.comments, exported_od.comments) |
170 | | - |
|
0 commit comments