153 lines
5.6 KiB
GDScript
153 lines
5.6 KiB
GDScript
extends "res://addons/gut/test.gd"
|
|
|
|
|
|
class TestCreateKeyEvents:
|
|
extends "res://addons/gut/test.gd"
|
|
|
|
func test_key_up_creates_event_for_key():
|
|
var event = InputFactory.key_up(KEY_A)
|
|
assert_is(event, InputEventKey, 'is InputEventKey')
|
|
assert_eq(event.keycode, KEY_A)
|
|
assert_false(event.pressed, "pressed")
|
|
|
|
func test_key_up_converts_lowercase_string_to_keycode():
|
|
var event = InputFactory.key_up('a')
|
|
assert_eq(event.keycode, KEY_A)
|
|
|
|
func test_key_up_converts_uppercase_string_to_keycode():
|
|
var event = InputFactory.key_up('A')
|
|
assert_eq(event.keycode, KEY_A)
|
|
|
|
func test_key_down_creates_event_for_key():
|
|
var event = InputFactory.key_down(KEY_B)
|
|
assert_is(event, InputEventKey, 'is InputEventKey')
|
|
assert_eq(event.keycode, KEY_B)
|
|
assert_true(event.pressed, "pressed")
|
|
|
|
func test_key_down_converts_lowercase_string_to_keycode():
|
|
var event = InputFactory.key_down('z')
|
|
assert_eq(event.keycode, KEY_Z)
|
|
|
|
|
|
class TestCreateActionEvents:
|
|
extends "res://addons/gut/test.gd"
|
|
|
|
func test_action_up_creates_correct_class():
|
|
var e = InputFactory.action_up("foo", 1.0)
|
|
assert_is(e, InputEventAction)
|
|
|
|
func test_action_up_sets_properties():
|
|
var e = InputFactory.action_up("foo", .5)
|
|
assert_eq(e.action, "foo", "action name")
|
|
assert_eq(e.pressed, false, "pressed")
|
|
assert_eq(e.strength, .5, 'strength')
|
|
|
|
func test_action_up_defaults_strength():
|
|
var e = InputFactory.action_up("foo")
|
|
assert_eq(e.strength, 1.0)
|
|
|
|
func test_action_down_creates_correct_class():
|
|
var e = InputFactory.action_down("foo", 1.0)
|
|
assert_is(e, InputEventAction)
|
|
|
|
func test_action_down_sets_properties():
|
|
var e = InputFactory.action_down("foo", .5)
|
|
assert_eq(e.action, "foo", "action name")
|
|
assert_eq(e.pressed, true, "pressed")
|
|
assert_eq(e.strength, .5, 'strength')
|
|
|
|
func test_action_down_defaults_strength():
|
|
var e = InputFactory.action_down("foo")
|
|
assert_eq(e.strength, 1.0)
|
|
|
|
|
|
class TestMouseButtons:
|
|
extends "res://addons/gut/test.gd"
|
|
|
|
func assert_mouse_event_props(method, pressed, button_index):
|
|
# instance so that we can use call
|
|
var input_factory = InputFactory.new()
|
|
var event = input_factory.call(method, (Vector2(10, 10)))
|
|
assert_is(event, InputEventMouseButton, 'correct class')
|
|
assert_eq(event.position, Vector2(10, 10), 'position')
|
|
assert_eq(event.pressed, pressed, 'pressed')
|
|
assert_eq(event.button_index, button_index, 'button_index')
|
|
|
|
func assert_mouse_event_positions(method):
|
|
var input_factory = InputFactory.new()
|
|
var event = input_factory.call(method, Vector2(10, 10), Vector2(11, 11))
|
|
assert_eq(event.position, Vector2(10, 10), "position")
|
|
assert_eq(event.global_position, Vector2(11, 11), "global position")
|
|
|
|
func test_lmb_down():
|
|
assert_mouse_event_props("mouse_left_button_down", true, MOUSE_BUTTON_LEFT)
|
|
assert_mouse_event_positions("mouse_left_button_down")
|
|
|
|
func test_lmb_up():
|
|
assert_mouse_event_props("mouse_left_button_up", false, MOUSE_BUTTON_LEFT)
|
|
assert_mouse_event_positions("mouse_left_button_up")
|
|
|
|
func test_double_clickk():
|
|
assert_mouse_event_props("mouse_double_click", false, MOUSE_BUTTON_LEFT)
|
|
assert_mouse_event_positions("mouse_double_click")
|
|
var event = InputFactory.mouse_double_click(Vector2(1, 1))
|
|
assert_true(event.double_click, "double click")
|
|
|
|
func test_rmb_down():
|
|
assert_mouse_event_props("mouse_right_button_down", true, MOUSE_BUTTON_RIGHT)
|
|
assert_mouse_event_positions("mouse_right_button_down")
|
|
|
|
func test_rmb_up():
|
|
assert_mouse_event_props("mouse_right_button_up", false, MOUSE_BUTTON_RIGHT)
|
|
assert_mouse_event_positions("mouse_right_button_up")
|
|
|
|
class TestMouseMotion:
|
|
extends "res://addons/gut/test.gd"
|
|
|
|
func test_creates_correct_event_type():
|
|
var e = InputFactory.mouse_motion(Vector2(1, 1))
|
|
assert_is(e, InputEventMouseMotion)
|
|
|
|
func test_properties_are_set():
|
|
var e = InputFactory.mouse_motion(Vector2(1, 1))
|
|
assert_eq(e.position, Vector2(1, 1), 'position')
|
|
assert_eq(e.global_position, Vector2(0, 0), 'default global_position')
|
|
|
|
func test_can_specify_global_position():
|
|
var e = InputFactory.mouse_motion(Vector2(1, 1), Vector2(2, 2))
|
|
assert_eq(e.global_position, Vector2(2, 2), 'global_position')
|
|
|
|
func test_mouse_relative_motion_makes_new_base_motion_without_last_event():
|
|
var e = InputFactory.mouse_relative_motion(Vector2(10, 10))
|
|
assert_eq(e.position, Vector2(10, 10))
|
|
|
|
func test_mouse_relative_offsets_last_event_position_and_global_position():
|
|
var last_event = InputFactory.mouse_motion(Vector2(10, 10), Vector2(20, 20))
|
|
var relative = InputFactory.mouse_relative_motion(Vector2(2, 2), last_event)
|
|
assert_eq(relative.position, Vector2(12, 12), 'position')
|
|
assert_eq(relative.global_position, Vector2(22, 22), 'global_position')
|
|
|
|
func test_mouse_relative_sets_relative_to_offset():
|
|
var last_event = InputFactory.mouse_motion(Vector2(10, 10), Vector2(20, 20))
|
|
var relative = InputFactory.mouse_relative_motion(Vector2(2, 2), last_event)
|
|
assert_eq(relative.relative, Vector2(2, 2), 'position')
|
|
|
|
func test_mouse_relative_sets_speed_defaults_to_zero_zero():
|
|
var last_event = InputFactory.mouse_motion(Vector2(10, 10), Vector2(20, 20))
|
|
var relative = InputFactory.mouse_relative_motion(Vector2(2, 2), last_event)
|
|
assert_eq(relative.velocity, Vector2(0, 0))
|
|
|
|
func test_mouse_relatvie_sets_speed_when_specified():
|
|
var last_event = InputFactory.mouse_motion(Vector2(10, 10), Vector2(20, 20))
|
|
var relative = InputFactory.mouse_relative_motion(Vector2(2, 2), last_event, Vector2(1, 1))
|
|
assert_eq(relative.velocity, Vector2(1, 1))
|
|
|
|
func test_mouse_relative_sets_speed_when_last_motion_not_sent():
|
|
var event = InputFactory.mouse_relative_motion(Vector2(1, 1), null, Vector2(10, 10))
|
|
assert_eq(event.velocity, Vector2(10, 10))
|
|
|
|
|
|
|
|
|
|
|