public void TestStoreAtDefaultLocation() { FileAssert.DoesNotExist(_testLocation); FileStream openStream = File.Create(_testLocation); openStream.Close(); StorageSettings.StorageDefaultLocation = _testLocation; Environment.CurrentDirectory = TestContext.CurrentContext.TestDirectory; IDictionary <CharacterClass, IEnumerable <IBuild> > builds = new Dictionary <CharacterClass, IEnumerable <IBuild> >(); builds[CharacterClass.Barbarian] = new List <IBuild>() { BuildBuilder.BuildDefaultBuild() }; _manager = new StorageManager(); _manager.StoreAtDefaultLocation(builds); FileAssert.Exists(_testLocation); string[] lines = File.ReadAllLines(_testLocation); Assert.IsTrue(lines.Length > 0); Assert.IsFalse(string.IsNullOrEmpty(lines[0])); IBuildSerializer serializer = new BuildSerializer(); IDictionary <CharacterClass, IEnumerable <IBuild> > deserializedBuilds = serializer.Deserialize(_testLocation); Assert.AreEqual(1, deserializedBuilds[CharacterClass.Barbarian].Count()); Assert.AreEqual(BuildBuilder.BuildDefaultBuild(), deserializedBuilds[CharacterClass.Barbarian].First()); }
public void StoreAtDefaultLocation(IDictionary <CharacterClass, IEnumerable <IBuild> > builds) { if (File.Exists(_storagePath)) { Console.WriteLine("Deleting previous storage version at " + _storagePath); File.Delete(_storagePath); } IBuildSerializer serializer = new BuildSerializer(); serializer.Serialize(builds, _storagePath); Console.WriteLine("New storage saved to " + _storagePath); }
public IDictionary <CharacterClass, IEnumerable <IBuild> > LoadFromDefaultLocation() { Console.WriteLine("Loading builds from location: '" + _storagePath + "'"); if (!File.Exists(_storagePath)) { Console.WriteLine("Storage does not exist. Creating default empty storage..."); CreateDefaultStorage(); } IBuildSerializer serializer = new BuildSerializer(); return(serializer.Deserialize(_storagePath)); }
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)); } } }