63 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
Test = {
 | 
						|
    tests = {},
 | 
						|
    activeTest = 0,
 | 
						|
    screenShot = 1    
 | 
						|
}
 | 
						|
 | 
						|
Test.Test = function(name, func)
 | 
						|
    local testId = #Test.tests + 1
 | 
						|
    Test.tests[testId] = {
 | 
						|
        name = name,
 | 
						|
        actions = {},
 | 
						|
        delay = 0,
 | 
						|
        start = 0
 | 
						|
    }
 | 
						|
    local test = function(testFunc)
 | 
						|
        table.insert(Test.tests[testId].actions, {type = "test", value = testFunc})
 | 
						|
    end
 | 
						|
    local wait = function(millis)
 | 
						|
        Test.tests[testId].delay = Test.tests[testId].delay + millis
 | 
						|
        table.insert(Test.tests[testId].actions, {type = "wait", value = Test.tests[testId].delay})
 | 
						|
    end
 | 
						|
    local ss = function()
 | 
						|
        table.insert(Test.tests[testId].actions, {type = "screenshot"})
 | 
						|
    end
 | 
						|
    local fail = function(message)
 | 
						|
        g_logger.fatal("Test " .. name .. " failed: " .. message)
 | 
						|
    end
 | 
						|
    func(test, wait, ss, fail)
 | 
						|
end
 | 
						|
 | 
						|
Test.run = function()
 | 
						|
    if Test.activeTest > #Test.tests then
 | 
						|
        g_logger.info("[TEST] Finished tests. Exiting...")
 | 
						|
        return g_app.exit()
 | 
						|
    end
 | 
						|
    local test = Test.tests[Test.activeTest]
 | 
						|
    if not test or #test.actions == 0 then
 | 
						|
        Test.activeTest = Test.activeTest + 1
 | 
						|
        local nextTest = Test.tests[Test.activeTest]
 | 
						|
        if nextTest then
 | 
						|
            nextTest.start = g_clock.millis()
 | 
						|
            g_logger.info("[TEST] Starting test: " .. nextTest.name)
 | 
						|
        end
 | 
						|
        return scheduleEvent(Test.run, 500)
 | 
						|
    end
 | 
						|
 | 
						|
    local action = test.actions[1]
 | 
						|
    if action.type == "test" then
 | 
						|
        table.remove(test.actions, 1)        
 | 
						|
        action.value()
 | 
						|
    elseif action.type == "screenshot" then
 | 
						|
        table.remove(test.actions, 1)        
 | 
						|
        g_app.doScreenshot(Test.screenShot .. ".png")
 | 
						|
        Test.screenShot = Test.screenShot + 1
 | 
						|
    elseif action.type == "wait" then
 | 
						|
        if action.value + test.start < g_clock.millis() then
 | 
						|
            table.remove(test.actions, 1)        
 | 
						|
        end
 | 
						|
    end
 | 
						|
 | 
						|
    scheduleEvent(Test.run, 100)
 | 
						|
end
 |