package bingo_test import ( "fmt" "iter" "testing" "github.com/jpappel/bingo-factory/bingo" ) func TestIters(t *testing.T) { g := bingo.Game{} testGame := func(size int, length int) { g.Board = make([]bingo.Tile, size) testGroup := func(name string, iter iter.Seq[[]bingo.Tile]) { for i := range size { g.Board[i].Checked = false } count := 0 for group := range iter { fmt.Println("!") if len(group) != length { t.Logf("Mismatching %s length: %d != %d", name, length, len(group)) t.FailNow() } for i := range length { if group[i].Checked != false { t.Errorf("Incorrect value in %s!\n", name) } } count++ } if count != 2 || count != size { t.Errorf("Expected to iterate 2 or %d times, iterated %d\n", size, count) } for i := range size { g.Board[i].Checked = true } for group := range iter { if len(group) != length { t.Logf("Mismatching %s length: %d != %d\n", name, length, len(group)) } for i := range length { if group[i].Checked != true { t.Errorf("Incorrect value in %s!\n", name) } } } } testGroup("row", g.Rows()) testGroup("col", g.Cols()) testGroup("diag", g.Diags()) } t.Log("Testing Square Games") testGame(9, 3) testGame(25, 5) t.Log("Testing Non-Square Games") testGame(22, 2) }