Skip to content

Commit fb80862

Browse files
committed
completed test of eds -> protobuffer tests
1 parent 2c75776 commit fb80862

File tree

2 files changed

+90
-27
lines changed

2 files changed

+90
-27
lines changed

Tests/EDSMappingTests.cs

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -41,19 +41,6 @@ public void Test_ToProtobufferAssertConfig()
4141
MappingEDS.MapToProtobuffer(eds);
4242
}
4343
[Fact]
44-
public void Test_FromProtobufferAssertConfig()
45-
{
46-
var d = new CanOpenDevice
47-
{
48-
FileInfo = new CanOpen_FileInfo(),
49-
DeviceInfo = new CanOpen_DeviceInfo(),
50-
DeviceCommissioning = new CanOpen_DeviceCommissioning()
51-
};
52-
53-
//Assert is called inside the map function
54-
MappingEDS.MapFromProtobuffer(d);
55-
}
56-
[Fact]
5744
public void Test_ToProtobufferFileInfo()
5845
{
5946
var eds = new EDSsharp
@@ -150,7 +137,7 @@ public void Test_ToProtobufferDeviceCommissioning()
150137
[InlineData(OdObject.Types.ObjectType.Unspecified, ObjectType.DOMAIN)]
151138
[InlineData(OdObject.Types.ObjectType.Unspecified, ObjectType.NULL)]
152139
[InlineData(OdObject.Types.ObjectType.Unspecified, ObjectType.UNKNOWN)]
153-
void Test_ToProtobufferODObject(OdObject.Types.ObjectType objTypeProto, ObjectType objTypeEDS)
140+
public void Test_ToProtobufferODObject(OdObject.Types.ObjectType objTypeProto, ObjectType objTypeEDS)
154141
{
155142
var eds = new EDSsharp
156143
{
@@ -194,7 +181,7 @@ void Test_ToProtobufferODObject(OdObject.Types.ObjectType objTypeProto, ObjectTy
194181
[InlineData(OdSubObject.Types.DataType.Unsigned48, DataType.UNSIGNED48)]
195182
[InlineData(OdSubObject.Types.DataType.Unsigned56, DataType.UNSIGNED56)]
196183
[InlineData(OdSubObject.Types.DataType.Unsigned64, DataType.UNSIGNED64)]
197-
void Test_ToProtobufferSubODObjectDatatype(OdSubObject.Types.DataType datatypeProto, DataType datatypeEDS)
184+
public void Test_ToProtobufferSubODObjectDatatype(OdSubObject.Types.DataType datatypeProto, DataType datatypeEDS)
198185
{
199186
var eds = new EDSsharp
200187
{
@@ -216,15 +203,16 @@ void Test_ToProtobufferSubODObjectDatatype(OdSubObject.Types.DataType datatypePr
216203
var tmp = MappingEDS.MapToProtobuffer(eds);
217204
Assert.Equal(datatypeProto, tmp.Objects[od.Index.ToString()].SubObjects["0"].Type);
218205
}
206+
219207
[Theory]
220208
[InlineData(OdSubObject.Types.AccessPDO.Tr, OdSubObject.Types.AccessSDO.Rw, EDSsharp.AccessType.rw)]
221-
[InlineData(OdSubObject.Types.AccessPDO.T, OdSubObject.Types.AccessSDO.Ro, EDSsharp.AccessType.ro)]
222-
[InlineData(OdSubObject.Types.AccessPDO.R, OdSubObject.Types.AccessSDO.Wo, EDSsharp.AccessType.wo)]
209+
[InlineData(OdSubObject.Types.AccessPDO.No, OdSubObject.Types.AccessSDO.Ro, EDSsharp.AccessType.ro)]
210+
[InlineData(OdSubObject.Types.AccessPDO.No, OdSubObject.Types.AccessSDO.Wo, EDSsharp.AccessType.wo)]
223211
[InlineData(OdSubObject.Types.AccessPDO.T, OdSubObject.Types.AccessSDO.Rw, EDSsharp.AccessType.rwr)]
224212
[InlineData(OdSubObject.Types.AccessPDO.R, OdSubObject.Types.AccessSDO.Rw, EDSsharp.AccessType.rww)]
225213
[InlineData(OdSubObject.Types.AccessPDO.R, OdSubObject.Types.AccessSDO.Ro, EDSsharp.AccessType.@const)]
226214
[InlineData(OdSubObject.Types.AccessPDO.No, OdSubObject.Types.AccessSDO.No, EDSsharp.AccessType.UNKNOWN)]
227-
void Test_ToProtobufferSubODObjectAccesstype(OdSubObject.Types.AccessPDO accessPDOProto, OdSubObject.Types.AccessSDO accessSDOProto, EDSsharp.AccessType datatypeEDS)
215+
public void Test_ToProtobufferSubODObjectAccesstype(OdSubObject.Types.AccessPDO accessPDOProto, OdSubObject.Types.AccessSDO accessSDOProto, EDSsharp.AccessType datatypeEDS)
228216
{
229217
var eds = new EDSsharp
230218
{
@@ -279,5 +267,18 @@ public void Test_ToProtobufferSubODObjectMembers()
279267
Assert.Equal(sub.LowLimit, tmp.Objects[od.Index.ToString()].SubObjects["0"].LowLimit);
280268
Assert.Equal(sub.defaultvalue, tmp.Objects[od.Index.ToString()].SubObjects["0"].DefaultValue);
281269
}
270+
[Fact]
271+
public void Test_FromProtobufferAssertConfig()
272+
{
273+
var d = new CanOpenDevice
274+
{
275+
FileInfo = new CanOpen_FileInfo(),
276+
DeviceInfo = new CanOpen_DeviceInfo(),
277+
DeviceCommissioning = new CanOpen_DeviceCommissioning()
278+
};
279+
280+
//Assert is called inside the map function
281+
MappingEDS.MapFromProtobuffer(d);
282+
}
282283
}
283284
}

libEDSsharp/CanOpenEDSMapping.cs

Lines changed: 71 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -150,12 +150,14 @@ public static CanOpenDevice MapToProtobuffer(EDSsharp source)
150150
.ForMember(dest => dest.Type, opt => opt.MapFrom(src => src.objecttype))
151151
.ForMember(dest => dest.CountLabel, opt => opt.MapFrom(src => src.Label));
152152
cfg.CreateMap<ObjectType, OdObject.Types.ObjectType>().ConvertUsing<ODTypeResolver>();
153+
cfg.CreateMap<EDSsharp.AccessType, OdSubObject.Types.AccessSDO>().ConvertUsing<ODSDOAccessTypeResolver>();
154+
cfg.CreateMap<EDSsharp.AccessType, OdSubObject.Types.AccessPDO>().ConvertUsing<ODPDOAccessTypeResolver>();
153155
cfg.CreateMap<ODentry, OdSubObject>()
154156
.ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.parameter_name))
155157
.ForMember(dest => dest.Alias, opt => opt.Ignore())
156158
.ForMember(dest => dest.Type, opt => opt.MapFrom(src => src.datatype))
157-
.ForMember(dest => dest.Sdo, opt => opt.MapFrom(src => src.AccessSDO()))
158-
.ForMember(dest => dest.Pdo, opt => opt.MapFrom(src => src.AccessPDO()))
159+
.ForMember(dest => dest.Sdo, opt => opt.MapFrom(src => src.accesstype))
160+
.ForMember(dest => dest.Pdo, opt => opt.MapFrom(src => src.accesstype))
159161
.ForMember(dest => dest.Srdo, opt => opt.Ignore())
160162
.ForMember(dest => dest.StringLengthMin, opt => opt.MapFrom(src => src.Lengthofstring));
161163
});
@@ -166,7 +168,6 @@ public static CanOpenDevice MapToProtobuffer(EDSsharp source)
166168
}
167169
}
168170

169-
170171
/// <summary>
171172
/// Helper class to convert EDS date and time into datetime used in the protobuffer timestand (datetime)
172173
/// </summary>
@@ -233,16 +234,16 @@ public Timestamp Resolve(FileInfo source, CanOpen_FileInfo destination, Timestam
233234
}
234235

235236
/// <summary>
236-
/// Helper class to convert Enum types
237+
/// Helper class to convert object type enum
237238
/// </summary>
238239
/// Checkout AutoMapper.Extensions.EnumMapping when .net framework is gone
239240
public class ODTypeResolver : ITypeConverter<ObjectType, OdObject.Types.ObjectType>
240241
{
241242
/// <summary>
242-
/// Resolver to convert eds date and time into protobuffer timestamp (datetime)
243+
/// Resolver to convert object types
243244
/// </summary>
244-
/// <param name="source">source EDS fileinfo object</param>
245-
/// <param name="destination">protobuffer fileinfo object</param>
245+
/// <param name="source">EDS object type object</param>
246+
/// <param name="destination">protobuffer object type</param>
246247
/// <param name="member">result object</param>
247248
/// <param name="context">resolve context</param>
248249
/// <returns>result </returns>
@@ -264,7 +265,68 @@ public OdObject.Types.ObjectType Convert(ObjectType source, OdObject.Types.Objec
264265
default:
265266
return OdObject.Types.ObjectType.Unspecified;
266267
}
267-
268268
}
269269
}
270-
}
270+
/// <summary>
271+
/// Helper class to convert Enum types
272+
/// </summary>
273+
/// Checkout AutoMapper.Extensions.EnumMapping when .net framework is gone
274+
public class ODSDOAccessTypeResolver : ITypeConverter<EDSsharp.AccessType, OdSubObject.Types.AccessSDO>
275+
{
276+
/// <summary>
277+
/// Resolver to convert eds access into SDO access type
278+
/// </summary>
279+
/// <param name="source">EDS accesstype</param>
280+
/// <param name="destination">protobuffer sdo access type</param>
281+
/// <param name="member">result object</param>
282+
/// <param name="context">resolve context</param>
283+
/// <returns>result </returns>
284+
public OdSubObject.Types.AccessSDO Convert(EDSsharp.AccessType source, OdSubObject.Types.AccessSDO destination, ResolutionContext context)
285+
{
286+
switch (source)
287+
{
288+
case EDSsharp.AccessType.rw:
289+
case EDSsharp.AccessType.rwr:
290+
case EDSsharp.AccessType.rww:
291+
return OdSubObject.Types.AccessSDO.Rw;
292+
case EDSsharp.AccessType.ro:
293+
case EDSsharp.AccessType.@const:
294+
return OdSubObject.Types.AccessSDO.Ro;
295+
case EDSsharp.AccessType.wo:
296+
return OdSubObject.Types.AccessSDO.Wo;
297+
case EDSsharp.AccessType.UNKNOWN:
298+
default:
299+
return OdSubObject.Types.AccessSDO.No;
300+
}
301+
}
302+
}
303+
public class ODPDOAccessTypeResolver : ITypeConverter<EDSsharp.AccessType, OdSubObject.Types.AccessPDO>
304+
{
305+
/// <summary>
306+
/// Resolver to convert eds access into PDO access type
307+
/// </summary>
308+
/// <param name="source">EDS accesstype</param>
309+
/// <param name="destination">protobuffer pdo access type</param>
310+
/// <param name="member">result object</param>
311+
/// <param name="context">resolve context</param>
312+
/// <returns>result </returns>
313+
public OdSubObject.Types.AccessPDO Convert(EDSsharp.AccessType source, OdSubObject.Types.AccessPDO destination, ResolutionContext context)
314+
{
315+
switch (source)
316+
{
317+
case EDSsharp.AccessType.rw:
318+
return OdSubObject.Types.AccessPDO.Tr;
319+
case EDSsharp.AccessType.rwr:
320+
return OdSubObject.Types.AccessPDO.T;
321+
case EDSsharp.AccessType.rww:
322+
case EDSsharp.AccessType.@const:
323+
return OdSubObject.Types.AccessPDO.R;
324+
case EDSsharp.AccessType.ro:
325+
case EDSsharp.AccessType.wo:
326+
case EDSsharp.AccessType.UNKNOWN:
327+
default:
328+
return OdSubObject.Types.AccessPDO.No;
329+
}
330+
}
331+
}
332+
}

0 commit comments

Comments
 (0)