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