-
Notifications
You must be signed in to change notification settings - Fork 13
/
DiscriminatorTests.cs
51 lines (47 loc) · 2.13 KB
/
DiscriminatorTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using Dahomey.Cbor.Attributes;
using Xunit;
namespace Dahomey.Cbor.Tests
{
public class DiscriminatorTests
{
[Fact]
public void ReadPolymorphicObject()
{
const string hexBuffer = "A16A426173654F626A656374A3625F746A4E616D654F626A656374644E616D6563666F6F62496401";
BaseObjectHolder obj = Helper.Read<BaseObjectHolder>(hexBuffer);
}
[Theory]
[InlineData(CborDiscriminatorPolicy.Default, "A26A426173654F626A656374A3625F746A4E616D654F626A656374644E616D6563666F6F624964016A4E616D654F626A656374A2644E616D656362617262496402")]
[InlineData(CborDiscriminatorPolicy.Auto, "A26A426173654F626A656374A3625F746A4E616D654F626A656374644E616D6563666F6F624964016A4E616D654F626A656374A2644E616D656362617262496402")]
[InlineData(CborDiscriminatorPolicy.Never, "A26A426173654F626A656374A2644E616D6563666F6F624964016A4E616D654F626A656374A2644E616D656362617262496402")]
[InlineData(CborDiscriminatorPolicy.Always, "A26A426173654F626A656374A3625F746A4E616D654F626A656374644E616D6563666F6F624964016A4E616D654F626A656374A3625F746A4E616D654F626A656374644E616D656362617262496402")]
public void WritePolymorphicObject(CborDiscriminatorPolicy discriminatorPolicy, string hexBuffer)
{
CborOptions options = new CborOptions();
options.Registry.ObjectMappingRegistry.Register<NameObject>(om =>
{
om.AutoMap();
om.SetDiscriminatorPolicy(discriminatorPolicy);
});
options.Registry.ObjectMappingRegistry.Register<BaseObject>(om =>
{
om.AutoMap();
om.SetDiscriminatorPolicy(discriminatorPolicy);
});
BaseObjectHolder obj = new BaseObjectHolder
{
BaseObject = new NameObject
{
Id = 1,
Name = "foo"
},
NameObject = new NameObject
{
Id = 2,
Name = "bar"
}
};
Helper.TestWrite(obj, hexBuffer, null, options);
}
}
}