public void MultiUseEnums() { var c = AllPublicDescriber <MultiEnum> .GetForUse(true); Assert.AreEqual(typeof(ClassTypeDescription), c.GetType()); var asClass = (ClassTypeDescription)c; Assert.AreEqual(3, asClass.Members.Count); Assert.AreEqual(typeof(EnumTypeDescription), asClass.Members["Foo"].GetType()); Assert.AreEqual(typeof(BackReferenceTypeDescription), asClass.Members["Bar"].GetType()); Assert.AreEqual(typeof(ClassTypeDescription), asClass.Members["Fizz"].GetType()); var sub = (ClassTypeDescription)asClass.Members["Fizz"]; var bar = (BackReferenceTypeDescription)asClass.Members["Bar"]; Assert.AreEqual(2, sub.Members.Count); Assert.AreEqual(typeof(BackReferenceTypeDescription), sub.Members["Outer"].GetType()); Assert.AreEqual(typeof(NullableTypeDescription), sub.Members["Buzz"].GetType()); var buzz = (NullableTypeDescription)sub.Members["Buzz"]; Assert.AreEqual(typeof(BackReferenceTypeDescription), buzz.InnerType.GetType()); var buzzInner = (BackReferenceTypeDescription)buzz.InnerType; }
public void List() { var ints = AllPublicDescriber <List <int> > .Get(); Assert.AreEqual(typeof(ListTypeDescription), ints.GetType()); Assert.AreEqual(SimpleTypeDescription.Int, (ints as ListTypeDescription).Contains); var chars = AllPublicDescriber <char[]> .Get(); Assert.AreEqual(typeof(ListTypeDescription), chars.GetType()); Assert.AreEqual(SimpleTypeDescription.Char, (chars as ListTypeDescription).Contains); }
public void Dictionary() { var strToStr = AllPublicDescriber <Dictionary <string, string> > .Get(); Assert.AreEqual(typeof(DictionaryTypeDescription), strToStr.GetType()); Assert.AreEqual(SimpleTypeDescription.String, (strToStr as DictionaryTypeDescription).KeyType); Assert.AreEqual(SimpleTypeDescription.String, (strToStr as DictionaryTypeDescription).ValueType); var strToInt = AllPublicDescriber <Dictionary <string, int> > .Get(); Assert.AreEqual(typeof(DictionaryTypeDescription), strToInt.GetType()); Assert.AreEqual(SimpleTypeDescription.String, (strToInt as DictionaryTypeDescription).KeyType); Assert.AreEqual(SimpleTypeDescription.Int, (strToInt as DictionaryTypeDescription).ValueType); }
public void Class() { var c = AllPublicDescriber <Dummy> .Get(); Assert.AreEqual(typeof(ClassTypeDescription), c.GetType()); var asClass = c as ClassTypeDescription; Assert.AreEqual(3, asClass.Members.Count); Assert.IsTrue(asClass.Members.ContainsKey("Str")); Assert.IsTrue(asClass.Members.ContainsKey("Int")); Assert.IsTrue(asClass.Members.ContainsKey("Double")); Assert.AreEqual(SimpleTypeDescription.String, asClass.Members["Str"]); Assert.AreEqual(SimpleTypeDescription.Int, asClass.Members["Int"]); Assert.AreEqual(SimpleTypeDescription.Double, asClass.Members["Double"]); }
public void Simple() { Assert.AreEqual(SimpleTypeDescription.Long, AllPublicDescriber <long> .Get()); Assert.AreEqual(SimpleTypeDescription.ULong, AllPublicDescriber <ulong> .Get()); Assert.AreEqual(SimpleTypeDescription.Int, AllPublicDescriber <int> .Get()); Assert.AreEqual(SimpleTypeDescription.UInt, AllPublicDescriber <uint> .Get()); Assert.AreEqual(SimpleTypeDescription.Short, AllPublicDescriber <short> .Get()); Assert.AreEqual(SimpleTypeDescription.UShort, AllPublicDescriber <ushort> .Get()); Assert.AreEqual(SimpleTypeDescription.Byte, AllPublicDescriber <byte> .Get()); Assert.AreEqual(SimpleTypeDescription.SByte, AllPublicDescriber <sbyte> .Get()); Assert.AreEqual(SimpleTypeDescription.Char, AllPublicDescriber <char> .Get()); Assert.AreEqual(SimpleTypeDescription.String, AllPublicDescriber <string> .Get()); Assert.AreEqual(SimpleTypeDescription.Decimal, AllPublicDescriber <decimal> .Get()); Assert.AreEqual(SimpleTypeDescription.Double, AllPublicDescriber <double> .Get()); Assert.AreEqual(SimpleTypeDescription.Float, AllPublicDescriber <float> .Get()); }
public void CircularClass() { var c = AllPublicDescriber <Circular> .GetForUse(true); Assert.AreEqual(typeof(ClassTypeDescription), c.GetType()); var asClass = c as ClassTypeDescription; Assert.AreEqual(2, asClass.Members.Count); Assert.IsTrue(asClass.Members.ContainsKey("Str")); Assert.IsTrue(asClass.Members.ContainsKey("Next")); Assert.AreEqual(SimpleTypeDescription.String, asClass.Members["Str"]); var backRef = asClass.Members["Next"] as BackReferenceTypeDescription; Assert.IsNotNull(backRef); Assert.AreEqual(asClass.Id, backRef.Id); }
internal static void GetDescriptionAndBuilder <T>(IncludedMembers members, IncludedVisibility visibility, out TypeDescription description, out POCOBuilder builder) { if (visibility == IncludedVisibility.Public) { if (members == (IncludedMembers.Properties | IncludedMembers.Fields)) { description = AllPublicDescriber <T> .GetForUse(true); builder = POCOBuilder <T, AllPublicDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Fields) { description = FieldsPublicDescriber <T> .GetForUse(true); builder = POCOBuilder <T, FieldsPublicDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Properties) { description = PropertiesPublicDescriber <T> .GetForUse(true); builder = POCOBuilder <T, PropertiesPublicDescriber <T> > .GetMapper(); return; } throw new ArgumentOutOfRangeException("members"); } if (visibility == (IncludedVisibility.Public | IncludedVisibility.Internal)) { if (members == (IncludedMembers.Properties | IncludedMembers.Fields)) { description = AllPublicInternalDescriber <T> .GetForUse(true); builder = POCOBuilder <T, AllPublicInternalDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Fields) { description = FieldsPublicInternalDescriber <T> .GetForUse(true); builder = POCOBuilder <T, FieldsPublicInternalDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Properties) { description = PropertiesPublicInternalDescriber <T> .GetForUse(true); builder = POCOBuilder <T, PropertiesPublicInternalDescriber <T> > .GetMapper(); return; } throw new ArgumentOutOfRangeException("members"); } if (visibility == (IncludedVisibility.Public | IncludedVisibility.Protected)) { if (members == (IncludedMembers.Properties | IncludedMembers.Fields)) { description = AllPublicProtectedDescriber <T> .GetForUse(true); builder = POCOBuilder <T, AllPublicProtectedDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Fields) { description = FieldsPublicProtectedDescriber <T> .GetForUse(true); builder = POCOBuilder <T, FieldsPublicProtectedDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Properties) { description = PropertiesPublicProtectedDescriber <T> .GetForUse(true); builder = POCOBuilder <T, PropertiesPublicProtectedDescriber <T> > .GetMapper(); return; } throw new ArgumentOutOfRangeException("members"); } if (visibility == (IncludedVisibility.Public | IncludedVisibility.Private)) { if (members == (IncludedMembers.Properties | IncludedMembers.Fields)) { description = AllPublicPrivateDescriber <T> .GetForUse(true); builder = POCOBuilder <T, AllPublicPrivateDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Fields) { description = FieldsPublicPrivateDescriber <T> .GetForUse(true); builder = POCOBuilder <T, FieldsPublicPrivateDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Properties) { description = PropertiesPublicPrivateDescriber <T> .GetForUse(true); builder = POCOBuilder <T, PropertiesPublicPrivateDescriber <T> > .GetMapper(); return; } throw new ArgumentOutOfRangeException("members"); } if (visibility == (IncludedVisibility.Public | IncludedVisibility.Protected | IncludedVisibility.Internal)) { if (members == (IncludedMembers.Properties | IncludedMembers.Fields)) { description = AllPublicProtectedInternalDescriber <T> .GetForUse(true); builder = POCOBuilder <T, AllPublicProtectedInternalDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Fields) { description = FieldsPublicProtectedInternalDescriber <T> .GetForUse(true); builder = POCOBuilder <T, FieldsPublicProtectedInternalDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Properties) { description = PropertiesPublicProtectedInternalDescriber <T> .GetForUse(true); builder = POCOBuilder <T, PropertiesPublicProtectedInternalDescriber <T> > .GetMapper(); return; } throw new ArgumentOutOfRangeException("members"); } if (visibility == (IncludedVisibility.Public | IncludedVisibility.Protected | IncludedVisibility.Private)) { if (members == (IncludedMembers.Properties | IncludedMembers.Fields)) { description = AllPublicProtectedPrivateDescriber <T> .GetForUse(true); builder = POCOBuilder <T, AllPublicProtectedPrivateDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Fields) { description = FieldsPublicProtectedPrivateDescriber <T> .GetForUse(true); builder = POCOBuilder <T, FieldsPublicProtectedPrivateDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Properties) { description = PropertiesPublicProtectedPrivateDescriber <T> .GetForUse(true); builder = POCOBuilder <T, PropertiesPublicProtectedPrivateDescriber <T> > .GetMapper(); return; } throw new ArgumentOutOfRangeException("members"); } if (visibility == (IncludedVisibility.Public | IncludedVisibility.Internal | IncludedVisibility.Private)) { if (members == (IncludedMembers.Properties | IncludedMembers.Fields)) { description = AllPublicInternalPrivateDescriber <T> .GetForUse(true); builder = POCOBuilder <T, AllPublicInternalPrivateDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Fields) { description = FieldsPublicInternalPrivateDescriber <T> .GetForUse(true); builder = POCOBuilder <T, FieldsPublicInternalPrivateDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Properties) { description = PropertiesPublicInternalPrivateDescriber <T> .GetForUse(true); builder = POCOBuilder <T, PropertiesPublicInternalPrivateDescriber <T> > .GetMapper(); return; } throw new ArgumentOutOfRangeException("members"); } if (visibility == (IncludedVisibility.Public | IncludedVisibility.Internal | IncludedVisibility.Protected | IncludedVisibility.Private)) { if (members == (IncludedMembers.Properties | IncludedMembers.Fields)) { description = AllAllDescriber <T> .GetForUse(true); builder = POCOBuilder <T, AllAllDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Fields) { description = FieldsAllDescriber <T> .GetForUse(true); builder = POCOBuilder <T, FieldsAllDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Properties) { description = PropertiesAllDescriber <T> .GetForUse(true); builder = POCOBuilder <T, PropertiesAllDescriber <T> > .GetMapper(); return; } throw new ArgumentOutOfRangeException("members"); } if (visibility == IncludedVisibility.Protected) { if (members == (IncludedMembers.Properties | IncludedMembers.Fields)) { description = AllProtectedDescriber <T> .GetForUse(true); builder = POCOBuilder <T, AllProtectedDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Fields) { description = FieldsProtectedDescriber <T> .GetForUse(true); builder = POCOBuilder <T, FieldsProtectedDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Properties) { description = PropertiesProtectedDescriber <T> .GetForUse(true); builder = POCOBuilder <T, PropertiesProtectedDescriber <T> > .GetMapper(); return; } throw new ArgumentOutOfRangeException("members"); } if (visibility == (IncludedVisibility.Protected | IncludedVisibility.Internal)) { if (members == (IncludedMembers.Properties | IncludedMembers.Fields)) { description = AllProtectedInternalDescriber <T> .GetForUse(true); builder = POCOBuilder <T, AllProtectedInternalDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Fields) { description = FieldsProtectedInternalDescriber <T> .GetForUse(true); builder = POCOBuilder <T, FieldsProtectedInternalDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Properties) { description = PropertiesProtectedInternalDescriber <T> .GetForUse(true); builder = POCOBuilder <T, PropertiesProtectedInternalDescriber <T> > .GetMapper(); return; } throw new ArgumentOutOfRangeException("members"); } if (visibility == (IncludedVisibility.Protected | IncludedVisibility.Private)) { if (members == (IncludedMembers.Properties | IncludedMembers.Fields)) { description = AllProtectedPrivateDescriber <T> .GetForUse(true); builder = POCOBuilder <T, AllProtectedPrivateDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Fields) { description = FieldsProtectedPrivateDescriber <T> .GetForUse(true); builder = POCOBuilder <T, FieldsProtectedPrivateDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Properties) { description = PropertiesProtectedPrivateDescriber <T> .GetForUse(true); builder = POCOBuilder <T, PropertiesProtectedPrivateDescriber <T> > .GetMapper(); return; } throw new ArgumentOutOfRangeException("members"); } if (visibility == (IncludedVisibility.Protected | IncludedVisibility.Internal | IncludedVisibility.Private)) { if (members == (IncludedMembers.Properties | IncludedMembers.Fields)) { description = AllProtectedInternalPrivateDescriber <T> .GetForUse(true); builder = POCOBuilder <T, AllProtectedInternalPrivateDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Fields) { description = FieldsProtectedInternalPrivateDescriber <T> .GetForUse(true); builder = POCOBuilder <T, FieldsProtectedInternalPrivateDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Properties) { description = PropertiesProtectedInternalPrivateDescriber <T> .GetForUse(true); builder = POCOBuilder <T, PropertiesProtectedInternalPrivateDescriber <T> > .GetMapper(); return; } throw new ArgumentOutOfRangeException("members"); } if (visibility == IncludedVisibility.Internal) { if (members == (IncludedMembers.Properties | IncludedMembers.Fields)) { description = AllInternalDescriber <T> .GetForUse(true); builder = POCOBuilder <T, AllInternalDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Fields) { description = FieldsInternalDescriber <T> .GetForUse(true); builder = POCOBuilder <T, FieldsInternalDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Properties) { description = PropertiesInternalDescriber <T> .GetForUse(true); builder = POCOBuilder <T, PropertiesInternalDescriber <T> > .GetMapper(); return; } throw new ArgumentOutOfRangeException("members"); } if (visibility == (IncludedVisibility.Internal | IncludedVisibility.Private)) { if (members == (IncludedMembers.Properties | IncludedMembers.Fields)) { description = AllInternalPrivateDescriber <T> .GetForUse(true); builder = POCOBuilder <T, AllInternalPrivateDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Fields) { description = FieldsInternalPrivateDescriber <T> .GetForUse(true); builder = POCOBuilder <T, FieldsInternalPrivateDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Properties) { description = PropertiesInternalPrivateDescriber <T> .GetForUse(true); builder = POCOBuilder <T, PropertiesInternalPrivateDescriber <T> > .GetMapper(); return; } throw new ArgumentOutOfRangeException("members"); } if (visibility == IncludedVisibility.Private) { if (members == (IncludedMembers.Properties | IncludedMembers.Fields)) { description = AllPrivateDescriber <T> .GetForUse(true); builder = POCOBuilder <T, AllPrivateDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Fields) { description = FieldsPrivateDescriber <T> .GetForUse(true); builder = POCOBuilder <T, FieldsPrivateDescriber <T> > .GetMapper(); return; } if (members == IncludedMembers.Properties) { description = PropertiesPrivateDescriber <T> .GetForUse(true); builder = POCOBuilder <T, PropertiesPrivateDescriber <T> > .GetMapper(); return; } throw new ArgumentOutOfRangeException("members"); } throw new ArgumentOutOfRangeException("visibility"); }