crowns/search_test.go

58 lines
1.6 KiB
Go

package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestFindBooks(t *testing.T) {
hand := []Card{15, 16, 17} // [ 3♠ 3♥ 3♦]
t.Logf("Finding books in hand: %v", hand)
p := MakeBooks(hand, 10)
assert.EqualValues(t, [][]int{[]int{0, 1, 2}}, p)
}
func TestFindRuns(t *testing.T) {
hand := []Card{15, 20, 25, 25, 30} // [ 3♠ 4♠ 5♠ 5♠ 6♠]
t.Logf("Finding runs in hand: %v", hand)
p := MakeRuns(hand, 10)
assert.EqualValues(t, [][]int{[]int{0, 1, 2}, []int{0, 1, 2, 4}, []int{0, 1, 3}, []int{0, 1, 3, 4}, []int{1, 2, 4}, []int{1, 3, 4}}, p)
}
func TestFindMultiGroups(t *testing.T) {
hand := []Card{15, 20, 25, 30, 16, 17}
t.Logf("Finding all groupups in hand: %v", hand)
p := MakeMultiGroups(hand, 10)
assert.EqualValues(t, [][][]int{[][]int{[]int{0, 4, 5}}, [][]int{[]int{0, 4, 5}, []int{1, 2, 3}}, [][]int{[]int{0, 1, 2}}, [][]int{[]int{0, 1, 2, 3}}, [][]int{[]int{1, 2, 3}}, [][]int{[]int{1, 2, 3}, []int{0, 4, 5}}}, p)
}
func TestSolveHand(t *testing.T) {
hand := []Card{15, 20, 25, 30, 16, 17}
t.Logf("Finding best groupups in hand: %v", hand)
grouping, score := FindBestGrouping(hand, 10)
assert.EqualValues(t, [][]int{[]int{0, 4, 5}, []int{1, 2, 3}}, grouping)
assert.EqualValues(t, 0, score)
}
func TestScoreHand(t *testing.T) {
// P2 has [ [[ J★ 8♥ 8★] [ 9♥ 9♥ 9♠] [ Q♠ Jok Q♠]] leftover [10♣ 4♣] ] (score: 100)
hand := []Card{15, 20, 25, 30, 16, 17, 55, 60}
t.Logf("Finding score for hand: %v", hand)
grouping, score := FindBestGrouping(hand, 10)
assert.EqualValues(t, [][]int{[]int{0, 4, 5}, []int{1, 2, 3}}, grouping)
assert.EqualValues(t, 23, score)
}