public void TestClassAttributeSort() { var builder = new TypeMetadataBuilder <object>(); var attrBuilder = builder.NewAttribute(); IAttributeMetadata <object>[] expected = new IAttributeMetadata <object>[] { attrBuilder.SetVersion(0).SetIndex(0).SetName("c").Build(), attrBuilder.SetVersion(0).SetIndex(1).SetName("a").Build(), attrBuilder.SetVersion(0).SetIndex(2).SetName("b").Build(), attrBuilder.SetVersion(1).SetIndex(3).SetName("e").Build(), attrBuilder.SetVersion(1).SetIndex(-1).SetName("d").Build(), attrBuilder.SetVersion(1).SetIndex(-1).SetName("f").Build() }; builder.AddAttribute(expected[3]); builder.AddAttribute(expected[1]); builder.AddAttribute(expected[5]); builder.AddAttribute(expected[0]); builder.AddAttribute(expected[4]); builder.AddAttribute(expected[2]); TypeMetadata <object> cmd = builder.Build(); Assert.AreEqual(0, cmd.GetAttribute("c").Index); Assert.AreEqual(1, cmd.GetAttribute("a").Index); Assert.AreEqual(2, cmd.GetAttribute("b").Index); Assert.AreEqual(3, cmd.GetAttribute("e").Index); Assert.AreEqual(4, cmd.GetAttribute("d").Index); Assert.AreEqual(5, cmd.GetAttribute("f").Index); }
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); }
public void TestClassMetadata() { MethodInfo method = typeof(ClassMetadataDescribable).GetMethod("GetName"); var builder = new TypeMetadataBuilder <ClassMetadataDescribable>(); ITypeMetadata <ClassMetadataDescribable> tmd = builder.SetType(typeof(ClassMetadataDescribable)) .SetHash("TestDomain".GetHashCode()) .SetTypeId(1234) .AddAttribute(builder.NewAttribute() .SetIndex(0) .SetName("name") .SetCodec(Codecs.DEFAULT_CODEC) .SetInvocationStrategy(new InvocationStrategies.MethodInvocationStrategy <ClassMetadataDescribable>(method)) .SetVersion(0).Build()).Build(); ITypeMetadata <ClassMetadataDescribable> tmd2 = builder.SetType(typeof(ClassMetadataDescribable)) .SetHash("TestDomain".GetHashCode()) .SetTypeId(1234) .AddAttribute(builder.NewAttribute() .SetIndex(0) .SetName("name") .SetCodec(Codecs.DEFAULT_CODEC) .SetInvocationStrategy(new InvocationStrategies.MethodInvocationStrategy <ClassMetadataDescribable>(method)) .SetVersion(0).Build()).Build(); Assert.AreEqual(1234, tmd.Key.TypeId); Assert.IsTrue(tmd.Key.Hash != 0); Assert.IsNotNull(tmd.GetAttribute("name")); Assert.AreEqual("name", tmd.GetAttribute("name").Name); Assert.AreEqual(0, tmd.GetAttribute("name").Index); Assert.AreEqual(0, tmd.GetAttribute("name").VersionId); 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").Codec); Assert.IsTrue(tmd.GetAttributes().MoveNext()); Assert.IsInstanceOf(typeof(ClassMetadataDescribable), tmd.NewInstance()); }