package selfplay_test

import (
	"testing"

	"github.com/iliadenisov/alphabet"

	"gitea.iliadenisov.ru/developer/scrabble-solver/dictdawg"
	"gitea.iliadenisov.ru/developer/scrabble-solver/rules"
	"gitea.iliadenisov.ru/developer/scrabble-solver/scrabble"
	"gitea.iliadenisov.ru/developer/scrabble-solver/selfplay"
	"gitea.iliadenisov.ru/developer/scrabble-solver/wordlist"
)

func TestPlayGameSmoke(t *testing.T) {
	rs := rules.English()
	words := wordlist.Encode([]string{
		"cat", "cats", "car", "care", "cares", "cot", "cap", "cab", "at", "as",
		"tea", "eat", "ear", "era", "are", "oat", "oats", "sat", "set", "sea",
		"tar", "tars", "star", "arts", "rat", "rats", "ace", "aces", "scar", "scare",
	}, alphabet.Latin(), 2, 15)
	f, err := dictdawg.Build(alphabet.Latin(), words)
	if err != nil {
		t.Fatal(err)
	}
	gen := scrabble.NewDAWGGenerator(rs, f)

	res := selfplay.PlayGame(rs, gen, scrabble.Both, 1, nil)
	if res.Turns == 0 || res.Plays == 0 {
		t.Errorf("degenerate game: %+v", res)
	}
	t.Logf("smoke game: turns=%d plays=%d scores=%v", res.Turns, res.Plays, res.Scores)
}
