Beispiel #1
0
        public void TestAddItemReplaces()
        {
            IBuild build   = new Build();
            IItem  initial = new Item(Slot.Head, "Helm of Initialness", "www.inc47.de", false, false);

            build.AddItem(Slot.Head, initial);
            IItem replacement = new Item(Slot.Head, "Helm of Replacement", "www.google.de", true, true);

            build.AddItem(Slot.Head, replacement);

            Assert.AreEqual(replacement, build.GetItem(Slot.Head));
        }
Beispiel #2
0
        public void TestEqualsInequalityOnNull()
        {
            IBuild b1 = new Build();

            b1.Name = "A Build";
            b1.AddItem(Slot.CubeArmor, new Item(Slot.CubeArmor, "An Item", "www.inc47.de", true, true));
            Assert.IsFalse(b1.Equals(null));
        }
        /// <summary>
        /// Decodes the specified build.
        /// </summary>
        /// <param name="buildValue">The build value.</param>
        /// <returns>
        /// The xml structure.
        /// </returns>
        public Build Decode(string buildValue)
        {
            if (this._knownGems == null)
            {
                throw new InvalidOperationException("Must be initialized");
            }

            var build = new Build()
            {
                Value = buildValue,
            };

            var document      = XDocument.Parse(GetXml(buildValue));
            var skillsElement = document.Root.Element("Skills");

            if (skillsElement != null)
            {
                foreach (var element in skillsElement.Elements())
                {
                    var skill = Skill.FromXml(element, this._knownGems);
                    if (skill.Gems.Any())
                    {
                        build.AddSkill(skill);
                    }
                }
            }

            var treeElement = document.Root.Element("Tree");

            if (treeElement != null)
            {
                var urlElement = treeElement.Descendants("URL").FirstOrDefault();
                build.SkillTreeUrl = urlElement.Value.Trim().Replace("passive-skill-tree", "fullscreen-passive-skill-tree");
            }

            var itemsElement = document.Root.Element("Items");

            foreach (var element in itemsElement.Elements())
            {
                var value = element.Value.GetLineAfter("Rarity: ");
                if (value != null)
                {
                    var lines  = value.Split('\n');
                    var rarity = lines.FirstOrDefault();
                    if (rarity == "UNIQUE" && lines.Length > 2)
                    {
                        var name       = lines[1];
                        var uniqueItem = this._knownUniques.FirstOrDefault(u => u.Name == name);
                        if (uniqueItem != null)
                        {
                            build.AddItem(uniqueItem);
                        }
                    }
                }
            }

            return(build);
        }
Beispiel #4
0
        public void TestAddItem()
        {
            IBuild b         = new Build();
            IItem  addedItem = new Item(Slot.Head, "Helm of Additional Items", "www.inc47.de", true, true);

            b.AddItem(Slot.Head, addedItem);

            IItem head = b.GetItem(Slot.Head);

            Assert.AreEqual(addedItem, head);
        }
Beispiel #5
0
        public void TestEqualsInequalityOnItemPropertyDifference()
        {
            IBuild b1 = new Build();

            b1.Name = "A Build";
            b1.AddItem(Slot.CubeArmor, new Item(Slot.CubeArmor, "An Item", "www.inc47.de", true, true));
            IBuild b2 = new Build();

            b2.Name = "A Build";
            b2.AddItem(Slot.CubeArmor, new Item(Slot.CubeArmor, "No Item", "www.inc47.de/item", false, false));
            Assert.IsFalse(b1.Equals(b2));
        }
Beispiel #6
0
        public void TestEquals()
        {
            IBuild b1 = new Build();

            b1.Name = "A Build";
            b1.AddItem(Slot.CubeArmor, new Item(Slot.CubeArmor, "An Item", "www.inc47.de", true, true));
            IBuild b2 = new Build();

            b2.Name = "A Build";
            b2.AddItem(Slot.CubeArmor, new Item(Slot.CubeArmor, "An Item", "www.inc47.de", true, true));
            Assert.IsTrue(b1.Equals(b2));
        }
        /// <summary>
        /// Decodes the specified build.
        /// </summary>
        /// <param name="buildValue">The build value.</param>
        /// <returns>
        /// The xml structure.
        /// </returns>
        public Build Decode(string buildValue)
        {
            if (this._knownGems == null)
            {
                throw new InvalidOperationException("Must be initialized");
            }

            var build = new Build()
            {
                Value = buildValue,
            };

            var xml = GetXml(buildValue);

            if (string.IsNullOrEmpty(xml))
            {
                return(build);
            }

            build.Xml = xml;
            var document = XDocument.Parse(build.Xml);

            var buildElement = document.Root.Element("Build");

            if (buildElement != null)
            {
                var classAttribute = buildElement.Attribute("className");
                if (classAttribute != null)
                {
                    build.Class = classAttribute.Value;
                }

                var ascendancyAttribute = buildElement.Attribute("ascendClassName");
                if (ascendancyAttribute != null)
                {
                    build.Ascendancy = ascendancyAttribute.Value;
                }
            }

            var notesElement = document.Root.Element("Notes");

            if (notesElement != null)
            {
                build.Notes = notesElement.Value.Trim();
            }

            var skillsElement = document.Root.Element("Skills");

            if (skillsElement != null)
            {
                foreach (var element in skillsElement.Elements())
                {
                    var skill = Skill.FromXml(element, this._knownGems);
                    if (skill.Gems.Any())
                    {
                        build.AddSkill(skill);
                    }
                }
            }

            var treeElement = document.Root.Element("Tree");

            if (treeElement != null)
            {
                var urlElement = treeElement.Descendants("URL").OrderByDescending(d => d.Value).FirstOrDefault();
                build.SkillTreeUrl = urlElement.Value.Trim().Replace("passive-skill-tree", "fullscreen-passive-skill-tree");
            }

            var itemsElement = document.Root.Element("Items");

            if (itemsElement != null)
            {
                foreach (var element in itemsElement.Elements())
                {
                    var value = element.Value.GetLineAfter("Rarity: ");
                    if (value != null)
                    {
                        var lines  = value.Split('\n');
                        var rarity = lines.FirstOrDefault();
                        if (rarity == "UNIQUE" && lines.Length > 2)
                        {
                            var name       = lines[1];
                            var uniqueItem = this._knownUniques.FirstOrDefault(u => u.Name == name);
                            if (uniqueItem != null)
                            {
                                build.AddItem(uniqueItem);
                            }
                        }
                    }
                }
            }

            return(build);
        }