コード例 #1
0
        public async Task MergesModelsWithUserDefinedTypes()
        {
            var schemas = new[] {
                "../../../models/Merge/Envelope.json",
                "../../../models/Merge/FacadePanel.json",
                "../../../models/Merge/Level.json"
            };

            var asm = await TypeGenerator.GenerateInMemoryAssemblyFromUrisAndLoadAsync(schemas);

            var facadePanelType = asm.Assembly.GetType("Elements.FacadePanel");

            Assert.NotNull(facadePanelType);
            var envelopeType = asm.Assembly.GetType("Elements.Envelope");

            Assert.NotNull(envelopeType);
            var model1 = JsonConvert.DeserializeObject <Model>(File.ReadAllText("../../../models/Merge/facade.json"));
            var count1 = model1.Elements.Count;

            var model2 = JsonConvert.DeserializeObject <Model>(File.ReadAllText("../../../models/Merge/structure.json"));
            var count2 = model2.Elements.Count;

            var merge = new Model();

            merge.AddElements(model1.Elements.Values);
            merge.AddElements(model2.Elements.Values);
            merge.ToGlTF("models/Merge.glb");
        }
コード例 #2
0
ファイル: TypeGeneratorTests.cs プロジェクト: kubim/Elements
        public async Task GeneratesInMemoryAssembly()
        {
            var uris = new[] { "https://raw.githubusercontent.com/hypar-io/Schemas/master/FacadeAnchor.json",
                               "https://raw.githubusercontent.com/hypar-io/Schemas/master/Mullion.json" };
            var asm = await TypeGenerator.GenerateInMemoryAssemblyFromUrisAndLoadAsync(uris);

            var mullionType = asm.GetType("Test.Foo.Bar.Mullion");
            var anchorType  = asm.GetType("Test.Foo.Bar.FacadeAnchor");

            Assert.NotNull(mullionType);
            Assert.NotNull(anchorType);
            Assert.NotNull(mullionType.GetProperty("CenterLine"));
            Assert.NotNull(mullionType.GetProperty("Profile"));
            Assert.NotNull(anchorType.GetProperty("Location"));

            var ctors = mullionType.GetConstructors();

            Assert.Single <ConstructorInfo>(ctors);
            var centerLine = new Line(new Vector3(0, 0), new Vector3(5, 5));
            var profile    = new Profile(Polygon.Rectangle(0.1, 0.1));
            // Profile @profile, Line @centerLine, NumericProperty @length, Transform @transform, Material @material, Representation @representation, System.Guid @id, string @name
            var t       = new Transform();
            var m       = BuiltInMaterials.Steel;
            var mullion = Activator.CreateInstance(mullionType, new object[] { profile, centerLine, new NumericProperty(0, NumericPropertyUnitType.Length), t, m, new Representation(new List <SolidOperation>()), false, Guid.NewGuid(), "Test Mullion" });
        }
コード例 #3
0
        public async Task FailsWithBadSchema()
        {
            var uris = new[] { "https://raw.githubusercontent.com/hypar-io/Schemas/master/ThisDoesntExist.json",
                               "https://raw.githubusercontent.com/hypar-io/Schemas/master/Mullion.json" };
            var result = await TypeGenerator.GenerateInMemoryAssemblyFromUrisAndLoadAsync(uris);

            Assert.False(result.Success);
            Assert.NotEmpty(result.DiagnosticResults);
        }
コード例 #4
0
        public async Task InMemoryCodeGenOfTypeWithEmbeddedType()
        {
            var    tmpPath = Path.Combine(Path.GetTempPath(), "HyparModels");
            string relEmbeddedSchemaTestPath  = RelativeSavedSchemaPath(embeddedSchemaTest, tmpPath, "embeddedSchemaTest.json");
            string relEmbeddedSchemaTestPath2 = RelativeSavedSchemaPath(embeddedSchemaTest2, tmpPath, "embeddedSchemaTest2.json");

            // Load schemas in memeory.
            var asm = await TypeGenerator.GenerateInMemoryAssemblyFromUrisAndLoadAsync(new[] { relEmbeddedSchemaTestPath, relEmbeddedSchemaTestPath2 });

            Assert.True(asm.Success);
            var facadeType = asm.Assembly.GetType("Elements.FacadePanel");

            Assert.NotNull(facadeType);
        }
コード例 #5
0
ファイル: TypeGeneratorTests.cs プロジェクト: kubim/Elements
 public async Task ThrowsWithBadSchema()
 {
     var uris = new[] { "https://raw.githubusercontent.com/hypar-io/Schemas/master/ThisDoesn'tExist.json",
                        "https://raw.githubusercontent.com/hypar-io/Schemas/master/Mullion.json" };
     await Assert.ThrowsAsync <Exception>(async() => await TypeGenerator.GenerateInMemoryAssemblyFromUrisAndLoadAsync(uris));
 }