diff --git a/capnpc-csharp.tests/Properties/Resources.Designer.cs b/capnpc-csharp.tests/Properties/Resources.Designer.cs index d7a8a0c..a67166c 100644 --- a/capnpc-csharp.tests/Properties/Resources.Designer.cs +++ b/capnpc-csharp.tests/Properties/Resources.Designer.cs @@ -59,5 +59,15 @@ namespace capnpc_csharp.Tests.Properties { resourceCulture = value; } } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] UnitTest1_capnp { + get { + object obj = ResourceManager.GetObject("UnitTest1_capnp", resourceCulture); + return ((byte[])(obj)); + } + } } } diff --git a/capnpc-csharp.tests/Properties/Resources.resx b/capnpc-csharp.tests/Properties/Resources.resx index 2f96abe..bc2d6ee 100644 --- a/capnpc-csharp.tests/Properties/Resources.resx +++ b/capnpc-csharp.tests/Properties/Resources.resx @@ -118,4 +118,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\UnitTest1.capnp.bin;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + \ No newline at end of file diff --git a/capnpc-csharp.tests/Resources/UnitTest1.capnp.bin b/capnpc-csharp.tests/Resources/UnitTest1.capnp.bin new file mode 100644 index 0000000..b6ecdf8 Binary files /dev/null and b/capnpc-csharp.tests/Resources/UnitTest1.capnp.bin differ diff --git a/capnpc-csharp.tests/UnitTest1.capnp b/capnpc-csharp.tests/UnitTest1.capnp new file mode 100644 index 0000000..125190e --- /dev/null +++ b/capnpc-csharp.tests/UnitTest1.capnp @@ -0,0 +1,5 @@ +@0x93d3c4d19cd84a4c; + +enum Enumerant { + byte @0; +} \ No newline at end of file diff --git a/capnpc-csharp.tests/UnitTests.cs b/capnpc-csharp.tests/UnitTests.cs new file mode 100644 index 0000000..0d10a48 --- /dev/null +++ b/capnpc-csharp.tests/UnitTests.cs @@ -0,0 +1,55 @@ +using capnpc_csharp.Tests.Properties; +using Capnp; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using System.Collections.Generic; +using System.IO; +using System.Linq; + +namespace CapnpC +{ + [TestClass] + public class UnitTests + { + + [TestMethod] + public void Test00Enumerant() + { + var model = Load(Resources.UnitTest1_capnp); + Assert.AreEqual("@byte", GetTypeDef(0xc8461867c409f5d4, model).Enumerants[0].Literal); + } + + static Model.TypeDefinition GetTypeDef(ulong id, Model.SchemaModel model) + { + foreach (var defs in model.FilesToGenerate.Select(f => f.NestedTypes)) + { + if (GetTypeDef(id, defs) is Model.TypeDefinition def) return def; + } + return null; + } + + static Model.TypeDefinition GetTypeDef(ulong id, IEnumerable defs) + { + foreach (var def in defs) + { + if (def.Id == id) return def; + var sub = GetTypeDef(id, def.NestedTypes); + if (sub != null) return sub; + } + return null; + } + + static Model.SchemaModel Load(byte[] data) + { + WireFrame segments; + var input = new MemoryStream(data); + using (input) + { + segments = Framing.ReadSegments(input); + } + var dec = DeserializerState.CreateRoot(segments); + var reader = Schema.CodeGeneratorRequest.Reader.Create(dec); + var model = Model.SchemaModel.Create(reader); + return model; + } + } +} diff --git a/capnpc-csharp.tests/capnpc-csharp.tests.csproj b/capnpc-csharp.tests/capnpc-csharp.tests.csproj index a8047be..3be689f 100644 --- a/capnpc-csharp.tests/capnpc-csharp.tests.csproj +++ b/capnpc-csharp.tests/capnpc-csharp.tests.csproj @@ -19,6 +19,7 @@ +