Exemple #1
0
        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));
        }
Exemple #4
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));
                }
            }
        }