48 lines
1.4 KiB
GDScript3
48 lines
1.4 KiB
GDScript3
|
|
extends Node
|
||
|
|
|
||
|
|
func _ready():
|
||
|
|
print("=== Guandan Card Game - Core Logic Test ===\n")
|
||
|
|
|
||
|
|
var config := RuleConfig.standard()
|
||
|
|
var deck := Deck.create(42)
|
||
|
|
print("Deck: %d cards" % deck.remaining())
|
||
|
|
assert(deck.remaining() == 108, "deck size")
|
||
|
|
|
||
|
|
deck = Deck.create(42)
|
||
|
|
deck.deal(108)
|
||
|
|
assert(deck.remaining() == 0, "deal all")
|
||
|
|
|
||
|
|
var d1 := Deck.create(42)
|
||
|
|
var d2 := Deck.create(42)
|
||
|
|
var h1 := d1.deal(27)
|
||
|
|
var h2 := d2.deal(27)
|
||
|
|
var deterministic := true
|
||
|
|
for i in range(27):
|
||
|
|
if h1[i].card_id != h2[i].card_id: deterministic = false
|
||
|
|
assert(deterministic, "shuffle deterministic")
|
||
|
|
|
||
|
|
var gs := GameState.create(config, 42)
|
||
|
|
assert(gs.current_rank == 2, "start level 2")
|
||
|
|
|
||
|
|
var t := Actions.Team.create_team(0, 0, 2)
|
||
|
|
assert(t.teammate_of(0) == 2, "teammate")
|
||
|
|
|
||
|
|
var l1 := L1BasicAI.new()
|
||
|
|
var hand: Array = [h1[0]]
|
||
|
|
var decision := l1.decide(hand, [], 5, config)
|
||
|
|
assert(decision.type != -2, "L1 AI returns valid result")
|
||
|
|
|
||
|
|
var l2 := L2RuleAI.new()
|
||
|
|
var decision2 := l2.decide(hand, [], 5, config)
|
||
|
|
assert(decision2.type != -2, "L2 AI returns valid result")
|
||
|
|
|
||
|
|
print("\n=== ALL TESTS PASSED ===")
|
||
|
|
get_tree().quit(0)
|
||
|
|
|
||
|
|
func assert(condition: bool, name: String):
|
||
|
|
if condition:
|
||
|
|
print(" PASS: %s" % name)
|
||
|
|
else:
|
||
|
|
printerr(" FAIL: %s" % name)
|
||
|
|
get_tree().quit(1)
|