File: global_mwscript.lua

package info (click to toggle)
openmw 0.49.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 33,992 kB
  • sloc: cpp: 372,479; xml: 2,149; sh: 1,403; python: 797; makefile: 26
file content (51 lines) | stat: -rw-r--r-- 1,883 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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

testing.registerGlobalTest('[mwscript] 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)

testing.registerGlobalTest('[mwscript] 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)

testing.registerGlobalTest('[mwscript] 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)