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.

109 lines
3.9 KiB

local MAJOR="AceConsole-3.0"
dofile("wow_api.lua")
dofile("LibStub.lua")
dofile("../"..MAJOR.."/"..MAJOR..".lua")
local AC = assert(LibStub(MAJOR))
----------------------------------------------------------
-- Simple tests
-- (no need to explicitly test startpos; if multi-arg tests work, it works)
local a1,a2 = AC:GetArgs("") -- no arg
assert(a1==nil and a2==1e9)
local a1,a2 = AC:GetArgs(" ") -- still no arg
assert(a1==nil and a2==1e9)
local a1,a2 = AC:GetArgs("a1") -- simple
assert(a1=="a1" and a2==1e9)
local a1 = AC:GetArgs("a1", 0) -- fetch 0 args
assert(a1==1)
local a1 = AC:GetArgs(" a1", 0) -- fetch 0 args, leading space
assert(a1==3)
local a1,a2 = AC:GetArgs("a1 a2") -- args remaining, check nextpos
assert(a1=="a1" and a2==4)
local a1,a2 = AC:GetArgs("a1 a2") -- args remaining, check nextpos
assert(a1=="a1" and a2==6, dump(a1,a2))
local a1,a2,a3 = AC:GetArgs("a1 a2", 2) -- 2 args
assert(a1=="a1" and a2=="a2" and a3==1e9)
local a1,a2,a3 = AC:GetArgs(" a1 a2 ", 2) -- surplous space
assert(a1=="a1" and a2=="a2" and a3==1e9, dump(a1,a2,a3))
local a1,a2,a3 = AC:GetArgs(" a1 a2 ", 2) -- one more space at end
assert(a1=="a1" and a2=="a2" and a3==1e9, dump(a1,a2,a3))
local a1,a2,a3 = AC:GetArgs(" a1 ", 2) -- missing arg2
assert(a1=="a1" and a2==nil and a3==1e9, dump(a1,a2,a3))
----------------------------------------------------------
-- Test quoting
local a1,a2 = AC:GetArgs([["a1"]]) -- simple quote
assert(a1=="a1" and a2==1e9, dump(a1,a2))
local a1,a2 = AC:GetArgs([["a 1"]]) -- quote with space in it
assert(a1=="a 1" and a2==1e9, dump(a1,a2))
local a1,a2 = AC:GetArgs([[" a 1 "]]) -- quote with space at beginning and end
assert(a1==" a 1 " and a2==1e9, dump(a1,a2))
local a1,a2 = AC:GetArgs([['a 1']]) -- single quote
assert(a1=="a 1" and a2==1e9, dump(a1,a2))
local a1,a2,a3 = AC:GetArgs([["a 1" "a 2"]], 2) -- 2 args
assert(a1=="a 1" and a2=="a 2" and a3==1e9, dump(a1,a2,a3))
local a1,a2,a3 = AC:GetArgs([["a 1" 'a 2']], 2) -- mixed quoting
assert(a1=="a 1" and a2=="a 2" and a3==1e9, dump(a1,a2,a3))
local a1,a2,a3 = AC:GetArgs([[ "a 1" 'a 2' ]], 2) -- surplous spacing between quotes
assert(a1=="a 1" and a2=="a 2" and a3==1e9, dump(a1,a2,a3))
local a1,a2,a3 = AC:GetArgs([["foo'bar" 'foo"bar']], 2) -- don't break on nonmatching quote
assert(a1=="foo'bar" and a2=='foo"bar' and a3==1e9, dump(a1,a2,a3))
local a1,a2 = AC:GetArgs([[ "unfinished quote]], 1) -- missing " at end
assert(a1=="unfinished quote" and a2==1e9, dump(a1,a2))
------------------------------------------------------------
-- Hyperlinks and combos
local a1,a2,a3,a4 = AC:GetArgs("simple |Cff112233|Hitem:0:0:0:0|hand here's a text with \"s and stuff|h|r", 3)
assert(a1=="simple" and a2=="|Cff112233|Hitem:0:0:0:0|hand here's a text with \"s and stuff|h|r" and a3==nil and a4==1e9, dump(a1,a2,a3,a4))
local a1,a2,a3,a4 = AC:GetArgs("simple '|Cff112233|Hitem:0:0:0:0|hand here's a text with \"s and stuff|h|r'", 3)
assert(a1=="simple" and a2=="|Cff112233|Hitem:0:0:0:0|hand here's a text with \"s and stuff|h|r" and a3==nil and a4==1e9, dump(a1,a2,a3,a4))
local a1,a2,a3,a4 = AC:GetArgs("simple \"|Cff112233|Hitem:0:0:0:0|hand here's a text with \"s and stuff|h|r\" 'bar'", 3)
assert(a1=="simple" and a2=="|Cff112233|Hitem:0:0:0:0|hand here's a text with \"s and stuff|h|r" and a3=="bar" and a4==1e9, dump(a1,a2,a3,a4))
local a1,a2,a3,a4 = AC:GetArgs("simple |H|ha 1|h|H|ha 1|h", 3)
assert(a1=="simple" and a2=="|H|ha 1|h|H|ha 1|h" and a3==nil and a4==1e9, dump(a1,a2,a3,a4))
local a1,a2,a3,a4 = AC:GetArgs("simple ||H|ha 1|h|H|ha 1|h", 3) -- note double ||
assert(a1=="simple" and a2=="||H|ha" and a3=="1|h|H|ha 1|h" and a4==1e9, dump(a1,a2,a3,a4))
local a1,a2,a3,a4 = AC:GetArgs("simple |||H|ha 1|h|H|ha 1|h", 3) -- note double || followed by |H
assert(a1=="simple" and a2=="|||H|ha 1|h|H|ha 1|h" and a3==nil and a4==1e9, dump(a1,a2,a3,a4))
------------------------------------------------------------
print "OK"