public void 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" }; Assert.Throws <Exception>(() => TypeGenerator.GenerateInMemoryAssemblyFromUrisAndLoad(uris)); }
public void MergesModelsWithUserDefinedTypes() { var schemas = new[] { "../../../models/Merge/Envelope.json", "../../../models/Merge/FacadePanel.json", "../../../models/Merge/Level.json" }; var asm = TypeGenerator.GenerateInMemoryAssemblyFromUrisAndLoad(schemas); var facadePanelType = asm.GetType("Elements.FacadePanel"); Assert.NotNull(facadePanelType); var envelopeType = asm.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"); }
public void 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 = TypeGenerator.GenerateInMemoryAssemblyFromUrisAndLoad(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>()), Guid.NewGuid(), "Test Mullion" }); }