mirror of https://github.com/OpenMW/openmw.git
Merge branch 'localpairs' into 'master'
Allow mwscript variable iteration See merge request OpenMW/openmw!4180pull/3236/head
commit
8471cfb576
@ -0,0 +1,51 @@
|
||||
local testing = require('testing_util')
|
||||
local core = require('openmw.core')
|
||||
local world = require('openmw.world')
|
||||
|
||||
function iterateOverVariables(variables)
|
||||
local first = nil
|
||||
local last = nil
|
||||
local count = 0
|
||||
for k, _ in pairs(variables) do
|
||||
first = first or k
|
||||
last = k
|
||||
count = count + 1
|
||||
end
|
||||
return first, last, count
|
||||
end
|
||||
|
||||
return {
|
||||
{'Should support iteration over an empty set of script variables', function()
|
||||
local mainVars = world.mwscript.getGlobalScript('main').variables
|
||||
local first, last, count = iterateOverVariables(mainVars)
|
||||
testing.expectEqual(first, nil)
|
||||
testing.expectEqual(last, nil)
|
||||
testing.expectEqual(count, 0)
|
||||
testing.expectEqual(count, #mainVars)
|
||||
end},
|
||||
{'Should support iteration of script variables', function()
|
||||
local jiub = world.getObjectByFormId(core.getFormId('Morrowind.esm', 172867))
|
||||
local jiubVars = world.mwscript.getLocalScript(jiub).variables
|
||||
local first, last, count = iterateOverVariables(jiubVars)
|
||||
|
||||
testing.expectEqual(first, 'state')
|
||||
testing.expectEqual(last, 'timer')
|
||||
testing.expectEqual(count, 3)
|
||||
testing.expectEqual(count, #jiubVars)
|
||||
end},
|
||||
{'Should support numeric and string indices for getting and setting', function()
|
||||
local jiub = world.getObjectByFormId(core.getFormId('Morrowind.esm', 172867))
|
||||
local jiubVars = world.mwscript.getLocalScript(jiub).variables
|
||||
|
||||
testing.expectEqual(jiubVars[1], jiubVars.state)
|
||||
testing.expectEqual(jiubVars[2], jiubVars.wandering)
|
||||
testing.expectEqual(jiubVars[3], jiubVars.timer)
|
||||
|
||||
jiubVars[1] = 123;
|
||||
testing.expectEqual(jiubVars.state, 123)
|
||||
jiubVars.wandering = 42;
|
||||
testing.expectEqual(jiubVars[2], 42)
|
||||
jiubVars[3] = 1.25;
|
||||
testing.expectEqual(jiubVars.timer, 1.25)
|
||||
end},
|
||||
}
|
Loading…
Reference in New Issue