From 203374de7af67c9bfb16ae191212f894ab383b3a Mon Sep 17 00:00:00 2001 From: Victor Seva Date: Wed, 3 Apr 2013 10:55:30 +0200 Subject: [PATCH] Fixed is_xavp index with no key. Added test to check it. Distinguish between not existing and deleted on index. --- kamailio_conf.lua => kamailio_conf.lua.tt2 | 0 mocks/sr.lua | 9 ++++++--- tests/mocks.lua | 22 ++++++++++++++++++++++ 3 files changed, 28 insertions(+), 3 deletions(-) rename kamailio_conf.lua => kamailio_conf.lua.tt2 (100%) diff --git a/kamailio_conf.lua b/kamailio_conf.lua.tt2 similarity index 100% rename from kamailio_conf.lua rename to kamailio_conf.lua.tt2 diff --git a/mocks/sr.lua b/mocks/sr.lua index c849a28..e95df1f 100644 --- a/mocks/sr.lua +++ b/mocks/sr.lua @@ -31,7 +31,7 @@ pvMock = { } for _,v in pairs(patterns) 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 indx = nil else @@ -163,8 +163,10 @@ pvMock = { t.vars[result.private_id]:push(temp) else result.real_indx = #t.vars[result.private_id]._et - result.indx - if not t.vars[result.private_id]._et[result.real_indx] then - error(string.format("xavp(%s[%d] does not exist", result.id, result.indx)) + 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)) + elseif t.vars[result.private_id]._et[result.real_indx] == false then + t.vars[result.private_id]._et[result.real_indx] = {} end t.vars[result.private_id]._et[result.real_indx][result.key] = value end @@ -221,6 +223,7 @@ pvMock = { elseif result.type == 'var' then t.vars[result.private_id] = nil end + t.log("dbg", string.format("sr.pv vars:%s", table.tostring(t.vars))) end function t.is_null(id) diff --git a/tests/mocks.lua b/tests/mocks.lua index 6e853dc..f775145 100644 --- a/tests/mocks.lua +++ b/tests/mocks.lua @@ -58,6 +58,28 @@ TestSRMock = {} assertFalse(result.clean) 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() local result result = self.sr.pv._is_avp("$avp(id2_f)")