示例#1
0
        private IEnumerable <IBuild> GetBuildsFromBuildContainer(BuildContainer buildContainer)
        {
            List <D3arDiablo.Build.Build> builds = new List <D3arDiablo.Build.Build>();

            if (buildContainer == null || buildContainer.Build == null)
            {
                return(builds);
            }
            foreach (Build b in buildContainer.Build)
            {
                Dictionary <D3arDiablo.Build.Slot, IItem> items = new Dictionary <D3arDiablo.Build.Slot, IItem>();

                items[D3arDiablo.Build.Slot.CubeArmor]   = GetItemFromSlot(D3arDiablo.Build.Slot.CubeArmor, b.CubeArmor.Item);
                items[D3arDiablo.Build.Slot.CubeJewelry] = GetItemFromSlot(D3arDiablo.Build.Slot.CubeJewelry, b.CubeJewelry.Item);
                items[D3arDiablo.Build.Slot.CubeWeapon]  = GetItemFromSlot(D3arDiablo.Build.Slot.CubeWeapon, b.CubeWeapon.Item);
                items[D3arDiablo.Build.Slot.Feet]        = GetItemFromSlot(D3arDiablo.Build.Slot.Feet, b.Feet.Item);
                items[D3arDiablo.Build.Slot.Hands]       = GetItemFromSlot(D3arDiablo.Build.Slot.Hands, b.Hands.Item);
                items[D3arDiablo.Build.Slot.Head]        = GetItemFromSlot(D3arDiablo.Build.Slot.Head, b.Head.Item);
                items[D3arDiablo.Build.Slot.MainFinger]  = GetItemFromSlot(D3arDiablo.Build.Slot.MainFinger, b.MainFinger.Item);
                items[D3arDiablo.Build.Slot.MainHand]    = GetItemFromSlot(D3arDiablo.Build.Slot.MainHand, b.MainHand.Item);
                items[D3arDiablo.Build.Slot.Neck]        = GetItemFromSlot(D3arDiablo.Build.Slot.Neck, b.Neck.Item);
                items[D3arDiablo.Build.Slot.OffFinger]   = GetItemFromSlot(D3arDiablo.Build.Slot.MainFinger, b.OffFinger.Item);
                items[D3arDiablo.Build.Slot.OffHand]     = GetItemFromSlot(D3arDiablo.Build.Slot.OffHand, b.OffHand.Item);
                items[D3arDiablo.Build.Slot.Shoulder]    = GetItemFromSlot(D3arDiablo.Build.Slot.Shoulder, b.Shoulder.Item);
                items[D3arDiablo.Build.Slot.Torso]       = GetItemFromSlot(D3arDiablo.Build.Slot.Torso, b.Torso.Item);
                items[D3arDiablo.Build.Slot.Waist]       = GetItemFromSlot(D3arDiablo.Build.Slot.Waist, b.Waist.Item);
                items[D3arDiablo.Build.Slot.Wrist]       = GetItemFromSlot(D3arDiablo.Build.Slot.Wrist, b.Wrist.Item);
                items[D3arDiablo.Build.Slot.Legs]        = GetItemFromSlot(D3arDiablo.Build.Slot.Legs, b.Legs.Item);

                D3arDiablo.Build.Build build = new D3arDiablo.Build.Build(b.Name, items);
                builds.Add(build);
            }
            return(builds);
        }
示例#2
0
        public void TestSerialize()
        {
            IItem  helmOfSerialization = new D3arDiablo.Build.Item(D3arDiablo.Build.Slot.Head, "Helm of Serialization", "http://inc47.de", false, false);
            IBuild b = new D3arDiablo.Build.Build("SerializedBuild", new Dictionary <D3arDiablo.Build.Slot, IItem>
            {
                { D3arDiablo.Build.Slot.Head, helmOfSerialization }
            });
            Dictionary <CharacterClass, IEnumerable <IBuild> > builds = new Dictionary <CharacterClass, IEnumerable <IBuild> >
            {
                {
                    CharacterClass.Wizard, new List <IBuild>
                    {
                        b
                    }
                },
                { CharacterClass.Crusader, new List <IBuild>() },
                { CharacterClass.DemonHunter, new List <IBuild>() },
                { CharacterClass.Barbarian, new List <IBuild>() },
                { CharacterClass.Monk, new List <IBuild>() },
                { CharacterClass.WitchDoctor, new List <IBuild>() },
            };

            _serializer.Serialize(builds, _serializationFile);

            FileAssert.Exists(_serializationFile, "XML file was created");
            string           ns           = "{http://inc47.de/BuildSchema}";
            IBuildSerializer deserializer = new BuildSerializer();
            IDictionary <CharacterClass, IEnumerable <IBuild> > deserialized = deserializer.Deserialize(_serializationFile);

            Assert.AreEqual(6, deserialized.Keys.Count);
            IBuild deserializedBuild = deserialized[CharacterClass.Wizard].First();

            Assert.AreEqual("SerializedBuild", deserializedBuild.Name);
            IItem deserializedItem = deserializedBuild.GetItem(D3arDiablo.Build.Slot.Head);

            Assert.AreEqual(helmOfSerialization.Name, deserializedItem.Name, "Should have equal name");
            Assert.AreEqual(helmOfSerialization.Url, deserializedItem.Url, "Should have equal URL");
            Assert.AreEqual(helmOfSerialization.Ancient, deserializedItem.Ancient, "Should both not be required ancient");
            Assert.AreEqual(helmOfSerialization.Found, deserializedItem.Found, "Should both not be found");
            Assert.IsTrue(deserializedItem.Equals(helmOfSerialization));

            foreach (D3arDiablo.Build.Slot s in Enum.GetValues(typeof(D3arDiablo.Build.Slot)))
            {
                if (!s.Equals(D3arDiablo.Build.Slot.Head))
                {
                    IItem item = deserializedBuild.GetItem(D3arDiablo.Build.Slot.CubeArmor);
                    Console.WriteLine(s + item.Name);
                    Assert.IsTrue(item.GetType() == typeof(UnspecifiedItem));
                }
            }
        }