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 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 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)); }