public void TestImplyIndicies()
        {
            TypeMetadataBuilder <PoffedImpliedIndicies>             builder = new TypeMetadataBuilder <PoffedImpliedIndicies>();
            IVisitor <TypeMetadataBuilder <PoffedImpliedIndicies> > visitor = new AnnotationVisitor <TypeMetadataBuilder <PoffedImpliedIndicies>, PoffedImpliedIndicies>(true);

            builder.SetTypeId(1002);
            builder.Accept(visitor, typeof(PoffedImpliedIndicies));

            ITypeMetadata <PoffedImpliedIndicies> tmd = builder.Build();

            Assert.AreEqual(1002, tmd.Key.TypeId);
            Assert.AreEqual(2, tmd.GetAttribute("lastName").Index);
            Assert.AreEqual(1, tmd.GetAttribute("firstName").Index);
            Assert.AreEqual(0, tmd.GetAttribute("age").Index);
        }
        public void TestVisit()
        {
            TypeMetadataBuilder <Poffed>             builder = new TypeMetadataBuilder <Poffed>();
            IVisitor <TypeMetadataBuilder <Poffed> > visitor = new AnnotationVisitor <TypeMetadataBuilder <Poffed>, Poffed>();

            builder.SetTypeId(1001);
            builder.Accept(visitor, typeof(Poffed));

            ITypeMetadata <Poffed> tmd = builder.Build();

            Assert.AreEqual(1001, tmd.Key.TypeId);
            Assert.AreEqual(0, tmd.GetAttribute("lastName").Index);
            Assert.AreEqual(1, tmd.GetAttribute("age").Index);
            Assert.AreEqual(2, tmd.GetAttribute("firstName").Index);
        }
        public void TestAccessorAnnotations()
        {
            TypeMetadataBuilder <PoffedMethodInspection>             builder = new TypeMetadataBuilder <PoffedMethodInspection>();
            IVisitor <TypeMetadataBuilder <PoffedMethodInspection> > visitor = new AnnotationVisitor <TypeMetadataBuilder <PoffedMethodInspection>, PoffedMethodInspection>(true);

            builder.SetTypeId(1005);
            builder.Accept(visitor, typeof(PoffedMethodInspection));

            ITypeMetadata <PoffedMethodInspection> tmd = builder.Build();

            Assert.AreEqual(1005, tmd.Key.TypeId);
            Assert.AreEqual(0, tmd.GetAttribute("adult").Index);
            Assert.AreEqual(1, tmd.GetAttribute("age").Index);
            Assert.AreEqual(2, tmd.GetAttribute("firstName").Index);
            Assert.AreEqual(3, tmd.GetAttribute("lastName").Index);
        }
        public void TestCustomCodec()
        {
            TypeMetadataBuilder <PoffedCustomCodec>             builder = new TypeMetadataBuilder <PoffedCustomCodec>();
            IVisitor <TypeMetadataBuilder <PoffedCustomCodec> > visitor = new AnnotationVisitor <TypeMetadataBuilder <PoffedCustomCodec>, PoffedCustomCodec>(true);

            builder.SetTypeId(1004);
            builder.Accept(visitor, typeof(PoffedCustomCodec));

            ITypeMetadata <PoffedCustomCodec> tmd = builder.Build();

            Assert.AreEqual(1004, tmd.Key.TypeId);
            Assert.AreEqual(0, tmd.GetAttribute("age").Index);
            Assert.AreEqual(1, tmd.GetAttribute("aliases").Index);
            Assert.AreEqual(2, tmd.GetAttribute("firstName").Index);
            Assert.AreEqual(3, tmd.GetAttribute("lastName").Index);
            Assert.IsInstanceOf(typeof(LinkedListCodec <string>), tmd.GetAttribute("aliases").Codec);
        }
        public void Builder()
        {
            var builder = new TypeMetadataBuilder <object>();
            ITypeMetadata <object> tmd = builder.SetType(typeof(object))
                                         .SetHash("TestDomain".GetHashCode())
                                         .SetTypeId(1234)
                                         .AddAttribute(builder.NewAttribute()
                                                       .SetIndex(0)
                                                       .SetName("normal")
                                                       .SetVersion(0).Build()).Build();

            Assert.AreEqual(1234, tmd.Key.TypeId);
            Assert.IsTrue(tmd.Key.Hash != 0);
            Assert.IsNotNull(tmd.GetAttribute("normal"));
            Assert.AreEqual("normal", tmd.GetAttribute("normal").Name);
            Assert.AreEqual(0, tmd.GetAttribute("normal").Index);
            Assert.AreEqual(0, tmd.GetAttribute("normal").VersionId);
        }
Exemplo n.º 6
0
        public void TestClassMetadata()
        {
            MethodInfo method = typeof(ClassMetadataDescribable).GetMethod("GetName");

            var builder = new ClassMetadataBuilder <ClassMetadataDescribable>();
            ITypeMetadata <ClassMetadataDescribable> tmd = builder.SetClass(typeof(ClassMetadataDescribable))
                                                           .SetHash("TestDomain".GetHashCode())
                                                           .SetTypeId(1234)
                                                           .AddAttribute(builder.NewAttribute()
                                                                         .SetIndex(0)
                                                                         .SetName("name")
                                                                         .SetCodec(Codecs.DEFAULT_CODEC)
                                                                         .SetInvocationStrategy(new InvocationStrategies.MethodInvcationStrategy <ClassMetadataDescribable>(method))
                                                                         .SetVersion(0).Build()).Build();

            ITypeMetadata <ClassMetadataDescribable> tmd2 = builder.SetClass(typeof(ClassMetadataDescribable))
                                                            .SetHash("TestDomain".GetHashCode())
                                                            .SetTypeId(1234)
                                                            .AddAttribute(builder.NewAttribute()
                                                                          .SetIndex(0)
                                                                          .SetName("name")
                                                                          .SetCodec(Codecs.DEFAULT_CODEC)
                                                                          .SetInvocationStrategy(new InvocationStrategies.MethodInvcationStrategy <ClassMetadataDescribable>(method))
                                                                          .SetVersion(0).Build()).Build();

            Assert.AreEqual(1234, tmd.GetKey().GetTypeId());
            Assert.IsTrue(tmd.GetKey().GetHash() != 0);
            Assert.IsNotNull(tmd.GetAttribute("name"));
            Assert.AreEqual("name", tmd.GetAttribute("name").GetName());
            Assert.AreEqual(0, tmd.GetAttribute("name").GetIndex());
            Assert.AreEqual(0, tmd.GetAttribute("name").GetVersion());
            Assert.AreEqual(tmd, tmd2);
            Assert.AreEqual(tmd.GetHashCode(), tmd2.GetHashCode());

            ClassMetadataDescribable cmdd = new ClassMetadataDescribable("augusta");

            Assert.AreEqual("augusta", tmd.GetAttribute("name").Get(cmdd));
            tmd.GetAttribute("name").Set(cmdd, "ada");
            Assert.AreEqual("ada", tmd.GetAttribute("name").Get(cmdd));
            Assert.IsInstanceOf(typeof(Codecs.DefaultCodec), tmd.GetAttribute("name").GetCodec());
            Assert.IsTrue(tmd.GetAttributes().MoveNext());
            Assert.IsInstanceOf(typeof(ClassMetadataDescribable), tmd.NewInstance());

            object a = (object)"dasd";
        }