package bingo_test import ( "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) g.Length = length testGroup := func(name string, iter iter.Seq[[]bingo.Tile]) { t.Log("Testing:", name) for i := range size { g.Board[i].Checked = false } count := 0 for group := range iter { if len(group) != g.Length { t.Fatalf("Mismatching %s length: %d != %d", name, g.Length, len(group)) } for i := range g.Length { if group[i].Checked != false { t.Errorf("Incorrect value in %s!\n", name) } } count++ } if count != 2 && count != length { t.Errorf("Expected to iterate 2 or %d times, iterated %d\n", length, count) } for i := range size { g.Board[i].Checked = true } for group := range iter { if len(group) != g.Length { t.Logf("Mismatching %s length: %d != %d\n", name, g.Length, len(group)) } for i := range g.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()) } testGame(9, 3) testGame(25, 5) testGame(49, 7) }