From a0ab77f2e8f21a7096dc9b0828907d6e4e34fc2d Mon Sep 17 00:00:00 2001 From: JP Appel Date: Wed, 11 Sep 2024 22:27:00 -0400 Subject: Start work on bingo functionality Created a simple struct for game state. Started work on board generators and their seeds. --- bingo/board_test.go | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 bingo/board_test.go (limited to 'bingo/board_test.go') diff --git a/bingo/board_test.go b/bingo/board_test.go new file mode 100644 index 0000000..5df20ee --- /dev/null +++ b/bingo/board_test.go @@ -0,0 +1,60 @@ +package bingo_test + +import ( + "iter" + "testing" + + "github.com/jpappel/bingo-factory/bingo" +) + +func TestRows(t *testing.T) { + g := bingo.Game{} + + testGame := func(size int, length int) { + + g.Checked = make([]bool, size) + + testGroup := func(name string, iter iter.Seq[[]bool]) { + for i := range size { + g.Checked[i] = false + } + for group := range iter { + if len(group) != length { + t.Logf("Mismatching %s length: %d != %d", name, length, len(group)) + t.FailNow() + } + + for i := range length { + if group[i] != false { + t.Errorf("Incorrect value in %s!\n", name) + } + } + } + for i := range size { + g.Checked[i] = 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] != true { + t.Errorf("Incorrect value in %s!\n", name) + } + } + } + } + + testGroup("row", g.Rows(length)) + testGroup("col", g.Cols(length)) + testGroup("diag", g.Diags(length)) + + } + + t.Log("Testing Square Games") + testGame(9, 3) + testGame(25, 5) + t.Log("Testing Non-Square Games") + testGame(22, 2) +} -- cgit v1.2.3