|
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