64 lines
1.8 KiB
GDScript
64 lines
1.8 KiB
GDScript
## Tests for GiftBox — CLOSED/OPENING/OPEN state machine transitions.
|
|
extends GutTest
|
|
|
|
var _box: GiftBox
|
|
|
|
|
|
func before_each() -> void:
|
|
_box = preload("res://scenes/objects/GiftBox.tscn").instantiate() as GiftBox
|
|
add_child_autofree(_box)
|
|
|
|
|
|
func test_initial_state_is_closed() -> void:
|
|
assert_eq(_box._state, GiftBox.State.CLOSED)
|
|
|
|
|
|
func test_ready_hides_gift_node() -> void:
|
|
var gift: Node2D = _box.get_node("Gift") as Node2D
|
|
assert_eq(gift.modulate.a, 0.0)
|
|
|
|
|
|
func test_start_opening_transitions_to_opening() -> void:
|
|
_box._start_opening()
|
|
assert_eq(_box._state, GiftBox.State.OPENING)
|
|
|
|
|
|
func test_on_lid_opened_transitions_to_open() -> void:
|
|
_box._start_opening()
|
|
_box._on_lid_opened()
|
|
assert_eq(_box._state, GiftBox.State.OPEN)
|
|
|
|
|
|
func test_input_ignored_when_state_is_opening() -> void:
|
|
_box._state = GiftBox.State.OPENING
|
|
var event: InputEventScreenTouch = InputEventScreenTouch.new()
|
|
event.pressed = true
|
|
event.position = _box.global_position
|
|
_box._input(event)
|
|
assert_eq(_box._state, GiftBox.State.OPENING)
|
|
|
|
|
|
func test_input_ignored_when_state_is_open() -> void:
|
|
_box._state = GiftBox.State.OPEN
|
|
var event: InputEventScreenTouch = InputEventScreenTouch.new()
|
|
event.pressed = true
|
|
event.position = _box.global_position
|
|
_box._input(event)
|
|
assert_eq(_box._state, GiftBox.State.OPEN)
|
|
|
|
|
|
func test_tap_outside_hitbox_does_not_open() -> void:
|
|
var event: InputEventScreenTouch = InputEventScreenTouch.new()
|
|
event.pressed = true
|
|
event.position = _box.global_position + Vector2(200.0, 200.0)
|
|
_box._input(event)
|
|
assert_eq(_box._state, GiftBox.State.CLOSED)
|
|
|
|
|
|
func test_release_event_does_not_open() -> void:
|
|
var event: InputEventScreenTouch = InputEventScreenTouch.new()
|
|
event.pressed = false
|
|
event.position = _box.global_position
|
|
_box._input(event)
|
|
assert_eq(_box._state, GiftBox.State.CLOSED)
|