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