8c790357d3
- tests/runner.gd: lightweight headless test runner (TAP format output) - tests/weapons.gd: 6 tests for weapon registry and stats - tests/team.gd: 5 tests for team assignment and balancing - tests/economy.gd: 6 tests for economy constants and loss streaks - tests/bootstrapper.gd: 4 tests for LAN bootstrapper input parsing Run with: godot --headless -s tests/runner.gd --path . All 21 tests pass on Linux and Windows.
59 lines
1.9 KiB
GDScript
59 lines
1.9 KiB
GDScript
extends RefCounted
|
|
|
|
## Team management tests.
|
|
## Team enum: NONE=-1, T=0, CT=1
|
|
|
|
const TeamManager := preload("res://examples/multiplayer-fps/scripts/team-manager.gd")
|
|
|
|
func test_team_enum_values() -> String:
|
|
var e := ""
|
|
if TeamManager.Team.NONE != -1: e += " NONE should be -1"
|
|
if TeamManager.Team.T != 0: e += " T should be 0"
|
|
if TeamManager.Team.CT != 1: e += " CT should be 1"
|
|
return e
|
|
|
|
func test_get_team_name() -> String:
|
|
var tm := TeamManager.new()
|
|
var e := ""
|
|
if tm.get_team_name(TeamManager.Team.T) != "Terrorists":
|
|
e += " T team name wrong"
|
|
if tm.get_team_name(TeamManager.Team.CT) != "Counter-Terrorists":
|
|
e += " CT team name wrong"
|
|
if tm.get_team_name(TeamManager.Team.NONE) != "Unassigned":
|
|
e += " NONE team name wrong"
|
|
return e
|
|
|
|
func test_empty_assignments() -> String:
|
|
var tm := TeamManager.new()
|
|
if tm.get_team(999) != TeamManager.Team.NONE:
|
|
return "Unknown peer should return NONE"
|
|
if tm.get_team_members(TeamManager.Team.T).size() != 0:
|
|
return "No T members yet"
|
|
return ""
|
|
|
|
func test_auto_assign_balances() -> String:
|
|
var tm := TeamManager.new()
|
|
tm.assignments[101] = TeamManager.Team.T
|
|
tm.assignments[102] = TeamManager.Team.CT
|
|
|
|
# T=1, CT=1 — next goes to T (first alphabetically when tied)
|
|
var team_a := tm.auto_assign(103)
|
|
if team_a != TeamManager.Team.T:
|
|
return "3rd peer should join T when tied, got " + str(team_a)
|
|
|
|
# T=2, CT=1 — next goes to CT
|
|
var team_b := tm.auto_assign(104)
|
|
if team_b != TeamManager.Team.CT:
|
|
return "4th peer should join CT when T has fewer, got " + str(team_b)
|
|
return ""
|
|
|
|
func test_auto_assign_to_undersized_team() -> String:
|
|
var tm := TeamManager.new()
|
|
tm.assignments[101] = TeamManager.Team.CT
|
|
tm.assignments[102] = TeamManager.Team.CT
|
|
# T=0, CT=2
|
|
var team := tm.auto_assign(103)
|
|
if team != TeamManager.Team.T:
|
|
return "Peer should join T (0 members) over CT (2 members), got " + str(team)
|
|
return ""
|