godot-xterm/test/unit/terminal.test.gd
Leroy Hopson 344c04f9d8
Move terminal bell tests from unit -> integration
The bell tests rely on timers and yields, so are too slow to run as part
of the unit test suite.
2022-08-22 10:05:41 +12:00

43 lines
1.2 KiB
GDScript

extends "res://addons/gut/test.gd"
class TestMultipleInputs:
# Tests for when Terminal is around other input nodes and arrow keys or TAB
# key is pressed. Focus should not change to other inputs when pressing these
# keys (same behaviour as TextEdit node).
# See: https://github.com/lihop/godot-xterm/issues/51
extends "res://addons/gut/test.gd"
const KEYS := {
KEY_LEFT = KEY_LEFT,
KEY_UP = KEY_UP,
KEY_RIGHT = KEY_RIGHT,
KEY_DOWN = KEY_DOWN,
KEY_TAB = KEY_TAB,
}
var terminal: Control
func press_key(scancode: int, unicode := 0) -> void:
var key_down = InputEventKey.new()
key_down.scancode = scancode
key_down.pressed = true
Input.parse_input_event(key_down)
yield(get_tree().create_timer(0.1), "timeout")
var key_up = InputEventKey.new()
key_up.scancode = scancode
key_up.pressed = false
Input.parse_input_event(key_up)
func before_each():
var scene := preload("../scenes/multiple_inputs.tscn").instance()
add_child_autofree(scene)
terminal = scene.find_node("Terminal")
terminal.grab_focus()
func test_terminal_keeps_focus_when_certain_keys_pressed():
for key in KEYS.keys():
press_key(KEYS[key])
assert_true(
terminal.has_focus(), "Terminal should still have focus after %s is pressed." % key
)