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.
262 lines
6.1 KiB
262 lines
6.1 KiB
dofile("wow_api.lua")
|
|
dofile("LibStub.lua")
|
|
dofile("../CallbackHandler-1.0/CallbackHandler-1.0.lua")
|
|
dofile("../AceDB-3.0/AceDB-3.0.lua")
|
|
dofile("serialize.lua")
|
|
|
|
-- Test the defaults system
|
|
do
|
|
|
|
local defaults = {
|
|
profile = {
|
|
singleEntry = "singleEntry",
|
|
tableEntry = {
|
|
tableDefault = "tableDefault",
|
|
},
|
|
starTest = {
|
|
["*"] = {
|
|
starDefault = "starDefault",
|
|
},
|
|
sibling = {
|
|
siblingDefault = "siblingDefault",
|
|
},
|
|
},
|
|
doubleStarTest = {
|
|
["**"] = {
|
|
doubleStarDefault = "doubleStarDefault",
|
|
},
|
|
sibling = {
|
|
siblingDefault = "siblingDefault",
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
local db = LibStub("AceDB-3.0"):New("MyDB", defaults)
|
|
assert(db.profile.singleEntry == "singleEntry")
|
|
assert(db.profile.tableEntry.tableDefault == "tableDefault")
|
|
assert(db.profile.starTest.randomkey.starDefault == "starDefault")
|
|
assert(db.profile.starTest.sibling.siblingDefault == "siblingDefault")
|
|
assert(db.profile.starTest.sibling.starDefault == nil)
|
|
assert(db.profile.doubleStarTest.randomkey.doubleStarDefault == "doubleStarDefault")
|
|
assert(db.profile.doubleStarTest.sibling.siblingDefault == "siblingDefault")
|
|
assert(db.profile.doubleStarTest.sibling.doubleStarDefault == "doubleStarDefault")
|
|
end
|
|
|
|
-- Test the dynamic creation of sections
|
|
do
|
|
local defaults = {
|
|
char = { alpha = "alpha",},
|
|
realm = { beta = "beta",},
|
|
class = { gamma = "gamma",},
|
|
race = { delta = "delta",},
|
|
faction = { epsilon = "epsilon",},
|
|
factionrealm = { zeta = "zeta",},
|
|
profile = { eta = "eta",},
|
|
global = { theta = "theta",},
|
|
}
|
|
|
|
local db = LibStub("AceDB-3.0"):New({}, defaults)
|
|
|
|
assert(rawget(db, "char") == nil)
|
|
assert(rawget(db, "realm") == nil)
|
|
assert(rawget(db, "class") == nil)
|
|
assert(rawget(db, "race") == nil)
|
|
assert(rawget(db, "faction") == nil)
|
|
assert(rawget(db, "factionrealm") == nil)
|
|
assert(rawget(db, "profile") == nil)
|
|
assert(rawget(db, "global") == nil)
|
|
assert(rawget(db, "profiles") == nil)
|
|
|
|
-- Check dynamic default creation
|
|
assert(db.char.alpha == "alpha")
|
|
assert(db.realm.beta == "beta")
|
|
assert(db.class.gamma == "gamma")
|
|
assert(db.race.delta == "delta")
|
|
assert(db.faction.epsilon == "epsilon")
|
|
assert(db.factionrealm.zeta == "zeta")
|
|
assert(db.profile.eta == "eta")
|
|
assert(db.global.theta == "theta")
|
|
end
|
|
|
|
-- Test OnProfileChanged
|
|
do
|
|
local testdb = LibStub("AceDB-3.0"):New({})
|
|
|
|
local triggers = {}
|
|
|
|
local function OnProfileChanged(message, db, ...)
|
|
if message == "OnProfileChanged" and db == testdb then
|
|
local profile = ...
|
|
assert(profile == "Healers")
|
|
triggers[message] = true
|
|
end
|
|
end
|
|
|
|
testdb:RegisterCallback("OnProfileChanged", OnProfileChanged)
|
|
testdb:SetProfile("Healers")
|
|
assert(triggers.OnProfileChanged)
|
|
end
|
|
|
|
-- Test GetProfiles() fix for ACE-35
|
|
do
|
|
local db = LibStub("AceDB-3.0"):New({})
|
|
|
|
local profiles = {
|
|
"Healers",
|
|
"Tanks",
|
|
"Hunter",
|
|
}
|
|
|
|
for idx,profile in ipairs(profiles) do
|
|
db:SetProfile(profile)
|
|
end
|
|
|
|
local profileList = db:GetProfiles()
|
|
table.sort(profileList)
|
|
assert(profileList[1] == "Healers")
|
|
assert(profileList[2] == "Hunter")
|
|
assert(profileList[3] == "Tanks")
|
|
assert(profileList[4] == UnitName("player" .. " - " .. GetRealmName()))
|
|
end
|
|
|
|
-- Very simple default test
|
|
do
|
|
local defaults = {
|
|
profile = {
|
|
sub = {
|
|
["*"] = {
|
|
sub2 = {},
|
|
sub3 = {},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
local db = LibStub("AceDB-3.0"):New({}, defaults)
|
|
|
|
assert(type(db.profile.sub.monkey.sub2) == "table")
|
|
assert(type(db.profile.sub.apple.sub3) == "table")
|
|
|
|
db.profile.sub.random.sub2.alpha = "alpha"
|
|
end
|
|
|
|
-- Table insert kills us
|
|
do
|
|
local defaults = {
|
|
profile = {
|
|
["*"] = {},
|
|
},
|
|
}
|
|
|
|
local db = LibStub("AceDB-3.0"):New({}, defaults)
|
|
|
|
table.insert(db.profile.monkey, "alpha")
|
|
table.insert(db.profile.random, "beta")
|
|
|
|
-- Here, the tables db.profile.monkey should be REAL, not cached
|
|
assert(rawget(db.profile, "monkey"))
|
|
end
|
|
|
|
|
|
-- Test multi-level defaults for hyper
|
|
do
|
|
local defaults = {
|
|
profile = {
|
|
autoSendRules = {
|
|
['*'] = {
|
|
include = {
|
|
['*'] = {},
|
|
},
|
|
exclude = {
|
|
['*'] = {},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
local db = LibStub("AceDB-3.0"):New({}, defaults)
|
|
|
|
assert(rawget(db.profile.autoSendRules.Cairthas.include, "ptSets") == nil)
|
|
assert(rawget(db.profile.autoSendRules.Cairthas.include, "items") == nil)
|
|
table.insert(db.profile.autoSendRules.Cairthas.include.ptSets, "TradeSkill.Mat.ByProfession.Leatherworking")
|
|
table.insert(db.profile.autoSendRules.Cairthas.include.items, "Light Leather")
|
|
|
|
db.profile.autoSendRules.Cairthas.include.ptSets.boo = true
|
|
|
|
-- Tables should be real now, not cached.
|
|
assert(rawget(db.profile.autoSendRules.Cairthas.include, "ptSets"))
|
|
assert(rawget(db.profile.autoSendRules.Cairthas.include, "items"))
|
|
end
|
|
|
|
do
|
|
local testdb = LibStub("AceDB-3.0"):New("testdbtable", {profile = { test = 2, test3 = { a=1}}})
|
|
assert(testdb.profile.test == 2) --true
|
|
testdb.profile.test = 3
|
|
testdb.profile.test2 = 4
|
|
testdb.profile.test3.b = 2
|
|
assert(testdb.profile.test == 3) --true
|
|
assert(testdb.profile.test2 == 4) --true
|
|
local firstprofile = testdb:GetCurrentProfile()
|
|
testdb:SetProfile("newprofile")
|
|
assert(testdb.profile.test == 2) --true
|
|
testdb:CopyProfile(firstprofile)
|
|
assert(testdb.profile.test == 3) --false, the value is 2
|
|
assert(testdb.profile.test2 == 4) --true
|
|
assert(testdb.profile.test3.a == 1)
|
|
end
|
|
|
|
do
|
|
local testdb = LibStub("AceDB-3.0"):New({})
|
|
testdb:SetProfile("testprofile")
|
|
testdb:SetProfile("testprofile2")
|
|
testdb:SetProfile("testprofile")
|
|
assert(#testdb:GetProfiles() == 3)
|
|
end
|
|
|
|
do
|
|
|
|
local TestDB = {
|
|
["namespaces"] = {
|
|
["Space"] = {
|
|
["profiles"] = {
|
|
["Default"] = {
|
|
},
|
|
},
|
|
},
|
|
},
|
|
["profiles"] = {
|
|
["Default"] = {
|
|
["notEmpty"] = true,
|
|
},
|
|
["Test"] = {
|
|
},
|
|
},
|
|
["char"] = {
|
|
["TestChar - SomeRealm"] = {
|
|
},
|
|
},
|
|
["realm"] = {
|
|
["SomeRealm"] = {
|
|
["notEmpty"] = true,
|
|
},
|
|
},
|
|
}
|
|
|
|
local nsdef = {
|
|
profile = {
|
|
bla = true,
|
|
}
|
|
}
|
|
|
|
wipe(LibStub("AceDB-3.0").db_registry)
|
|
local testdb = LibStub("AceDB-3.0"):New(TestDB, nil, true)
|
|
local ns = testdb:RegisterNamespace("Space", nsdef)
|
|
|
|
WoWAPI_FireEvent("PLAYER_LOGOUT")
|
|
assert(not TestDB.char)
|
|
assert(TestDB.profiles.Test)
|
|
assert(TestDB.realm.SomeRealm.notEmpty)
|
|
assert(not TestDB.namespaces.Space.profiles)
|
|
end
|
|
|