more testing
This commit is contained in:
211
testing/__tests__/input_event_test.lua
Normal file
211
testing/__tests__/input_event_test.lua
Normal file
@@ -0,0 +1,211 @@
|
||||
-- Test suite for InputEvent module
|
||||
package.path = package.path .. ";./?.lua;./modules/?.lua"
|
||||
|
||||
require("testing.loveStub")
|
||||
local luaunit = require("testing.luaunit")
|
||||
local InputEvent = require("modules.InputEvent")
|
||||
|
||||
TestInputEvent = {}
|
||||
|
||||
-- Test: new() creates click event with all properties
|
||||
function TestInputEvent:test_new_creates_click_event()
|
||||
local event = InputEvent.new({
|
||||
type = "click",
|
||||
button = 1,
|
||||
x = 100,
|
||||
y = 200,
|
||||
modifiers = { shift = false, ctrl = false, alt = false, super = false },
|
||||
})
|
||||
|
||||
luaunit.assertNotNil(event, "new() should return event")
|
||||
luaunit.assertEquals(event.type, "click")
|
||||
luaunit.assertEquals(event.button, 1)
|
||||
luaunit.assertEquals(event.x, 100)
|
||||
luaunit.assertEquals(event.y, 200)
|
||||
luaunit.assertNotNil(event.modifiers)
|
||||
luaunit.assertEquals(event.modifiers.shift, false)
|
||||
end
|
||||
|
||||
-- Test: new() creates press event
|
||||
function TestInputEvent:test_new_creates_press_event()
|
||||
local event = InputEvent.new({
|
||||
type = "press",
|
||||
button = 1,
|
||||
x = 50,
|
||||
y = 75,
|
||||
modifiers = { shift = true, ctrl = false, alt = false, super = false },
|
||||
})
|
||||
|
||||
luaunit.assertEquals(event.type, "press")
|
||||
luaunit.assertEquals(event.button, 1)
|
||||
luaunit.assertEquals(event.x, 50)
|
||||
luaunit.assertEquals(event.y, 75)
|
||||
luaunit.assertEquals(event.modifiers.shift, true)
|
||||
end
|
||||
|
||||
-- Test: new() creates release event
|
||||
function TestInputEvent:test_new_creates_release_event()
|
||||
local event = InputEvent.new({
|
||||
type = "release",
|
||||
button = 1,
|
||||
x = 150,
|
||||
y = 250,
|
||||
modifiers = { shift = false, ctrl = false, alt = false, super = false },
|
||||
})
|
||||
|
||||
luaunit.assertEquals(event.type, "release")
|
||||
end
|
||||
|
||||
-- Test: new() creates rightclick event with button 2
|
||||
function TestInputEvent:test_new_creates_rightclick_event()
|
||||
local event = InputEvent.new({
|
||||
type = "rightclick",
|
||||
button = 2,
|
||||
x = 100,
|
||||
y = 100,
|
||||
modifiers = { shift = false, ctrl = true, alt = false, super = false },
|
||||
})
|
||||
|
||||
luaunit.assertEquals(event.type, "rightclick")
|
||||
luaunit.assertEquals(event.button, 2)
|
||||
luaunit.assertEquals(event.modifiers.ctrl, true)
|
||||
end
|
||||
|
||||
-- Test: new() creates middleclick event with button 3
|
||||
function TestInputEvent:test_new_creates_middleclick_event()
|
||||
local event = InputEvent.new({
|
||||
type = "middleclick",
|
||||
button = 3,
|
||||
x = 200,
|
||||
y = 300,
|
||||
modifiers = { shift = false, ctrl = false, alt = true, super = false },
|
||||
})
|
||||
|
||||
luaunit.assertEquals(event.type, "middleclick")
|
||||
luaunit.assertEquals(event.button, 3)
|
||||
luaunit.assertEquals(event.modifiers.alt, true)
|
||||
end
|
||||
|
||||
-- Test: new() creates drag event with dx and dy
|
||||
function TestInputEvent:test_new_creates_drag_event_with_deltas()
|
||||
local event = InputEvent.new({
|
||||
type = "drag",
|
||||
button = 1,
|
||||
x = 100,
|
||||
y = 100,
|
||||
dx = 20,
|
||||
dy = -15,
|
||||
modifiers = { shift = false, ctrl = false, alt = false, super = false },
|
||||
})
|
||||
|
||||
luaunit.assertEquals(event.type, "drag")
|
||||
luaunit.assertEquals(event.dx, 20)
|
||||
luaunit.assertEquals(event.dy, -15)
|
||||
end
|
||||
|
||||
-- Test: new() defaults clickCount to 1 if not provided
|
||||
function TestInputEvent:test_new_defaults_clickCount_to_one()
|
||||
local event = InputEvent.new({
|
||||
type = "click",
|
||||
button = 1,
|
||||
x = 0,
|
||||
y = 0,
|
||||
modifiers = { shift = false, ctrl = false, alt = false, super = false },
|
||||
})
|
||||
|
||||
luaunit.assertEquals(event.clickCount, 1)
|
||||
end
|
||||
|
||||
-- Test: new() accepts custom clickCount for double-click
|
||||
function TestInputEvent:test_new_accepts_custom_clickCount()
|
||||
local event = InputEvent.new({
|
||||
type = "click",
|
||||
button = 1,
|
||||
x = 0,
|
||||
y = 0,
|
||||
clickCount = 2,
|
||||
modifiers = { shift = false, ctrl = false, alt = false, super = false },
|
||||
})
|
||||
|
||||
luaunit.assertEquals(event.clickCount, 2)
|
||||
end
|
||||
|
||||
-- Test: new() accepts custom clickCount for triple-click
|
||||
function TestInputEvent:test_new_accepts_triple_click()
|
||||
local event = InputEvent.new({
|
||||
type = "click",
|
||||
button = 1,
|
||||
x = 0,
|
||||
y = 0,
|
||||
clickCount = 3,
|
||||
modifiers = { shift = false, ctrl = false, alt = false, super = false },
|
||||
})
|
||||
|
||||
luaunit.assertEquals(event.clickCount, 3)
|
||||
end
|
||||
|
||||
-- Test: new() defaults timestamp to current time if not provided
|
||||
function TestInputEvent:test_new_defaults_timestamp()
|
||||
local before = love.timer.getTime()
|
||||
local event = InputEvent.new({
|
||||
type = "click",
|
||||
button = 1,
|
||||
x = 0,
|
||||
y = 0,
|
||||
modifiers = { shift = false, ctrl = false, alt = false, super = false },
|
||||
})
|
||||
local after = love.timer.getTime()
|
||||
|
||||
luaunit.assertNotNil(event.timestamp)
|
||||
luaunit.assertTrue(event.timestamp >= before)
|
||||
luaunit.assertTrue(event.timestamp <= after)
|
||||
end
|
||||
|
||||
-- Test: new() accepts custom timestamp
|
||||
function TestInputEvent:test_new_accepts_custom_timestamp()
|
||||
local customTime = 12345.678
|
||||
local event = InputEvent.new({
|
||||
type = "click",
|
||||
button = 1,
|
||||
x = 0,
|
||||
y = 0,
|
||||
timestamp = customTime,
|
||||
modifiers = { shift = false, ctrl = false, alt = false, super = false },
|
||||
})
|
||||
|
||||
luaunit.assertEquals(event.timestamp, customTime)
|
||||
end
|
||||
|
||||
-- Test: new() handles all modifier keys
|
||||
function TestInputEvent:test_new_handles_all_modifier_keys()
|
||||
local event = InputEvent.new({
|
||||
type = "click",
|
||||
button = 1,
|
||||
x = 0,
|
||||
y = 0,
|
||||
modifiers = { shift = true, ctrl = true, alt = true, super = true },
|
||||
})
|
||||
|
||||
luaunit.assertEquals(event.modifiers.shift, true)
|
||||
luaunit.assertEquals(event.modifiers.ctrl, true)
|
||||
luaunit.assertEquals(event.modifiers.alt, true)
|
||||
luaunit.assertEquals(event.modifiers.super, true)
|
||||
end
|
||||
|
||||
-- Test: new() handles nil dx/dy for non-drag events
|
||||
function TestInputEvent:test_new_handles_nil_deltas()
|
||||
local event = InputEvent.new({
|
||||
type = "click",
|
||||
button = 1,
|
||||
x = 100,
|
||||
y = 100,
|
||||
modifiers = { shift = false, ctrl = false, alt = false, super = false },
|
||||
})
|
||||
|
||||
luaunit.assertNil(event.dx)
|
||||
luaunit.assertNil(event.dy)
|
||||
end
|
||||
|
||||
if not _G.RUNNING_ALL_TESTS then
|
||||
os.exit(luaunit.LuaUnit.run())
|
||||
end
|
||||
Reference in New Issue
Block a user