MT#15389 $dlg_var support

Change-Id: I7408a639ee63e055c8030acdff9cf926c01fa2cb
changes/06/2806/2
Victor Seva 10 years ago
parent 07c995bfd6
commit cf064365b6

@ -196,6 +196,18 @@ pvMock = {
end
end
function t._is_dlg_var(id)
local patterns = {
'%$dlg_var%(([%w_]+)%)$',
'%$%(dlg_var%(([%w_]+)%)%)$',
}
for _,v in pairs(patterns) do
for key in string.gmatch(id, v) do
return { id=key, clean=false, type='dlg_var' }
end
end
end
function t._is_hdr(id)
local key, _, v
local patterns = {
@ -236,6 +248,9 @@ pvMock = {
if not result then
result = t._is_var(id)
end
if not result then
result = t._is_dlg_var(id)
end
if not result then
result = t._is_hdr(id)
end
@ -255,7 +270,7 @@ pvMock = {
return
end
if result.type == 'var' then
if result.type == 'var' or result.type == 'dlg_var' then
return t.vars[result.private_id]
elseif result.type == 'xavp' then
if not t.vars[result.private_id] then
@ -302,7 +317,7 @@ pvMock = {
function t._addvalue_new(result, value)
local temp
if result.type == 'var' then
if result.type == 'var' or result.type == 'dlg_var' then
t.vars[result.private_id] = value
elseif result.type == 'xavp' then
if not result.indx then
@ -329,7 +344,7 @@ pvMock = {
function t._addvalue_with_value(result, value)
local temp
if result.type == 'var' then
if result.type == 'var' or result.type == 'dlg_var' then
t.vars[result.private_id] = value
elseif result.type == 'xavp' then
if not result.indx then
@ -415,7 +430,7 @@ pvMock = {
end
elseif result.type == 'avp' then
t.vars[result.private_id] = nil
elseif result.type == 'var' then
elseif result.type == 'var' or result.type == 'dlg_var' then
t.vars[result.private_id] = nil
end
t.log("dbg", string.format("sr.pv vars:%s", table.tostring(t.vars)))

@ -0,0 +1,62 @@
--
-- Copyright 2015 SipWise Team <development@sipwise.com>
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This package is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
-- .
-- On Debian systems, the complete text of the GNU General
-- Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".
--
local NGCPDlgVar = {
__class__ = 'NGCPDlgVar'
}
local NGCPDlgVar_MT = {
__index = NGCPDlgVar,
}
function NGCPDlgVar:new(id)
local t = { id = "$dlg_var(" .. id .. ")" }
NGCPDlgVar_MT.__call = function(s, value)
if not value then
return sr.pv.get(s.id)
elseif type(value) == "number" then
sr.pv.seti(s.id, value)
elseif type(value) == "string" then
sr.pv.sets(s.id, value)
else
error("value is not a number or string")
end
end
NGCPDlgVar_MT.__tostring = function(s)
local value = sr.pv.get(s.id)
return string.format("%s:%s", s.id, tostring(value))
end
return setmetatable( t, NGCPDlgVar_MT )
end
function NGCPDlgVar:log(level)
if not level then
level = "dbg"
end
sr.log(level, tostring(self))
end
function NGCPDlgVar:clean()
sr.pv.unset(self.id)
end
return NGCPDlgVar
--EOF

@ -0,0 +1,70 @@
--
-- Copyright 2015 SipWise Team <development@sipwise.com>
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This package is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
-- .
-- On Debian systems, the complete text of the GNU General
-- Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".
--
require('luaunit')
require 'mocks.sr'
local NGCPDlgVar = require 'ngcp.dlg_var'
sr = srMock:new()
TestNGCPDlgVar = {} --class
function TestNGCPDlgVar:setUp()
self.var = NGCPDlgVar:new("testid")
end
function TestNGCPDlgVar:tearDown()
sr.pv.vars = {}
end
function TestNGCPDlgVar:test_dlg_var_id()
assertEquals(self.var.id, "$dlg_var(testid)")
end
function TestNGCPDlgVar:test_dlg_var_get()
sr.pv.sets("$dlg_var(testid)", "value")
assertEquals(self.var(), "value")
sr.pv.sets("$dlg_var(testid)", "1")
assertItemsEquals(self.var(), "1")
end
function TestNGCPDlgVar:test_dlg_var_set()
self.var(1)
assertEquals(self.var(),1)
self.var("a")
assertEquals(self.var(), "a")
end
function TestNGCPDlgVar:test_clean()
self.var(1)
self.var:clean()
assertFalse(self.var())
end
function TestNGCPDlgVar:test_log()
self.var:log()
end
function TestNGCPDlgVar:test_tostring()
self.var(1)
assertEquals(tostring(self.var), "$dlg_var(testid):1")
self.var("hola")
assertEquals(tostring(self.var), "$dlg_var(testid):hola")
end
-- class TestNGCPDlgVar
--EOF
Loading…
Cancel
Save