Fixed is_xavp index with no key. Added test to check it.

Distinguish between not existing and deleted on index.
squeeze-backports
Victor Seva 13 years ago
parent 2d24a0700c
commit 203374de7a

@ -31,7 +31,7 @@ pvMock = {
} }
for _,v in pairs(patterns) do for _,v in pairs(patterns) do
for _id, indx, key in string.gmatch(id, v) do for _id, indx, key in string.gmatch(id, v) do
if not key then if not key and tonumber(indx) == nil then
key = indx key = indx
indx = nil indx = nil
else else
@ -163,8 +163,10 @@ pvMock = {
t.vars[result.private_id]:push(temp) t.vars[result.private_id]:push(temp)
else else
result.real_indx = #t.vars[result.private_id]._et - result.indx result.real_indx = #t.vars[result.private_id]._et - result.indx
if not t.vars[result.private_id]._et[result.real_indx] then if t.vars[result.private_id]._et[result.real_indx] == nil then
error(string.format("xavp(%s[%d] does not exist", result.id, result.indx)) error(string.format("xavp(%s[%d]) does not exist", result.id, result.indx))
elseif t.vars[result.private_id]._et[result.real_indx] == false then
t.vars[result.private_id]._et[result.real_indx] = {}
end end
t.vars[result.private_id]._et[result.real_indx][result.key] = value t.vars[result.private_id]._et[result.real_indx][result.key] = value
end end
@ -221,6 +223,7 @@ pvMock = {
elseif result.type == 'var' then elseif result.type == 'var' then
t.vars[result.private_id] = nil t.vars[result.private_id] = nil
end end
t.log("dbg", string.format("sr.pv vars:%s", table.tostring(t.vars)))
end end
function t.is_null(id) function t.is_null(id)

@ -58,6 +58,28 @@ TestSRMock = {}
assertFalse(result.clean) assertFalse(result.clean)
end end
function TestSRMock:test_is_xavp_simple_nokey()
local result
result = self.sr.pv._is_xavp("$xavp(id1[8])")
assertTrue(result)
assertEquals(result.type, 'xavp')
assertEquals(result.id, 'id1')
assertFalse(result.key)
assertEquals(result.indx, 8)
assertFalse(result.clean)
end
function TestSRMock:test_is_xavp_simple_nokey_noindx()
local result
result = self.sr.pv._is_xavp("$xavp(id1)")
assertTrue(result)
assertEquals(result.type, 'xavp')
assertEquals(result.id, 'id1')
assertFalse(result.key)
assertFalse(result.indx)
assertFalse(result.clean)
end
function TestSRMock:test_is_avp_simple() function TestSRMock:test_is_avp_simple()
local result local result
result = self.sr.pv._is_avp("$avp(id2_f)") result = self.sr.pv._is_avp("$avp(id2_f)")

Loading…
Cancel
Save