public void SetSrceValue_MapperCollection() { var p = new Person(); var pm = new ODataPropertyMapper <Person, List <Address> >(x => x.Addresses); pm.SetMapper(new AddressMapper()); var json = JObject.Parse(Person.JsonData); pm.SetSrceValue(p, json["AddressesX"], OperationTypes.Get); Assert.IsNotNull(p.Addresses); Assert.AreEqual(2, p.Addresses.Count); Assert.AreEqual(456, p.Addresses[0].StreetNumber); Assert.AreEqual("Simpsons", p.Addresses[0].StreetName); Assert.AreEqual(789, p.Addresses[1].StreetNumber); Assert.AreEqual("Park", p.Addresses[1].StreetName); var pm2 = new ODataPropertyMapper <Person, string[]>(x => x.Nicknames); pm2.SetSrceValue(p, json["NicknamesX"], OperationTypes.Get); Assert.IsNotNull(p.Nicknames); Assert.AreEqual(2, p.Nicknames.Length); Assert.AreEqual("Bro", p.Nicknames[0]); Assert.AreEqual("Mate", p.Nicknames[1]); }
public void SetSrceValue_Converter() { var p = new Person(); var pm = new ODataPropertyMapper <Person, bool>(x => x.IsDeceased); pm.SetConverter(BooleanToYesNoConverter.Default); var json = JObject.Parse(Person.JsonData); pm.SetSrceValue(p, json["IsDeceasedX"], OperationTypes.Get); Assert.AreEqual(true, p.IsDeceased); }
public void SetSrceValue_Intrinsic() { var p = new Person(); var pm = new ODataPropertyMapper <Person, int>(x => x.Id); Assert.Throws <ArgumentNullException>(() => pm.SetSrceValue(p, null, OperationTypes.Get)); var json = JObject.Parse(Person.JsonData); pm.SetSrceValue(p, json["IdX"], OperationTypes.Get); Assert.AreEqual(1, p.Id); }
public void SetConverter() { var pm = new ODataPropertyMapper <Person, bool>(x => x.IsDeceased); Assert.IsNull(pm.Converter); pm.SetConverter(BooleanToYesNoConverter.Default); Assert.IsNotNull(pm.Converter); pm.SetConverter <string>(null); Assert.IsNull(pm.Converter); }
public void Ctor_ComplexTypeList() { AssertDefault <List <Address> >(new ODataPropertyMapper <Person, List <Address> >(x => x.Addresses), typeof(List <Address>), "Addresses", "Addresses", Mapper.OperationTypes.Any, false); AssertDefault <List <Address> >(new ODataPropertyMapper <Person, List <Address> >(x => x.Addresses, "AddressesX"), typeof(List <Address>), "Addresses", "AddressesX", Mapper.OperationTypes.Any, false); var pm = new ODataPropertyMapper <Person, List <Address> >(x => x.Addresses, "AddressesX", Mapper.OperationTypes.AnyExceptCreate); AssertDefault <List <Address> >(pm, typeof(List <Address>), "Addresses", "AddressesX", Mapper.OperationTypes.AnyExceptCreate, false); Assert.IsTrue(pm.IsSrceComplexType); Assert.IsNotNull(pm.SrceComplexTypeReflector); Assert.IsTrue(pm.SrceComplexTypeReflector.IsCollection); Assert.AreEqual(Reflection.ComplexTypeCode.ICollection, pm.SrceComplexTypeReflector.ComplexTypeCode); Assert.AreEqual(typeof(Address), pm.SrceComplexTypeReflector.ItemType); }
public void Ctor_StringArray() { AssertDefault <string[]>(new ODataPropertyMapper <Person, string[]>(x => x.Nicknames), typeof(string[]), "Nicknames", "Nicknames", Mapper.OperationTypes.Any, false); AssertDefault <string[]>(new ODataPropertyMapper <Person, string[]>(x => x.Nicknames, "NicknamesX"), typeof(string[]), "Nicknames", "NicknamesX", Mapper.OperationTypes.Any, false); var pm = new ODataPropertyMapper <Person, string[]>(x => x.Nicknames, "NicknamesX", Mapper.OperationTypes.AnyExceptCreate); AssertDefault <string[]>(pm, typeof(string[]), "Nicknames", "NicknamesX", Mapper.OperationTypes.AnyExceptCreate, false); Assert.IsTrue(pm.IsSrceComplexType); Assert.IsNotNull(pm.SrceComplexTypeReflector); Assert.IsTrue(pm.SrceComplexTypeReflector.IsCollection); Assert.AreEqual(Reflection.ComplexTypeCode.Array, pm.SrceComplexTypeReflector.ComplexTypeCode); Assert.AreEqual(typeof(string), pm.SrceComplexTypeReflector.ItemType); }
public void SetSrceValue_MapperObject() { var p = new Person(); var pm = new ODataPropertyMapper <Person, Address>(x => x.Address); pm.SetMapper(new AddressMapper()); var json = JObject.Parse(Person.JsonData); pm.SetSrceValue(p, json["AddressX"], OperationTypes.Get); Assert.IsNotNull(p.Address); Assert.AreEqual(123, p.Address.StreetNumber); Assert.AreEqual("Petherick", p.Address.StreetName); }
public void Set_Mapper_Converter_MutuallyExclusive() { var pm = new ODataPropertyMapper <Person, bool>(x => x.IsDeceased); pm.SetConverter(BooleanToYesNoConverter.Default); Assert.IsNotNull(pm.Converter); ExpectException.Throws <MapperException>("The Mapper and Converter cannot be both set; only one is permissible.", () => pm.SetMapper(new ODataMapper <Address>("Address"))); var pm2 = new ODataPropertyMapper <Person, Address>(x => x.Address); pm2.SetMapper(new ODataMapper <Address>("Address")); Assert.IsNotNull(pm2.Mapper); ExpectException.Throws <MapperException>("The Mapper and Converter cannot be both set; only one is permissible.", () => pm2.SetConverter(RandomTestConverter.Default)); }
private void AssertDefault <T>(ODataPropertyMapper <Person, T> pm, Type type, string srceName, string destName, Mapper.OperationTypes operationTypes, bool isIntrinsic) { Assert.AreEqual(type, pm.SrcePropertyType); Assert.AreEqual(srceName, pm.SrcePropertyName); Assert.AreEqual(destName, pm.DestPropertyName); Assert.IsFalse(pm.IsUniqueKey); Assert.IsTrue(pm.IsUniqueKeyAutoGeneratedOnCreate); Assert.IsNull(pm.Converter); Assert.IsNull(pm.Mapper); Assert.AreEqual(operationTypes, pm.OperationTypes); if (isIntrinsic) { Assert.IsFalse(pm.IsSrceComplexType); Assert.IsNull(pm.SrceComplexTypeReflector); } }
public void SetMapper() { var pm = new ODataPropertyMapper <Person, Address>(x => x.Address); Assert.IsNull(pm.Mapper); pm.SetMapper(new ODataMapper <Address>("Address")); Assert.IsNotNull(pm.Mapper); ExpectException.Throws <ArgumentException>("Mapper must be instance of IODataMapper.", () => pm.SetMapper(new EntityMapper <Person, Address>())); ExpectException.Throws <MapperException>("The PropertyMapper SrceType 'Address' has an ItemType of 'Address' which must be the same as the underlying EntityMapper SrceType 'Person'.", () => pm.SetMapper(new ODataMapper <Person>("Person"))); var pm2 = new ODataPropertyMapper <Person, int>(x => x.Id); ExpectException.Throws <MapperException>("The PropertyMapper SrceType 'Int32' must be a complex type to set a Mapper.", () => pm2.SetMapper(new ODataMapper <Person>("Person"))); }
public void SetUniqueKey_Valid() { var pm = new ODataPropertyMapper <Person, string>(x => x.Name); Assert.IsFalse(pm.IsUniqueKey); Assert.IsTrue(pm.IsUniqueKeyAutoGeneratedOnCreate); pm.SetUniqueKey(); Assert.IsTrue(pm.IsUniqueKey); Assert.IsTrue(pm.IsUniqueKeyAutoGeneratedOnCreate); pm.SetUniqueKey(false); Assert.IsTrue(pm.IsUniqueKey); Assert.IsFalse(pm.IsUniqueKeyAutoGeneratedOnCreate); var pm2 = new ODataPropertyMapper <Person, Address>(x => x.Address); Assert.IsFalse(pm2.IsUniqueKey); Assert.IsTrue(pm2.IsUniqueKeyAutoGeneratedOnCreate); ExpectException.Throws <InvalidOperationException>("A Unique Key with AutoGeneratedOnCreate cannot be set for a Property where IsSrceComplexType is true.", () => pm2.SetUniqueKey()); }