示例#1
0
        public void TestTasksListParseMechanics()
        {
            string xml =
                @"<roar tick=""135577684654"">
				<tasks>
					<list status=""ok"">
						<task ikey=""dungeon_crawl"">
							<label>Dungeon crawl</label>
							<description>Go into the pits</description>
							<location>Australia</location>
							<tags>
								<tag value=""protect""/>
								<tag value=""monsters""/>
							</tags>
							<costs>
								<item_cost ikey=""mariner"" number_required=""3"" ok=""false"" reason=""requires mariner(3)""/>
								<stat_cost type=""currency"" ikey=""premium_currency"" value=""477"" ok=""true""/>
							</costs>
							<rewards>
								<grant_stat type=""currency"" ikey=""premium_currency"" value=""453""/>
								<grant_xp value=""234""/>
							</rewards>
							<mastery level=""2"" progress=""5""/>
							<requires>
								<item_requirement ikey=""talisman"" number_required=""2"" ok=""false"" reason=""requires talisman(2)""/>
							</requires>
						</task>
					</list>
				</tasks>
			</roar>"            ;

            System.Xml.XmlElement nn = RoarExtensions.CreateXmlElement(xml);
            Mockery mockery          = new Mockery();

            Roar.DataConversion.IXCRMParser          ixcrm_parser = mockery.NewMock <Roar.DataConversion.IXCRMParser>();
            Roar.DataConversion.Responses.Tasks.List list_parser  = new Roar.DataConversion.Responses.Tasks.List();
            list_parser.ixcrm_parser = ixcrm_parser;
            Roar.DomainObjects.Task task_data = new Roar.DomainObjects.Task();

            Expect.Once.On(ixcrm_parser).Method("ParseCostList").With(nn.SelectSingleNode("./tasks/list/task/costs")).Will(Return.Value(task_data.costs));
            Expect.Once.On(ixcrm_parser).Method("ParseModifierList").With(nn.SelectSingleNode("./tasks/list/task/rewards")).Will(Return.Value(task_data.rewards));
            Expect.Once.On(ixcrm_parser).Method("ParseRequirementList").With(nn.SelectSingleNode("./tasks/list/task/requires")).Will(Return.Value(task_data.requirements));
            Expect.Once.On(ixcrm_parser).Method("ParseTagList").With(nn.SelectSingleNode("./tasks/list/task/tags")).Will(Return.Value(task_data.tags));

            ListResponse response = list_parser.Build(nn);

            mockery.VerifyAllExpectationsHaveBeenMet();

            Assert.AreEqual(response.tasks.Count, 1);
            Assert.AreEqual(response.tasks[0].costs.Count, 0);
            Assert.AreEqual(response.tasks[0].rewards.Count, 0);
            Assert.AreEqual(response.tasks[0].requirements.Count, 0);
            Assert.AreEqual(response.tasks[0].tags.Count, 0);
            Assert.AreEqual(response.tasks[0].costs, task_data.costs);
            Assert.AreEqual(response.tasks[0].rewards, task_data.rewards);
            Assert.AreEqual(response.tasks[0].requirements, task_data.requirements);
            Assert.AreEqual(response.tasks[0].tags, task_data.tags);
        }
示例#2
0
        public void TestWhatCanIAcceptParseMechanics()
        {
            string xml =
                @"<roar tick=""128555554651"">
				<mail>
					<what_can_i_accept status=""ok"">
						<package type=""item"" id=""15850999291750564699"" message=""Enjoy the beans!"" sender_id=""123123"" sender_name=""John"">
							<item id=""15850999291750564699"" ikey=""magic_beans"" count=""1"" label=""Magic Beans"" type=""custom_type"" description=""Grow a beanstalk!"" consumable=""true""/>
							<tag value=""test_tag""/>
							<tag value=""next tag""/>
							<modifiers>
								<grant_item ikey=""item_ikey_1""/>
							</modifiers>
						</package>
					</what_can_i_accept>
				</mail>
			</roar>"            ;

            System.Xml.XmlElement nn = RoarExtensions.CreateXmlElement(xml);
            Roar.DataConversion.Responses.Mail.WhatCanIAccept what_can_i_accept_parser = new Roar.DataConversion.Responses.Mail.WhatCanIAccept();

            Mockery mockery = new Mockery();

            Roar.DataConversion.IXCRMParser ixcrm_parser = mockery.NewMock <Roar.DataConversion.IXCRMParser>();
            what_can_i_accept_parser.ixcrm_parser = ixcrm_parser;
            IList <string> tag_list = new List <string>();
            IList <Roar.DomainObjects.Modifier> modifier_list   = new List <Roar.DomainObjects.Modifier>();
            IList <Roar.DomainObjects.ItemStat> item_stat_list  = new List <Roar.DomainObjects.ItemStat>();
            IList <Roar.DomainObjects.Modifier> item_price_list = new List <Roar.DomainObjects.Modifier>();
            IList <string> item_tag_list = new List <string>();

            Expect.Once.On(ixcrm_parser).Method("ParseItemStatList").With(nn.SelectSingleNode("./mail/what_can_i_accept/package/item/stats")).Will(Return.Value(item_stat_list));
            Expect.Once.On(ixcrm_parser).Method("ParseModifierList").With(nn.SelectSingleNode("./mail/what_can_i_accept/package/item/price")).Will(Return.Value(item_price_list));
            Expect.Once.On(ixcrm_parser).Method("ParseTagList").With(nn.SelectSingleNode("./mail/what_can_i_accept/package/item/tags")).Will(Return.Value(item_tag_list));

            Expect.Once.On(ixcrm_parser).Method("ParseTagList").With(nn.SelectSingleNode("./mail/what_can_i_accept/package")).Will(Return.Value(tag_list));
            Expect.Once.On(ixcrm_parser).Method("ParseModifierList").With(nn.SelectSingleNode("./mail/what_can_i_accept/package/modifiers")).Will(Return.Value(modifier_list));

            WhatCanIAcceptResponse response = what_can_i_accept_parser.Build(nn);

            mockery.VerifyAllExpectationsHaveBeenMet();

            Assert.AreEqual(response.packages.Count, 1);
            Assert.AreEqual(response.packages[0].id, "15850999291750564699");
            Assert.AreEqual(response.packages[0].type, "item");
            Assert.AreEqual(response.packages[0].sender_id, "123123");
            Assert.AreEqual(response.packages[0].sender_name, "John");
            Assert.AreEqual(response.packages[0].message, "Enjoy the beans!");
            Assert.AreEqual(response.packages[0].items.Count, 1);
            Assert.AreEqual(response.packages[0].tags.Count, 0);
            Assert.AreEqual(response.packages[0].modifiers.Count, 0);
            Assert.AreEqual(response.packages[0].items[0].stats, item_stat_list);
            Assert.AreEqual(response.packages[0].items[0].price, item_price_list);
            Assert.AreEqual(response.packages[0].tags, tag_list);
            Assert.AreEqual(response.packages[0].modifiers, modifier_list);
        }
示例#3
0
        public void TestItemsViewXmlParseMechanics()
        {
            string xml =
                @"<roar tick=""135536803344"">
				<items>
					<view status=""ok"">
						<item>
							<stats>
								<regen_stat_limited ikey=""premium_currency"" value=""345"" repeat=""12"" times_used=""4""/>
							</stats>
							<properties>
								<property ikey=""mariner"" value=""543""/>
							</properties>
							<tags>
								<tag value=""magicitem""/>
							</tags>
							<price>
								<grant_item ikey=""talisman""/>
							</price>
						</item>
					</view>
				</items>
			</roar>"            ;

            System.Xml.XmlElement nn = RoarExtensions.CreateXmlElement(xml);

            Mockery mockery = new Mockery();

            Roar.DataConversion.IXCRMParser    ixcrm_parser   = mockery.NewMock <Roar.DataConversion.IXCRMParser>();
            List <Roar.DomainObjects.ItemStat> item_stat_list = new List <Roar.DomainObjects.ItemStat>();
            List <Roar.DomainObjects.Modifier> modifier_list  = new List <Roar.DomainObjects.Modifier>();
            List <string> tag_list = new List <string>();

            Roar.DataConversion.Responses.Items.View items_view_response_parser = new Roar.DataConversion.Responses.Items.View();
            items_view_response_parser.ixcrm_parser = ixcrm_parser;

            System.Xml.XmlNode stat_node = nn.SelectSingleNode("./items/view/item/stats");
            Expect.Once.On(ixcrm_parser).Method("ParseItemStatList").With(stat_node).Will(Return.Value(item_stat_list));
            System.Xml.XmlNode modifiers_node = nn.SelectSingleNode("./items/view/item/price");
            Expect.Once.On(ixcrm_parser).Method("ParseModifierList").With(modifiers_node).Will(Return.Value(modifier_list));
            System.Xml.XmlNode tag_node = nn.SelectSingleNode("./items/view/item/tags");
            Expect.Once.On(ixcrm_parser).Method("ParseTagList").With(tag_node).Will(Return.Value(tag_list));

            ViewResponse response = items_view_response_parser.Build(nn);

            mockery.VerifyAllExpectationsHaveBeenMet();

            Assert.IsNotNull(response.items);
            Assert.AreEqual(response.items.Count, 1);
            Assert.AreEqual(response.items[0].stats, item_stat_list);
            Assert.AreEqual(response.items[0].price, modifier_list);
            Assert.AreEqual(response.items[0].tags, tag_list);
        }
        public void TestChromeWebStoreListParseMechanics()
        {
            string xml =
                @"<roar tick=""130695522924"">
				<chrome_web_store>
					<list>
						<shopitem blah=""???"" ikey=""token"" label=""Token"" description=""Chrome Token"" price=""23"" jwt=""????"">
							<modifiers>
								<grant_item ikey=""item_ikey_1""/>
							</modifiers>
							<tags>
								<tag value=""a_tag""/>
								<tag value=""another_tag""/>
							</tags>
						</shopitem>
					</list>
				</chrome_web_store>
			</roar>"            ;

            System.Xml.XmlElement nn = RoarExtensions.CreateXmlElement(xml);
            Roar.DataConversion.Responses.ChromeWebStore.List list_parser = new Roar.DataConversion.Responses.ChromeWebStore.List();

            Mockery mockery = new Mockery();

            Roar.DataConversion.IXCRMParser ixcrm_parser = mockery.NewMock <Roar.DataConversion.IXCRMParser>();
            list_parser.ixcrm_parser = ixcrm_parser;
            IList <Roar.DomainObjects.Modifier> modifier_list = new List <Roar.DomainObjects.Modifier>();
            IList <string> tag_list = new List <string>();

            Expect.Once.On(ixcrm_parser).Method("ParseModifierList").With(nn.SelectSingleNode("./chrome_web_store/list/shopitem/modifiers")).Will(Return.Value(modifier_list));
            Expect.Once.On(ixcrm_parser).Method("ParseTagList").With(nn.SelectSingleNode("./chrome_web_store/list/shopitem/tags")).Will(Return.Value(tag_list));

            ListResponse response = list_parser.Build(nn);

            mockery.VerifyAllExpectationsHaveBeenMet();

            Assert.IsNotNull(response.shop_items);
            Assert.AreEqual(response.shop_items.Count, 1);
            Assert.AreEqual(response.shop_items[0].ikey, "token");
            Assert.AreEqual(response.shop_items[0].label, "Token");
            Assert.AreEqual(response.shop_items[0].description, "Chrome Token");
            Assert.AreEqual(response.shop_items[0].price, "23");
            Assert.AreEqual(response.shop_items[0].jwt, "????");
            Assert.AreEqual(response.shop_items[0].modifiers, modifier_list);
            Assert.AreEqual(response.shop_items[0].tags, tag_list);
        }
示例#5
0
        public void TestItemsListXmlGetAttributes()
        {
            string xml =
                @"<roar tick=""135546049121"">
				<items>
					<list status=""ok"">
						<item id=""1039149107"" ikey=""talisman"" count=""1"" label=""Talisman"" type=""item"" description=""protects from evil"" consumable=""false"" sellable=""false"" equipped=""true"">
							<tags>
								<tag value=""magicitem""/>
							</tags>
						</item>
					</list>
				</items>
			</roar>"            ;

            System.Xml.XmlElement nn = RoarExtensions.CreateXmlElement(xml);

            Mockery mockery = new Mockery();

            Roar.DataConversion.IXCRMParser    ixcrm_parser   = mockery.NewMock <Roar.DataConversion.IXCRMParser>();
            List <Roar.DomainObjects.ItemStat> item_stat_list = new List <Roar.DomainObjects.ItemStat>();
            List <Roar.DomainObjects.Modifier> modifier_list  = new List <Roar.DomainObjects.Modifier>();
            List <string> tag_list = new List <string>();

            Roar.DataConversion.Responses.Items.List list_parser = new Roar.DataConversion.Responses.Items.List();
            list_parser.ixcrm_parser = ixcrm_parser;

            System.Xml.XmlNode stat_node = nn.SelectSingleNode("./items/list/item/stats");
            Expect.Once.On(ixcrm_parser).Method("ParseItemStatList").With(stat_node).Will(Return.Value(item_stat_list));
            System.Xml.XmlNode modifiers_node = nn.SelectSingleNode("./items/list/item/price");
            Expect.Once.On(ixcrm_parser).Method("ParseModifierList").With(modifiers_node).Will(Return.Value(modifier_list));
            System.Xml.XmlNode tag_node = nn.SelectSingleNode("./items/list/item/tags");
            Expect.Once.On(ixcrm_parser).Method("ParseTagList").With(tag_node).Will(Return.Value(tag_list));

            ListResponse response = list_parser.Build(nn);

            mockery.VerifyAllExpectationsHaveBeenMet();

            Assert.IsNotNull(response.items);
            Assert.AreEqual(response.items.Count, 1);
            Assert.IsTrue(response.items[0].equipped);
            Assert.AreEqual(response.items[0].stats, item_stat_list);
            Assert.AreEqual(response.items[0].price, modifier_list);
            Assert.AreEqual(response.items[0].tags, tag_list);
        }
示例#6
0
        public void TestAppstoreShopListParseMechanics()
        {
            string xml =
                @"<roar tick=""130695522924"">
				<appstore>
					<shop_list>
						<shopitem product_identifier=""someidentifier"" label=""A label"">
							<modifiers>
								<grant_item ikey=""item_ikey_1""/>
								<grant_stat ikey=""item_stat"" type=""some type"" value=""7""/>
							</modifiers>
						</shopitem>
					</shop_list>
				</appstore>
			</roar>"            ;

            System.Xml.XmlElement nn = RoarExtensions.CreateXmlElement(xml);
            Roar.DataConversion.Responses.Appstore.ShopList shop_list_parser = new Roar.DataConversion.Responses.Appstore.ShopList();

            Mockery mockery = new Mockery();

            Roar.DataConversion.IXCRMParser ixcrm_parser = mockery.NewMock <Roar.DataConversion.IXCRMParser>();
            shop_list_parser.ixcrm_parser = ixcrm_parser;
            IList <Roar.DomainObjects.Modifier> modifier_list = new List <Roar.DomainObjects.Modifier>();

            Expect.Once.On(ixcrm_parser).Method("ParseModifierList").With(nn.SelectSingleNode("./appstore/shop_list/shopitem/modifiers")).Will(Return.Value(modifier_list));

            ShopListResponse response = shop_list_parser.Build(nn);

            mockery.VerifyAllExpectationsHaveBeenMet();

            Assert.IsNotNull(response);
            Assert.AreEqual(response.shop_list.Count, 1);
            Assert.AreEqual(response.shop_list[0].product_identifier, "someidentifier");
            Assert.AreEqual(response.shop_list[0].label, "A label");
            Assert.AreEqual(response.shop_list[0].modifiers, modifier_list);
        }
示例#7
0
        public void TestParseFacebookShopListResponse()
        {
            string xml =
                @"<roar tick=""130695522924"">
				<facebook>\
					<shop_list>
						<fbshopitem
							ikey=""shop_item_ikey1""
							description=""Blah Blah""
							label=""label""
							price=""2""
							product_url=""http://foo.bar""
							image_url=""http://foo.bar/baz.png""
						>
							<modifiers>
								<grant_item ikey=""item_ikey_1""/>
							</modifiers>
						</fbshopitem>
						<fbshopitem
							ikey=""shop_item_ikey2""
							description=""Blah Boo""
							label=""item2""
							price=""4""
							product_url=""ABC""
							image_url=""...""
						>
							<modifiers>
								<grant_item ikey=""item_ikey_2""/>
							</modifiers>
						</fbshopitem>
					</shop_list>
				</facebook>
			</roar>"            ;

            System.Xml.XmlElement nn = RoarExtensions.CreateXmlElement(xml);
            Assert.IsNotNull(nn);

            Assert.AreEqual(2, nn.SelectNodes("./facebook/shop_list/fbshopitem").Count);

            Mockery mockery = new Mockery();

            Roar.DataConversion.IXCRMParser    ixcrm_parser   = mockery.NewMock <Roar.DataConversion.IXCRMParser>();
            List <Roar.DomainObjects.Modifier> modifier_list  = new List <Roar.DomainObjects.Modifier>();
            List <Roar.DomainObjects.Modifier> modifier_list1 = new List <Roar.DomainObjects.Modifier>();

            System.Xml.XmlNode modifier_node0 = nn.SelectSingleNode("./facebook/shop_list/fbshopitem[1]/modifiers");
            Expect.Once.On(ixcrm_parser).Method("ParseModifierList").With(modifier_node0).Will(Return.Value(modifier_list));

            System.Xml.XmlNode modifier_node1 = nn.SelectSingleNode("./facebook/shop_list/fbshopitem[2]/modifiers");
            Expect.Once.On(ixcrm_parser).Method("ParseModifierList").With(modifier_node1).Will(Return.Value(modifier_list1));

            Roar.DataConversion.Responses.Facebook.ShopList shoplist_response_parser = new Roar.DataConversion.Responses.Facebook.ShopList();
            shoplist_response_parser.ixcrm_parser = ixcrm_parser;

            Roar.WebObjects.Facebook.ShopListResponse response = shoplist_response_parser.Build(nn);

            Assert.IsNotNull(response);
            Assert.AreEqual(2, response.shop_list.Count);
            Roar.DomainObjects.FacebookShopEntry e0 = response.shop_list[0];
            Assert.AreEqual("shop_item_ikey1", e0.ikey);
            Assert.AreEqual("Blah Blah", e0.description);
            Assert.AreEqual("label", e0.label);
            Assert.AreEqual("2", e0.price);
            Assert.AreEqual("http://foo.bar", e0.product_url);
            Assert.AreEqual("http://foo.bar/baz.png", e0.image_url);
            Assert.AreSame(modifier_list, e0.modifiers);

            Roar.DomainObjects.FacebookShopEntry e1 = response.shop_list[1];
            Assert.AreEqual("shop_item_ikey2", e1.ikey);
            Assert.AreEqual("Blah Boo", e1.description);
            Assert.AreEqual("item2", e1.label);
            Assert.AreEqual("4", e1.price);
            Assert.AreEqual("ABC", e1.product_url);
            Assert.AreEqual("...", e1.image_url);
            Assert.AreSame(modifier_list1, e1.modifiers);

            mockery.VerifyAllExpectationsHaveBeenMet();
        }
示例#8
0
        public void TestItemsSellXmlParseMechanics()
        {
            string xml =
                @"<roar tick=""135572003492"">
				<items>
					<sell status=""ok"">
						<effect>
							<costs/>
							<modifiers>
								<modifier type=""removed_items"" ikey=""talisman"" count=""34""/>
								<modifier type=""stat_change"" ikey=""premium_currency"" value=""67""/>
								<modifier type=""stat_change"" ikey=""premium_currency"" value=""9""/>
								<modifier type=""add_xp"" value=""876""/>
								<modifier type=""add_xp"" value=""6""/>
								<modifier type=""add_item"" ikey=""talisman"" item_id=""1458454945""/>
								<modifier type=""stat_change"" ikey=""premium_currency"" value=""88""/>
								<modifier type=""add_xp"" value=""66""/>
								<modifier type=""add_xp"" value=""77""/>
							</modifiers>
						</effect>
						<item id=""275012935"" ikey=""ring"" count=""1"" label=""Ring"" type=""item"" description=""Magic ring for protection and strength"" consumable=""true"" sellable=""true"">
							<stats>
								<equip_attribute ikey=""premium_currency"" value=""67""/>
								<collect_stat ikey=""premium_currency"" value=""45"" every=""600000"" window=""234"" collect_at=""0""/>
								<regen_stat_limited ikey=""premium_currency"" value=""345"" repeat=""12"" times_used=""0""/>
								<regen_stat ikey=""premium_currency"" value=""44"" every=""600000""/>
								<grant_stat ikey=""premium_currency"" value=""566""/>
							</stats>
							<properties>
								<property ikey=""sonda"" value=""extra""/>
								<property ikey=""mariner"" value=""505""/>
							</properties>
							<tags>
								<tag value=""magic""/>
								<tag value=""magicitem""/>
								<tag value=""protection""/>
							</tags>
							<price>
								<remove_items/>
								<grant_stat type=""currency"" ikey=""premium_currency"" value=""67""/>
								<grant_stat_range type=""currency"" ikey=""premium_currency"" min=""8"" max=""9""/>
								<grant_xp value=""876""/>
								<grant_xp_range min=""6"" max=""7""/>
								<grant_item ikey=""talisman""/>
								<random_choice>
									<choice weight=""67"">
										<modifier>
											<grant_stat type=""currency"" ikey=""premium_currency"" value=""88""/>
										</modifier>
										<requirement>
											<true_requirement ok=""true""/>
										</requirement>
									</choice>
								</random_choice>
								<grant_xp value=""66""/>
								<if_then_else>
									<if>
										<true_requirement ok=""true""/>
									</if>
									<then>
										<grant_xp value=""77""/>
									</then>
									<else>
										<grant_xp value=""88""/>
									</else>
								</if_then_else>
							</price>
						</item>
					</sell>
				</items>
				<server>
					<item_lose item_id=""180846839"" item_ikey=""talisman""/>
					<item_add item_id=""1458454945"" item_ikey=""talisman""/>
					<item_lose item_id=""275012935"" item_ikey=""ring""/>
					<update type=""currency"" ikey=""premium_currency"" value=""32987""/>
					<update type=""xp"" ikey=""xp"" value=""16807""/>
					<inventory_changed/>
				</server>
			</roar>"            ;

            Mockery mockery = new Mockery();

            Roar.DataConversion.IXCRMParser  ixcrm_parser = mockery.NewMock <Roar.DataConversion.IXCRMParser>();
            Roar.DomainObjects.InventoryItem item_data    = new Roar.DomainObjects.InventoryItem();

            System.Xml.XmlElement nn = RoarExtensions.CreateXmlElement(xml);
            Roar.DataConversion.Responses.Items.Sell sell_parser = new Roar.DataConversion.Responses.Items.Sell();
            sell_parser.ixcrm_parser = ixcrm_parser;

            Expect.Once.On(ixcrm_parser).Method("ParseItemStatList").With(nn.SelectSingleNode("./items/sell/item/stats")).Will(Return.Value(item_data.stats));
            Expect.Once.On(ixcrm_parser).Method("ParseModifierList").With(nn.SelectSingleNode("./items/sell/item/price")).Will(Return.Value(item_data.price));
            Expect.Once.On(ixcrm_parser).Method("ParseTagList").With(nn.SelectSingleNode("./items/sell/item/tags")).Will(Return.Value(item_data.tags));

            SellResponse response = sell_parser.Build(nn);

            mockery.VerifyAllExpectationsHaveBeenMet();

            Assert.IsNotNull(response.item);
            Assert.AreEqual(response.item.id, "275012935");
            Assert.AreEqual(response.item.ikey, "ring");
            Assert.AreEqual(response.item.count, 1);
            Assert.AreEqual(response.item.label, "Ring");
            Assert.AreEqual(response.item.type, "item");
            Assert.AreEqual(response.item.description, "Magic ring for protection and strength");
            Assert.IsTrue(response.item.consumable);
            Assert.IsTrue(response.item.sellable);
            Assert.AreEqual(response.item.stats, item_data.stats);
            Assert.AreEqual(response.item.price, item_data.price);
            Assert.AreEqual(response.item.tags, item_data.tags);
        }
示例#9
0
        public void TestViewPlayerParseMechanics()
        {
            string xml =
                @"<roar tick=""125555206993"">
				<admin>
					<view_player status=""ok"">
						<attribute ikey=""id"" value=""2059428086"" type=""special""/>
						<attribute ikey=""xp"" value=""0"" type=""special""/>
						<attribute ikey=""level"" value=""1"" type=""special""/>
						<attribute ikey=""facebook_uid"" value=""0"" type=""special""/>
						<attribute ikey=""name"" value=""foo"" type=""special""/>
						<attribute ikey=""attack"" value=""10"" type=""core"" label=""Attack""/>
						<attribute ikey=""defence"" value=""10"" type=""core"" label=""Core Defence""/>
						<attribute ikey=""hit"" value=""10"" type=""core"" label=""Hit Power""/>
						<attribute ikey=""avoid"" value=""10"" type=""core"" label=""avoid""/>
						<attribute ikey=""health"" value=""100"" type=""resource"" max=""123"" min=""0"" regen_every=""1000"" label=""Health""/>
						<attribute ikey=""energy"" value=""20"" type=""resource"" max=""123"" min=""0"" regen_every=""1000"" label=""Energy""/>
						<attribute ikey=""stamina"" value=""5"" type=""resource"" max=""123"" min=""0"" regen_every=""1000"" label=""Stamina""/>
						<attribute ikey=""profile_points"" value=""0"" type=""currency"" label=""Monkey Power Points""/>
						<attribute ikey=""cash"" value=""100"" type=""currency"" lable=""cash""/>
						<attribute ikey=""premium_currency"" value=""5"" type=""currency"" label=""Bear Dollars""/>
						<items>
							<item id=""1001"" ikey=""item_ikey"" count=""1"" label=""A Label"" type=""thing"" description=""A thing"" consumable=""false"" sellable=""true"" equipped=""false"">
								<stats>
									<equip_attribute ikey=""health_max"" value=""100""/>
									<grant_stat ikey=""cash"" value=""100""/>
									<grant_stat ikey=""energy"" value=""-5""/>
								</stats>
								<properties>
									<property ikey=""size"" value=""3""/>
								</properties>
								<tags>
									<tag value=""weapon""/>
								</tags>
							</item>
						</items>
					</view_player>
				</admin>
			</roar>"            ;

            System.Xml.XmlElement nn = RoarExtensions.CreateXmlElement(xml);

            Mockery mockery = new Mockery();

            Roar.DataConversion.IXCRMParser ixcrm_parser = mockery.NewMock <Roar.DataConversion.IXCRMParser>();

            Roar.DataConversion.Responses.Admin.ViewPlayer view_player_parser = new Roar.DataConversion.Responses.Admin.ViewPlayer();
            view_player_parser.ixcrm_parser = ixcrm_parser;

            List <Roar.DomainObjects.ItemStat> stat_list     = new List <Roar.DomainObjects.ItemStat>();
            List <Roar.DomainObjects.Modifier> modifier_list = new List <Roar.DomainObjects.Modifier>();
            List <string> tag_list = new List <string>();

            Expect.Once.On(ixcrm_parser).Method("ParseItemStatList").With(nn.SelectSingleNode("./admin/view_player/items/item/stats")).Will(Return.Value(stat_list));
            Expect.Once.On(ixcrm_parser).Method("ParseModifierList").With(nn.SelectSingleNode("./amdin/view_player/items/item/price")).Will(Return.Value(modifier_list));
            Expect.Once.On(ixcrm_parser).Method("ParseTagList").With(nn.SelectSingleNode("./admin/view_player/items/item/tags")).Will(Return.Value(tag_list));

            ViewPlayerResponse response = view_player_parser.Build(nn);

            mockery.VerifyAllExpectationsHaveBeenMet();

            Assert.AreEqual(response.player.id, "2059428086");
            Assert.AreEqual(response.player.name, "foo");
            Assert.AreEqual(response.player.xp.value, 0);
            Assert.AreEqual(response.player.level, 1);
            Assert.AreEqual(response.player.attributes.Count, 11);
            Assert.AreEqual(response.player.attributes["facebook_uid"].value, "0");
            Assert.AreEqual(response.player.attributes["facebook_uid"].type, "special");
            Assert.AreEqual(response.player.attributes["hit"].label, "Hit Power");
            Assert.AreEqual(response.items.Count, 1);
            Assert.AreEqual(response.items[0].stats, stat_list);
            Assert.AreEqual(response.items[0].price, modifier_list);
            Assert.AreEqual(response.items[0].tags, tag_list);
        }
示例#10
0
        public void TestWhatCanISendParseMechanics()
        {
            string xml =
                @"<roar tick=""12835555872"">
				<mail>
					<what_can_i_send status=""ok"">
						<mailable id=""3467"" type=""gift"" label=""a label"">
							<requirements>
								<friends_requirement required=""5"" ok=""false"" reason=""Insufficient friends""/>
								<level_requirement level=""3"" ok=""true"" reason=""requires level 3""/>
							</requirements>
							<costs>
								<item_cost ikey=""mariner"" number_required=""3"" ok=""false"" reason=""requires mariner(3)""/>
								<stat_cost type=""currency"" ikey=""premium_currency"" value=""477"" ok=""true""/>
							</costs>
							<on_accept>
								<grant_item ikey=""your_gift_item_ikey""/>
							</on_accept>
							<on_give>
								<grant_xp value=""500""/>
							</on_give>
							<tags>
								<tag value=""tag 1""/>
								<tag value=""tag 2""/>
							</tags>
						</mailable>
					</what_can_i_send>
				</mail>
			</roar>"            ;

            System.Xml.XmlElement nn = RoarExtensions.CreateXmlElement(xml);
            Roar.DataConversion.Responses.Mail.WhatCanISend what_can_i_send_parser = new Roar.DataConversion.Responses.Mail.WhatCanISend();

            Mockery mockery = new Mockery();

            Roar.DataConversion.IXCRMParser ixcrm_parser = mockery.NewMock <Roar.DataConversion.IXCRMParser>();
            what_can_i_send_parser.ixcrm_parser = ixcrm_parser;

            IList <Roar.DomainObjects.Requirement> requirement_list = new List <Roar.DomainObjects.Requirement>();
            IList <Roar.DomainObjects.Cost>        cost_list        = new List <Roar.DomainObjects.Cost>();
            IList <Roar.DomainObjects.Modifier>    accept_list      = new List <Roar.DomainObjects.Modifier>();
            IList <Roar.DomainObjects.Modifier>    give_list        = new List <Roar.DomainObjects.Modifier>();
            IList <string> tag_list = new List <string>();

            Expect.Once.On(ixcrm_parser).Method("ParseRequirementList").With(nn.SelectSingleNode("./mail/what_can_i_send/mailable/requirements")).Will(Return.Value(requirement_list));
            Expect.Once.On(ixcrm_parser).Method("ParseCostList").With(nn.SelectSingleNode("./mail/what_can_i_send/mailable/costs")).Will(Return.Value(cost_list));
            Expect.Once.On(ixcrm_parser).Method("ParseModifierList").With(nn.SelectSingleNode("./mail/what_can_i_send/mailable/on_accept")).Will(Return.Value(accept_list));
            Expect.Once.On(ixcrm_parser).Method("ParseModifierList").With(nn.SelectSingleNode("./mail/what_can_i_send/mailable/on_give")).Will(Return.Value(give_list));
            Expect.Once.On(ixcrm_parser).Method("ParseTagList").With(nn.SelectSingleNode("./mail/what_can_i_send/mailable/tags")).Will(Return.Value(tag_list));

            Roar.WebObjects.Mail.WhatCanISendResponse response = what_can_i_send_parser.Build(nn);

            mockery.VerifyAllExpectationsHaveBeenMet();

            Assert.IsNotNull(response.mailables);
            Assert.AreEqual(response.mailables.Count, 1);
            Assert.AreEqual(response.mailables[0].id, "3467");
            Assert.AreEqual(response.mailables[0].type, "gift");
            Assert.AreEqual(response.mailables[0].label, "a label");
            Assert.AreEqual(response.mailables[0].requirements, requirement_list);
            Assert.AreEqual(response.mailables[0].costs, cost_list);
            Assert.AreEqual(response.mailables[0].on_accept, accept_list);
            Assert.AreEqual(response.mailables[0].on_give, give_list);
            Assert.AreEqual(response.mailables[0].tags, tag_list);
        }
示例#11
0
        public void TestListShopXmlParsesCorrectly_System()
        {
            string xml =
                @"<roar tick=""135562028150"">
				<shop>
					<list status=""ok"">
						<shopitem ikey=""rocket_fuel"" label=""Rocket Fuel"" description="""">
							<costs>
								<stat_cost type=""currency"" ikey=""gamecoins"" value=""10"" ok=""true""/>
							</costs>
							<modifiers>
								<grant_stat type=""currency"" ikey=""rocket_fuel"" value=""100""/>
							</modifiers>
							<tags/>
						</shopitem>
						<shopitem ikey=""neil_armstrong"" label=""Neil Armstrong"" description=""Best copilot in the world"">
							<costs>
								<stat_cost type=""currency"" ikey=""premium_currency"" value=""15"" ok=""false"" reason=""Insufficient Premium Currency""/>
							</costs>
							<modifiers>
								<grant_item ikey=""npc_armstrong""/>
							</modifiers>
							<tags>
								<tag value=""copilot""/>
							</tags>
						</shopitem>
						<shopitem ikey=""starter_space_pack"" label=""Starter Space Pack"" description=""Get going!"">
							<costs>
								<stat_cost type=""currency"" ikey=""gamecoins"" value=""20"" ok=""true""/>
							</costs>
							<modifiers>
								<grant_stat type=""currency"" ikey=""rocket_fuel"" value=""30""/>
								<grant_item ikey=""regular_space_helmet""/>
								<grant_item ikey=""rocket_ship""/>
							</modifiers>
							<tags>
								<tag value=""pack""/>
							</tags>
						</shopitem>
					</list>
				</shop>
			</roar>"            ;

            System.Xml.XmlElement nn = RoarExtensions.CreateXmlElement(xml);
            Assert.IsNotNull(nn);

            System.Xml.XmlNode c1 = nn.SelectSingleNode("./shop/list/shopitem[1]/costs");
            System.Xml.XmlNode c2 = nn.SelectSingleNode("./shop/list/shopitem[2]/costs");
            System.Xml.XmlNode c3 = nn.SelectSingleNode("./shop/list/shopitem[3]/costs");
            Assert.IsNotNull(c1);
            Assert.IsNotNull(c2);
            Assert.IsNotNull(c3);
            Assert.AreEqual("gamecoins", (c1.SelectSingleNode("./stat_cost") as System.Xml.XmlElement).GetAttribute("ikey"));
            Assert.AreEqual("premium_currency", (c2.SelectSingleNode("./stat_cost") as System.Xml.XmlElement).GetAttribute("ikey"));
            Assert.AreEqual("gamecoins", (c3.SelectSingleNode("./stat_cost") as System.Xml.XmlElement).GetAttribute("ikey"));


            IList <Roar.DomainObjects.Cost> cl1 = new List <Roar.DomainObjects.Cost>();
            IList <Roar.DomainObjects.Cost> cl2 = new List <Roar.DomainObjects.Cost>();
            IList <Roar.DomainObjects.Cost> cl3 = new List <Roar.DomainObjects.Cost>();

            System.Xml.XmlNode m1 = nn.SelectSingleNode("./shop/list/shopitem[1]/modifiers");
            System.Xml.XmlNode m2 = nn.SelectSingleNode("./shop/list/shopitem[2]/modifiers");
            System.Xml.XmlNode m3 = nn.SelectSingleNode("./shop/list/shopitem[3]/modifiers");
            Assert.IsNotNull(m1);
            Assert.IsNotNull(m2);
            Assert.IsNotNull(m3);
            IList <Roar.DomainObjects.Modifier> ml1 = new List <Roar.DomainObjects.Modifier>();
            IList <Roar.DomainObjects.Modifier> ml2 = new List <Roar.DomainObjects.Modifier>();
            IList <Roar.DomainObjects.Modifier> ml3 = new List <Roar.DomainObjects.Modifier>();


            Mockery mockery = new Mockery();

            Roar.DataConversion.IXCRMParser ixcrm_parser = mockery.NewMock <Roar.DataConversion.IXCRMParser>();

            Expect.Once.On(ixcrm_parser).Method("ParseCostList").With(new SystemXmlMatcher(c1 as System.Xml.XmlElement)).Will(Return.Value(cl1));
            Expect.Once.On(ixcrm_parser).Method("ParseCostList").With(new SystemXmlMatcher(c2 as System.Xml.XmlElement)).Will(Return.Value(cl2));
            Expect.Once.On(ixcrm_parser).Method("ParseCostList").With(new SystemXmlMatcher(c3 as System.Xml.XmlElement)).Will(Return.Value(cl3));

            Expect.Once.On(ixcrm_parser).Method("ParseModifierList").With(new SystemXmlMatcher(m1 as System.Xml.XmlElement)).Will(Return.Value(ml1));
            Expect.Once.On(ixcrm_parser).Method("ParseModifierList").With(new SystemXmlMatcher(m2 as System.Xml.XmlElement)).Will(Return.Value(ml2));
            Expect.Once.On(ixcrm_parser).Method("ParseModifierList").With(new SystemXmlMatcher(m3 as System.Xml.XmlElement)).Will(Return.Value(ml3));



            Roar.DataConversion.Responses.Shop.List shoplist_response_parser = new Roar.DataConversion.Responses.Shop.List();
            shoplist_response_parser.ixcrm_parser = ixcrm_parser;

            Roar.WebObjects.Shop.ListResponse response = shoplist_response_parser.Build(nn);

            Assert.IsNotNull(response);

            mockery.VerifyAllExpectationsHaveBeenMet();
        }