예제 #1
0
        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]);
        }
예제 #2
0
        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")));
        }
예제 #3
0
        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);
        }
예제 #4
0
        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));
        }