TT#6226 fix avp:all()

* on real environment sr.pv.get(t.id_all) returns a string not
  a list
* add tests/use_cases.lua

Change-Id: I22e50faa3423f2069a8deb6be44e33af166cb72b
changes/88/9488/2
Victor Seva 9 years ago
parent b09db92994
commit 0162899f04

@ -29,6 +29,7 @@ local NGCPAvp_MT = {
function NGCPAvp:new(id) function NGCPAvp:new(id)
local t = { local t = {
id = "$avp(s:" .. id .. ")", id = "$avp(s:" .. id .. ")",
id_indx = "$(avp(s:" .. id .. ")[%d])",
id_all = "$(avp(s:" .. id .. ")[*])", id_all = "$(avp(s:" .. id .. ")[*])",
} }
NGCPAvp_MT.__call = function(s, value) NGCPAvp_MT.__call = function(s, value)
@ -47,7 +48,18 @@ local NGCPAvp_MT = {
end end
end end
function t.all() function t.all()
return sr.pv.get(t.id_all) local val
local indx = 0
local res = {}
val = sr.pv.get(string.format(t.id_indx, indx))
if not val then return nil end
while val do
table.insert(res, val)
indx = indx + 1
val = sr.pv.get(string.format(t.id_indx, indx))
end
return res
end end
NGCPAvp_MT.__tostring = function(s) NGCPAvp_MT.__tostring = function(s)
local value = sr.pv.get(s.id) local value = sr.pv.get(s.id)

@ -0,0 +1,48 @@
--
-- Copyright 2013-2016 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')
local NGCPXAvp = require 'ngcp.xavp'
local NGCPAvp = require 'ngcp.avp'
local srMock = require 'mocks.sr'
sr = srMock:new()
-- luacheck: ignore TestUseCases
TestUseCases = {}
function TestUseCases:tearDown()
sr.pv.vars = {}
end
function TestUseCases:test_copy_avp()
local avp = NGCPAvp:new("tmp")
local xavp = NGCPXAvp:new('callee', 'real_prefs')
local vals = {1, 2, "3", 4}
local okvals = {4, "3", 2, 1}
for i=1,#vals do
avp(vals[i])
end
assertItemsEquals(avp:all(), okvals)
xavp:clean('cfu')
assertItemsEquals(xavp:all('cfu'), nil)
xavp('cfu', avp:all())
assertItemsEquals(xavp:all('cfu'), okvals)
end
Loading…
Cancel
Save