TT#159002 add support for $sht

Change-Id: Ic4164f2da17d51f09facbe5e119418318d24e50d
mr10.4
Victor Seva 4 years ago
parent fafde2b034
commit 4bcecbd709

@ -55,6 +55,19 @@ local pvMock = {
t.vars = {} t.vars = {}
t.hdr = hdr t.hdr = hdr
function t._is_sht(id)
local patterns = {
'%$sht%(([%w_^%[]+)=>(.*)%)$',
}
for _,v in pairs(patterns) do
for table, key in string.gmatch(id, v) do
return { id=table, key=key,
indx=nil, kindx=nil, clean=false,
type='sht' }
end
end
end
function t._is_xav(id, xtype) function t._is_xav(id, xtype)
local patterns = { local patterns = {
'%$'..xtype..'%(([%w_^%[]+)%)$', '%$'..xtype..'%(([%w_^%[]+)%)$',
@ -215,6 +228,12 @@ local pvMock = {
if not result then if not result then
result = t._is_xavi(id) result = t._is_xavi(id)
end end
if not result then
result = t._is_sht(id)
if string.match(result.key, '^%$') then
result.key = t.get(result.key)
end
end
if not result then if not result then
error(string.format("not implemented or wrong id:%s", id)) error(string.format("not implemented or wrong id:%s", id))
end end
@ -274,6 +293,14 @@ local pvMock = {
end end
elseif result.type == 'pv' then elseif result.type == 'pv' then
return t.vars_pv[result.mode][result.id] return t.vars_pv[result.mode][result.id]
elseif result.type == 'sht' then
local key = result.key
if string.match(result.key, '^%$') then
key = t.get(result.key)
end
if t.vars[result.private_id] and key then
return t.vars[result.private_id][key]
end
end end
end end
@ -317,6 +344,9 @@ local pvMock = {
t.vars[result.private_id]:push(value) t.vars[result.private_id]:push(value)
elseif result.type == 'pv' and result.mode == 'rw' then elseif result.type == 'pv' and result.mode == 'rw' then
t.vars_pv.rw[result.id] = value t.vars_pv.rw[result.id] = value
elseif result.type == 'sht' then
t.vars[result.private_id] = {}
t.vars[result.private_id][result.key] = value
end end
end end
@ -352,6 +382,8 @@ local pvMock = {
t.vars[result.private_id]:push(value) t.vars[result.private_id]:push(value)
elseif result.type == 'pv' and result.mode == 'rw' then elseif result.type == 'pv' and result.mode == 'rw' then
t.vars_pv.rw[result.id] = value t.vars_pv.rw[result.id] = value
elseif result.type == 'sht' then
t.vars[result.private_id][result.key] = value
end end
end end
@ -416,6 +448,10 @@ local pvMock = {
end end
elseif result.type == 'var' or result.type == 'dlg_var' then elseif result.type == 'var' or result.type == 'dlg_var' then
t.vars[result.private_id] = nil t.vars[result.private_id] = nil
elseif result.type == 'sht' then
if t.vars[result.private_id] then
t.vars[result.private_id][result.key] = nil
end
end end
t.log("dbg", string.format("KSR.pv vars:%s", utable.tostring(t.vars))) t.log("dbg", string.format("KSR.pv vars:%s", utable.tostring(t.vars)))
end end

@ -81,6 +81,18 @@ TestPVMock = {}
lu.assertFalse(result.clean) lu.assertFalse(result.clean)
end end
function TestPVMock:test_is_sht()
local result = self.pv._is_sht("$sht(t=>hola)")
lu.assertNotNil(result)
lu.assertEquals(result.type, 'sht')
lu.assertEquals(result.id, 't')
lu.assertEquals(result.key, 'hola')
lu.assertFalse(result.clean)
result = self.pv._is_sht("$sht(t=>$hola)")
lu.assertNotNil(result)
lu.assertEquals(result.key, '$hola')
end
function TestPVMock:test_is_xavi_simple() function TestPVMock:test_is_xavi_simple()
local result = self.pv._is_xavi("$xavi(ID=>KEY)") local result = self.pv._is_xavi("$xavi(ID=>KEY)")
lu.assertNotNil(result) lu.assertNotNil(result)
@ -552,3 +564,28 @@ TestPVMock = {}
self.pv.seti("$avp(hithere)", 0) self.pv.seti("$avp(hithere)", 0)
lu.assertEquals(self.pv.getvw("$avp(hithere)"), 0) lu.assertEquals(self.pv.getvw("$avp(hithere)"), 0)
end end
function TestPVMock:test_sht_seti()
self.pv.seti("$sht(t=>uno)", 1)
lu.assertEquals(self.pv.get("$sht(t=>uno)"), 1)
self.pv.seti("$sht(t=>uno)", 2)
lu.assertEquals(self.pv.get("$sht(t=>uno)"), 2)
self.pv.seti("$sht(t=>dos)", 2)
lu.assertEquals(self.pv.get("$sht(t=>uno)"), 2)
lu.assertEquals(self.pv.get("$sht(t=>dos)"), 2)
self.pv.sets("$var(t)", "hola")
lu.assertEquals(self.pv.get("$var(t)"), "hola")
self.pv.seti("$sht(t=>$var(t))", 3)
lu.assertEquals(self.pv.get("$sht(t=>$var(t))"), 3)
end
function TestPVMock:test_sht_unset()
self.pv.seti("$sht(t=>uno)", 1)
lu.assertEquals(self.pv.get("$sht(t=>uno)"), 1)
self.pv.unset("$sht(t=>uno)")
lu.assertNil(self.pv.get("$sht(t=>uno)"))
self.pv.unset("$sht(t=>nono)")
lu.assertNil(self.pv.get("$sht(t=>nono)"))
self.pv.unset("$sht(nono=>nono)")
lu.assertNil(self.pv.get("$sht(nono=>nono)"))
end

Loading…
Cancel
Save