@@ -111,6 +111,7 @@ def test_variable(self):
111111 self .assertEqual (var .name , 'Producer heartbeat time' )
112112 self .assertEqual (var .data_type , canopen .objectdictionary .UNSIGNED16 )
113113 self .assertEqual (var .access_type , 'rw' )
114+ self .assertFalse (var .is_domain )
114115 self .assertEqual (var .default , 0 )
115116 self .assertFalse (var .relative )
116117
@@ -132,6 +133,7 @@ def test_record(self):
132133 self .assertEqual (var .subindex , 1 )
133134 self .assertEqual (var .data_type , canopen .objectdictionary .UNSIGNED32 )
134135 self .assertEqual (var .access_type , 'ro' )
136+ self .assertFalse (var .is_domain )
135137
136138 def test_record_with_limits (self ):
137139 int8 = self .od [0x3020 ]
@@ -166,6 +168,7 @@ def test_array_compact_subobj(self):
166168 self .assertEqual (var .subindex , 5 )
167169 self .assertEqual (var .data_type , canopen .objectdictionary .UNSIGNED32 )
168170 self .assertEqual (var .access_type , 'ro' )
171+ self .assertFalse (var .is_domain )
169172
170173 def test_explicit_name_subobj (self ):
171174 name = self .od [0x3004 ].name
@@ -197,6 +200,7 @@ def test_dummy_variable(self):
197200 self .assertEqual (var .name , 'Dummy0003' )
198201 self .assertEqual (var .data_type , canopen .objectdictionary .INTEGER16 )
199202 self .assertEqual (var .access_type , 'const' )
203+ self .assertFalse (var .is_domain )
200204 self .assertEqual (len (var ), 16 )
201205
202206 def test_dummy_variable_undefined (self ):
@@ -213,6 +217,39 @@ def test_reading_factor(self):
213217 self .assertEqual (var2 .factor , 1 )
214218 self .assertEqual (var2 .unit , '' )
215219
220+ def test_read_domain_object (self ):
221+ var = self .od [0x3063 ]
222+ self .assertIsInstance (var , canopen .objectdictionary .ODVariable )
223+ self .assertEqual (var .index , 0x3063 )
224+ self .assertEqual (var .subindex , 0 )
225+ self .assertEqual (var .name , 'DOMAIN object' )
226+ self .assertEqual (var .data_type , canopen .objectdictionary .UNSIGNED32 )
227+ self .assertEqual (var .access_type , 'rw' )
228+ self .assertTrue (var .is_domain )
229+
230+ def test_read_domain_subobject (self ):
231+ record = self .od [0x3064 ]
232+ var = record [1 ]
233+ self .assertIsInstance (var , canopen .objectdictionary .ODVariable )
234+ self .assertEqual (var .index , 0x3064 )
235+ self .assertEqual (var .subindex , 1 )
236+ self .assertEqual (var .name , 'DOMAIN sub-object' )
237+ self .assertEqual (var .data_type , canopen .objectdictionary .UNSIGNED32 )
238+ self .assertEqual (var .access_type , 'rw' )
239+ self .assertTrue (var .is_domain )
240+
241+ def test_roundtrip_domain_objects (self ):
242+ # ObjectType==DOMAIN survive an EDS export/import round-trip
243+ import io
244+ with io .StringIO () as dest :
245+ canopen .export_od (self .od , dest , 'eds' )
246+ dest .name = 'mock.eds'
247+ dest .seek (0 )
248+ od2 = canopen .import_od (dest )
249+ self .assertFalse (od2 ['Producer heartbeat time' ].is_domain )
250+ self .assertFalse (od2 ['Identity object' ]['Vendor-ID' ].is_domain )
251+ self .assertTrue (od2 [0x3063 ].is_domain )
252+ self .assertTrue (od2 [0x3064 ][1 ].is_domain )
216253
217254
218255 def test_comments (self ):
0 commit comments