diff --git a/spec/System/TestCompareTab_spec.lua b/spec/System/TestCompareTab_spec.lua index 764a10cf1c..1eeb3313ed 100644 --- a/spec/System/TestCompareTab_spec.lua +++ b/spec/System/TestCompareTab_spec.lua @@ -22,4 +22,20 @@ describe("CompareTab", function() assert.is_false(control:IsShown()) end end) + it("reproduces matching-socket gem quality when comparing a build with itself", function() + newBuild() + build.itemsTab:CreateDisplayItemFromRaw( + "Rarity: RARE\nTest Subject\nSage's Robe\nQuality: 0\nSockets: B-B-B\nImplicits: 0\n") + build.itemsTab:AddDisplayItem() + build.skillsTab:PasteSocketGroup("Slot: Body Armour\nFireball 20/0 1\n") + runCallback("OnFrame") + assert.are.equals(10, build.calcsTab.mainOutput.GemQuality) + + -- doesn't actually save to a file, just encodes as xml + local entry = new("CompareEntry"):CompareEntry(build:SaveDB("code"), "Self") + + assert.is_true(entry.skillsTab.socketGroupList[1].gemList[1].matchesSocket) + assert.are.equals(build.calcsTab.mainOutput.GemQuality, entry.calcsTab.mainOutput.GemQuality) + assert.are.equals(build.calcsTab.mainOutput.CombinedDPS, entry.calcsTab.mainOutput.CombinedDPS) + end) end) diff --git a/src/Classes/CompareEntry.lua b/src/Classes/CompareEntry.lua index 2d97f4eb9c..52925c7515 100644 --- a/src/Classes/CompareEntry.lua +++ b/src/Classes/CompareEntry.lua @@ -178,6 +178,8 @@ function CompareEntryClass:LoadFromXML(xmlText) end self:SyncCalcsSkillSelection() + -- reprocess socket groups as they might depend on items which don't necessarily load first. + self.skillsTab:UpdateSocketGroups() wipeGlobalCache() self.calcsTab:BuildOutput() self.buildFlag = false @@ -248,6 +250,7 @@ end function CompareEntryClass:Rebuild() wipeGlobalCache() self.outputRevision = self.outputRevision + 1 + self.skillsTab:UpdateSocketGroups() self.calcsTab:BuildOutput() self.buildFlag = false end