コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }