public void TestClassLoader() { var classMetadataProvider = new ClassMetadataProvider(); var typeProvider = new TypeProvider(classMetadataProvider); var classLoader = new ClassLoader(typeProvider, classMetadataProvider); var intType = typeProvider.FindPrimitiveType(PrimitiveTypes.Int); var classDef = new SharpJIT.Loader.Data.Class( "Point", new List <SharpJIT.Loader.Data.Field>() { new SharpJIT.Loader.Data.Field("x", intType.Name, SharpJIT.Core.Objects.AccessModifier.Public), new SharpJIT.Loader.Data.Field("y", intType.Name, SharpJIT.Core.Objects.AccessModifier.Public) }); classLoader.LoadClasses(new List <SharpJIT.Loader.Data.Class>() { classDef }); var classMetadata = classMetadataProvider.GetMetadata(classDef.Name); Assert.IsNotNull(classMetadata); Assert.AreEqual(classDef.Name, classMetadata.Name); var fields = classMetadata.Fields.ToList(); Assert.AreEqual(2, fields.Count); Assert.AreEqual("x", fields[0].Name); Assert.AreEqual(intType, fields[0].Type); Assert.AreEqual("y", fields[1].Name); Assert.AreEqual(intType, fields[1].Type); }
public void TestClassLoader2() { var classMetadataProvider = new ClassMetadataProvider(); var typeProvider = new TypeProvider(classMetadataProvider); var classLoader = new ClassLoader(typeProvider, classMetadataProvider); var intType = typeProvider.FindPrimitiveType(PrimitiveTypes.Int); var listClassDef = new SharpJIT.Loader.Data.Class( "List", new List <SharpJIT.Loader.Data.Field>() { new SharpJIT.Loader.Data.Field("head", "Ref.Point", SharpJIT.Core.Objects.AccessModifier.Public) }); var pointClassDef = new SharpJIT.Loader.Data.Class( "Point", new List <SharpJIT.Loader.Data.Field>() { new SharpJIT.Loader.Data.Field("x", intType.Name, SharpJIT.Core.Objects.AccessModifier.Public), new SharpJIT.Loader.Data.Field("y", intType.Name, SharpJIT.Core.Objects.AccessModifier.Public) }); classLoader.LoadClasses(new List <SharpJIT.Loader.Data.Class>() { listClassDef, pointClassDef }); Assert.IsNotNull(classMetadataProvider.GetMetadata(pointClassDef.Name)); var listMetadata = classMetadataProvider.GetMetadata(listClassDef.Name); Assert.IsNotNull(listMetadata); var pointType = typeProvider.FindType("Ref.Point", false); Assert.IsNotNull(pointType); Assert.AreEqual(pointType, listMetadata.Fields.First().Type); }