Fix get unset without index/keys

squeeze-backports
Victor Seva 13 years ago
parent 203374de7a
commit a84fc65879

@ -105,18 +105,22 @@ pvMock = {
if result.type == 'var' then if result.type == 'var' then
return t.vars[result.private_id] return t.vars[result.private_id]
elseif result.type == 'xavp' then elseif result.type == 'xavp' then
if not result.indx then
result.indx = 0
end
if not t.vars[result.private_id] then if not t.vars[result.private_id] then
return return
end end
if not result.key then if not result.key then
return t.vars[result.private_id] if not result.indx then
return t.vars[result.private_id]
else
result.real_indx = #t.vars[result.private_id]._et - result.indx
return t.vars[result.private_id]._et[result.real_indx]
end
end
if not result.indx then
result.indx = 0
end end
result.real_indx = #t.vars[result.private_id]._et - result.indx result.real_indx = #t.vars[result.private_id]._et - result.indx
if t.vars[result.private_id]._et[result.real_indx] then if t.vars[result.private_id]._et[result.real_indx] then
--print(string.format("t.vars[%s]._et[%d]:%s", result.private_id, result.real_indx, table.tostring(t.vars[result.private_id]._et[result.indx+1])))
return t.vars[result.private_id]._et[result.real_indx][result.key] return t.vars[result.private_id]._et[result.real_indx][result.key]
end end
elseif result.type == 'avp' then elseif result.type == 'avp' then
@ -207,16 +211,26 @@ pvMock = {
function t.unset(id) function t.unset(id)
local result = t._is(id) local result = t._is(id)
if result.type == 'xavp' then if result.type == 'xavp' then
if not result.indx then
result.indx = 0
end
if t.vars[result.private_id] then if t.vars[result.private_id] then
if not result.key then if not result.key then
t.vars[result.private_id] = nil if not result.indx then
return -- xavp(g) -> clean all
t.vars[result.private_id] = nil
return
else
-- xavp(g[0])
result.real_indx = #t.vars[result.private_id]._et - result.indx
t.vars[result.private_id]._et[result.real_indx] = false
return
end
else
if not result.indx then
result.indx = 0
end
end end
-- xavp(g[1]=>k)
result.real_indx = #t.vars[result.private_id]._et - result.indx result.real_indx = #t.vars[result.private_id]._et - result.indx
t.vars[result.private_id]._et[result.real_indx] = false t.vars[result.private_id]._et[result.real_indx][result.key] = nil
end end
elseif result.type == 'avp' then elseif result.type == 'avp' then
t.vars[result.private_id] = nil t.vars[result.private_id] = nil
@ -265,7 +279,6 @@ srMock = {
} }
srMock_MT = { __index = srMock, __newindex = lemock.controller():mock() } srMock_MT = { __index = srMock, __newindex = lemock.controller():mock() }
function srMock:new() function srMock:new()
--print("srMock:new")
local t = {} local t = {}
function t.log(level, message) function t.log(level, message)
if not t._logger_levels[level] then if not t._logger_levels[level] then

@ -272,9 +272,34 @@ TestSRMock = {}
assertEquals(self.sr.pv.get("$xavp(g[0]=>t)"), "value") assertEquals(self.sr.pv.get("$xavp(g[0]=>t)"), "value")
self.sr.pv.sets("$xavp(g=>t)", "value1") self.sr.pv.sets("$xavp(g=>t)", "value1")
assertEquals(self.sr.pv.get("$xavp(g[0]=>t)"), "value1") assertEquals(self.sr.pv.get("$xavp(g[0]=>t)"), "value1")
assertEquals(self.sr.pv.get("$xavp(g[1]=>t)"), "value")
--
self.sr.pv.unset("$xavp(g[0]=>t)") self.sr.pv.unset("$xavp(g[0]=>t)")
assertEquals(self.sr.pv.get("$xavp(g[0]=>t)"), nil) assertEquals(self.sr.pv.get("$xavp(g[0]=>t)"), nil)
assertEquals(self.sr.pv.get("$xavp(g[1]=>t)"), "value") assertEquals(self.sr.pv.get("$xavp(g[1]=>t)"), "value")
assertTrue(self.sr.pv.get("$xavp(g[0])"))
--
self.sr.pv.unset("$xavp(g[1])")
assertFalse(self.sr.pv.get("$xavp(g[1])"))
self.sr.pv.unset("$xavp(g)")
assertEquals(self.sr.pv.get("$xavp(g)"), nil)
end
function TestSRMock:test_unset_xavp1()
self.sr.pv.sets("$xavp(g=>t)", "value")
assertEquals(self.sr.pv.get("$xavp(g[0]=>t)"), "value")
self.sr.pv.sets("$xavp(g=>t)", "value1")
assertEquals(self.sr.pv.get("$xavp(g[0]=>t)"), "value1")
assertEquals(self.sr.pv.get("$xavp(g[1]=>t)"), "value")
self.sr.pv.sets("$xavp(g[1]=>z)", "value_z")
assertEquals(self.sr.pv.get("$xavp(g[1]=>z)"), "value_z")
--
self.sr.pv.unset("$xavp(g[0])")
assertEquals(self.sr.pv.get("$xavp(g[0]=>t)"), nil)
assertEquals(self.sr.pv.get("$xavp(g[1]=>t)"), "value")
assertEquals(self.sr.pv.get("$xavp(g[1]=>z)"), "value_z")
assertFalse(self.sr.pv.get("$xavp(g[0])"))
--
self.sr.pv.unset("$xavp(g[1])") self.sr.pv.unset("$xavp(g[1])")
assertFalse(self.sr.pv.get("$xavp(g[1])")) assertFalse(self.sr.pv.get("$xavp(g[1])"))
self.sr.pv.unset("$xavp(g)") self.sr.pv.unset("$xavp(g)")

Loading…
Cancel
Save