feat(client): pure MoveValidator — membership is the whole test
This commit is contained in:
38
client/tests/unit/test_move_validator.gd
Normal file
38
client/tests/unit/test_move_validator.gd
Normal file
@@ -0,0 +1,38 @@
|
||||
extends "res://addons/gut/test.gd"
|
||||
|
||||
const MoveValidator = preload("res://scripts/npc/move_validator.gd")
|
||||
|
||||
|
||||
func _m(name, args := []) -> Dictionary:
|
||||
return {"name": name, "args": args}
|
||||
|
||||
|
||||
func test_id_move_in_available_is_valid():
|
||||
var res = MoveValidator.validate(
|
||||
[_m("reveal", ["varrell_twins"])], ["reveal(varrell_twins)", "refuse"])
|
||||
assert_eq(res["valid"].size(), 1)
|
||||
assert_eq(res["dropped"].size(), 0)
|
||||
|
||||
|
||||
func test_id_move_not_in_available_is_dropped():
|
||||
var res = MoveValidator.validate(
|
||||
[_m("offer_quest", ["some_other_quest"])], ["offer_quest(find_the_ledger)"])
|
||||
assert_eq(res["valid"].size(), 0)
|
||||
assert_eq(res["dropped"].size(), 1)
|
||||
|
||||
|
||||
func test_bare_move_keys_on_name():
|
||||
var res = MoveValidator.validate([_m("refuse")], ["refuse"])
|
||||
assert_eq(res["valid"].size(), 1)
|
||||
|
||||
|
||||
func test_adjust_disposition_keys_on_name_keeps_delta():
|
||||
var res = MoveValidator.validate(
|
||||
[_m("adjust_disposition", ["+5"])], ["adjust_disposition"])
|
||||
assert_eq(res["valid"].size(), 1)
|
||||
assert_eq(res["valid"][0]["args"], ["+5"])
|
||||
|
||||
|
||||
func test_unknown_move_name_is_dropped():
|
||||
var res = MoveValidator.validate([_m("cast_fireball", ["9"])], ["refuse"])
|
||||
assert_eq(res["dropped"].size(), 1)
|
||||
Reference in New Issue
Block a user