You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
267 lines
8.3 KiB
267 lines
8.3 KiB
|
3 years ago
|
--[[
|
||
|
|
LibItemBuffs-1.0 - buff-to-item database.
|
||
|
|
(c) 2013-2018 Adirelle (adirelle@gmail.com)
|
||
|
|
|
||
|
|
This file is part of LibItemBuffs-1.0.
|
||
|
|
|
||
|
|
LibItemBuffs-1.0 is free software: you can redistribute it and/or modify
|
||
|
|
it under the terms of the GNU General Public License as published by
|
||
|
|
the Free Software Foundation, either version 3 of the License, or
|
||
|
|
(at your option) any later version.
|
||
|
|
|
||
|
|
LibItemBuffs-1.0 is distributed in the hope that it will be useful,
|
||
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
|
GNU General Public License for more details.
|
||
|
|
|
||
|
|
You should have received a copy of the GNU General Public License
|
||
|
|
along with LibItemBuffs-1.0. If not, see <http://www.gnu.org/licenses/>.
|
||
|
|
--]]
|
||
|
|
|
||
|
|
package.path = package.path .. ";./tests/wowmock/?.lua"
|
||
|
|
local LuaUnit = require('luaunit')
|
||
|
|
local mockagne = require('mockagne')
|
||
|
|
local wowmock = require('wowmock')
|
||
|
|
|
||
|
|
local when, verify = mockagne.when, mockagne.verify
|
||
|
|
|
||
|
|
local lib
|
||
|
|
|
||
|
|
INVSLOT_TRINKET1 = "INVSLOT_TRINKET1"
|
||
|
|
INVSLOT_TRINKET2 = "INVSLOT_TRINKET2"
|
||
|
|
|
||
|
|
LibStub = false
|
||
|
|
|
||
|
|
local function setup()
|
||
|
|
G = mockagne:getMock()
|
||
|
|
lib = wowmock("./LibItemBuffs-1.0.lua", G)
|
||
|
|
end
|
||
|
|
|
||
|
|
testUpgradeDatabase = { setup = setup }
|
||
|
|
|
||
|
|
function testUpgradeDatabase:test_first_data()
|
||
|
|
lib:__UpgradeDatabase(10, {}, {}, {})
|
||
|
|
assertEquals(lib:GetDatabaseVersion(), 10)
|
||
|
|
end
|
||
|
|
|
||
|
|
function testUpgradeDatabase:test_newer_data()
|
||
|
|
lib:__UpgradeDatabase(10, {}, {}, {})
|
||
|
|
lib:__UpgradeDatabase(15, {}, {}, {})
|
||
|
|
assertEquals(lib:GetDatabaseVersion(), 15)
|
||
|
|
end
|
||
|
|
|
||
|
|
function testUpgradeDatabase:test_older_data()
|
||
|
|
lib:__UpgradeDatabase(10, {}, {}, {})
|
||
|
|
lib:__UpgradeDatabase(5, {}, {}, {})
|
||
|
|
assertEquals(lib:GetDatabaseVersion(), 10)
|
||
|
|
end
|
||
|
|
|
||
|
|
function testUpgradeDatabase:test_invalid_version()
|
||
|
|
local success, msg = pcall(lib.__UpgradeDatabase, lib, "bla")
|
||
|
|
assertEquals(success, false)
|
||
|
|
assertEquals(msg:match('Usage:'), 'Usage:')
|
||
|
|
end
|
||
|
|
|
||
|
|
function testUpgradeDatabase:test_invalid_trinkets()
|
||
|
|
local success, msg = pcall(lib.__UpgradeDatabase, lib, 10, "bla")
|
||
|
|
assertEquals(success, false)
|
||
|
|
assertEquals(msg:match('Usage:'), 'Usage:')
|
||
|
|
end
|
||
|
|
|
||
|
|
function testUpgradeDatabase:test_invalid_consumables()
|
||
|
|
local success, msg = pcall(lib.__UpgradeDatabase, lib, 10, {}, "bla")
|
||
|
|
assertEquals(success, false)
|
||
|
|
assertEquals(msg:match('Usage:'), 'Usage:')
|
||
|
|
end
|
||
|
|
|
||
|
|
function testUpgradeDatabase:test_invalid_enchantments()
|
||
|
|
local success, msg = pcall(lib.__UpgradeDatabase, lib, 10, {}, {}, "bla")
|
||
|
|
assertEquals(success, false)
|
||
|
|
assertEquals(msg:match('Usage:'), 'Usage:')
|
||
|
|
end
|
||
|
|
|
||
|
|
testIsItemBuff = { setup = setup }
|
||
|
|
|
||
|
|
function testIsItemBuff:test_trinkets()
|
||
|
|
lib:__UpgradeDatabase(10, {[20] = 10}, {}, {})
|
||
|
|
assertEquals(lib:IsItemBuff(20), true)
|
||
|
|
end
|
||
|
|
|
||
|
|
function testIsItemBuff:test_consumables()
|
||
|
|
lib:__UpgradeDatabase(10, {}, {[20] = 10}, {})
|
||
|
|
assertEquals(lib:IsItemBuff(20), true)
|
||
|
|
end
|
||
|
|
|
||
|
|
function testIsItemBuff:test_enchantments()
|
||
|
|
lib:__UpgradeDatabase(10, {}, {}, {[20] = 10})
|
||
|
|
assertEquals(lib:IsItemBuff(20), true)
|
||
|
|
end
|
||
|
|
|
||
|
|
function testIsItemBuff:test_unknown()
|
||
|
|
lib:__UpgradeDatabase(10, {}, {}, {})
|
||
|
|
assertEquals(lib:IsItemBuff(20), false)
|
||
|
|
end
|
||
|
|
|
||
|
|
testGetBuffInventorySlot = { setup = setup }
|
||
|
|
|
||
|
|
function testGetBuffInventorySlot:test_no_spell()
|
||
|
|
assertEquals(lib:GetBuffInventorySlot(), nil)
|
||
|
|
end
|
||
|
|
|
||
|
|
function testGetBuffInventorySlot:test_enchantments()
|
||
|
|
lib:__UpgradeDatabase(10, {}, {}, {[10] = INVSLOT_TRINKET1})
|
||
|
|
assertEquals(lib:GetBuffInventorySlot(10), INVSLOT_TRINKET1)
|
||
|
|
end
|
||
|
|
|
||
|
|
function testGetBuffInventorySlot:test_trinket1()
|
||
|
|
when(G.GetInventoryItemID("player", INVSLOT_TRINKET1)).thenAnswer(500)
|
||
|
|
when(G.GetInventoryItemID("player", INVSLOT_TRINKET2)).thenAnswer(200)
|
||
|
|
|
||
|
|
lib:__UpgradeDatabase(10, {[10] = 500}, {}, {})
|
||
|
|
|
||
|
|
local slot = lib:GetBuffInventorySlot(10)
|
||
|
|
|
||
|
|
verify(G.GetInventoryItemID("player", INVSLOT_TRINKET1))
|
||
|
|
verify(G.GetInventoryItemID("player", INVSLOT_TRINKET2))
|
||
|
|
|
||
|
|
assertEquals(slot, INVSLOT_TRINKET1)
|
||
|
|
end
|
||
|
|
|
||
|
|
function testGetBuffInventorySlot:test_trinket2()
|
||
|
|
when(G.GetInventoryItemID("player", INVSLOT_TRINKET1)).thenAnswer(200)
|
||
|
|
when(G.GetInventoryItemID("player", INVSLOT_TRINKET2)).thenAnswer(500)
|
||
|
|
|
||
|
|
lib:__UpgradeDatabase(10, {[10] = 500}, {}, {})
|
||
|
|
|
||
|
|
local slot = lib:GetBuffInventorySlot(10)
|
||
|
|
|
||
|
|
verify(G.GetInventoryItemID("player", INVSLOT_TRINKET1))
|
||
|
|
verify(G.GetInventoryItemID("player", INVSLOT_TRINKET2))
|
||
|
|
|
||
|
|
assertEquals(slot, INVSLOT_TRINKET2)
|
||
|
|
end
|
||
|
|
|
||
|
|
function testGetBuffInventorySlot:test_multiple_trinkets()
|
||
|
|
when(G.GetInventoryItemID("player", INVSLOT_TRINKET1)).thenAnswer(500)
|
||
|
|
when(G.GetInventoryItemID("player", INVSLOT_TRINKET2)).thenAnswer(200)
|
||
|
|
|
||
|
|
lib:__UpgradeDatabase(10, {[10] = 500, [12] = 500}, {}, {})
|
||
|
|
|
||
|
|
local slot10 = lib:GetBuffInventorySlot(10)
|
||
|
|
local slot12 = lib:GetBuffInventorySlot(12)
|
||
|
|
|
||
|
|
verify(G.GetInventoryItemID("player", INVSLOT_TRINKET1))
|
||
|
|
verify(G.GetInventoryItemID("player", INVSLOT_TRINKET2))
|
||
|
|
|
||
|
|
assertEquals(slot10, INVSLOT_TRINKET1)
|
||
|
|
assertEquals(slot12, INVSLOT_TRINKET1)
|
||
|
|
end
|
||
|
|
|
||
|
|
testGetBuffItemID = { setup = setup }
|
||
|
|
|
||
|
|
function testGetBuffItemID:test_no_spell()
|
||
|
|
assertEquals(lib:GetBuffItemID(), nil)
|
||
|
|
end
|
||
|
|
|
||
|
|
function testGetBuffItemID:test_trinket()
|
||
|
|
lib:__UpgradeDatabase(10, {[10] = 500}, {}, {})
|
||
|
|
assertEquals(lib:GetBuffItemID(10), 500)
|
||
|
|
end
|
||
|
|
|
||
|
|
function testGetBuffItemID:test_consumable()
|
||
|
|
lib:__UpgradeDatabase(10, {}, {[10] = 500}, {})
|
||
|
|
assertEquals(lib:GetBuffItemID(10), 500)
|
||
|
|
end
|
||
|
|
|
||
|
|
function testGetBuffItemID:test_enchantement()
|
||
|
|
when(G.GetInventoryItemID("player", INVSLOT_TRINKET1)).thenAnswer(500)
|
||
|
|
|
||
|
|
lib:__UpgradeDatabase(10, {}, {}, {[10] = INVSLOT_TRINKET1})
|
||
|
|
|
||
|
|
local itemID = lib:GetBuffItemID(10)
|
||
|
|
|
||
|
|
verify(G.GetInventoryItemID("player", INVSLOT_TRINKET1))
|
||
|
|
|
||
|
|
assertEquals(itemID, 500)
|
||
|
|
end
|
||
|
|
|
||
|
|
function testGetBuffItemID:test_multiple_trinkets()
|
||
|
|
lib:__UpgradeDatabase(10, {[10] = { 200, 500 }}, {}, {})
|
||
|
|
assertEquals({lib:GetBuffItemID(10)}, {200, 500})
|
||
|
|
end
|
||
|
|
|
||
|
|
function testGetBuffItemID:test_multiple_consumables()
|
||
|
|
lib:__UpgradeDatabase(10, {}, {[10] = { 200, 500 }}, {})
|
||
|
|
assertEquals({lib:GetBuffItemID(10)}, {200, 500})
|
||
|
|
end
|
||
|
|
|
||
|
|
testGetInventorySlotList = { setup = setup }
|
||
|
|
|
||
|
|
function testGetInventorySlotList:test_different_slots()
|
||
|
|
lib:__UpgradeDatabase(10, {}, {}, {[10] = INVSLOT_TRINKET1, [12] = INVSLOT_TRINKET2})
|
||
|
|
assertEquals(lib:GetInventorySlotList(10), {INVSLOT_TRINKET2, INVSLOT_TRINKET1})
|
||
|
|
end
|
||
|
|
|
||
|
|
function testGetInventorySlotList:test_same_slot()
|
||
|
|
lib:__UpgradeDatabase(10, {}, {}, {[10] = INVSLOT_TRINKET1, [12] = INVSLOT_TRINKET1})
|
||
|
|
assertEquals(lib:GetInventorySlotList(10), {INVSLOT_TRINKET1})
|
||
|
|
end
|
||
|
|
|
||
|
|
testGetItemBuffs = { setup = setup }
|
||
|
|
|
||
|
|
function testGetItemBuffs:test_on_spell()
|
||
|
|
assertEquals(lib:GetItemBuffs(), nil)
|
||
|
|
end
|
||
|
|
|
||
|
|
function testGetItemBuffs:test_trinkets()
|
||
|
|
lib:__UpgradeDatabase(10, {[10] = 500}, {}, {})
|
||
|
|
assertEquals(lib:GetItemBuffs(500), 10)
|
||
|
|
end
|
||
|
|
|
||
|
|
function testGetItemBuffs:test_consumables()
|
||
|
|
lib:__UpgradeDatabase(10, {}, {[10] = 500}, {})
|
||
|
|
assertEquals(lib:GetItemBuffs(500), 10)
|
||
|
|
end
|
||
|
|
|
||
|
|
function testGetItemBuffs:test_multiple_trinkets()
|
||
|
|
lib:__UpgradeDatabase(10, {}, {[10] = 500, [12] = 500}, {})
|
||
|
|
assertEquals({lib:GetItemBuffs(500)}, {10, 12})
|
||
|
|
end
|
||
|
|
|
||
|
|
function testGetItemBuffs:test_multiple_consumables()
|
||
|
|
lib:__UpgradeDatabase(10, {}, {[10] = 500, [12] = 500}, {})
|
||
|
|
assertEquals({lib:GetItemBuffs(500)}, {10, 12})
|
||
|
|
end
|
||
|
|
|
||
|
|
function testGetItemBuffs:test_multiple_mixed()
|
||
|
|
lib:__UpgradeDatabase(10, {[10] = 500}, {[12] = 500}, {})
|
||
|
|
assertEquals({lib:GetItemBuffs(500)}, {10, 12})
|
||
|
|
end
|
||
|
|
|
||
|
|
function testGetItemBuffs:test_complex()
|
||
|
|
lib:__UpgradeDatabase(10, {[10] = {500, 502}}, {[12] = 500, [14] = 502}, {})
|
||
|
|
assertEquals({lib:GetItemBuffs(500)}, {10, 12})
|
||
|
|
assertEquals({lib:GetItemBuffs(502)}, {10, 14})
|
||
|
|
end
|
||
|
|
|
||
|
|
function testGetItemBuffs:test_GH_37()
|
||
|
|
lib:__UpgradeDatabase(10, {
|
||
|
|
[146046] = { -- Expanded Mind
|
||
|
|
105422, -- Purified Bindings of Immerseus
|
||
|
|
104426, -- Purified Bindings of Immerseus
|
||
|
|
105173, -- Purified Bindings of Immerseus
|
||
|
|
102293, -- Purified Bindings of Immerseus
|
||
|
|
104675, -- Purified Bindings of Immerseus
|
||
|
|
104924, -- Purified Bindings of Immerseus
|
||
|
|
}
|
||
|
|
}, {}, {})
|
||
|
|
assertEquals(lib:GetItemBuffs(105422), 146046)
|
||
|
|
assertEquals(lib:GetItemBuffs(104426), 146046)
|
||
|
|
assertEquals(lib:GetItemBuffs(105173), 146046)
|
||
|
|
assertEquals(lib:GetItemBuffs(102293), 146046)
|
||
|
|
assertEquals(lib:GetItemBuffs(104675), 146046)
|
||
|
|
assertEquals(lib:GetItemBuffs(104924), 146046)
|
||
|
|
end
|
||
|
|
|
||
|
|
os.exit(LuaUnit:Run())
|