advent-of-code/2023/day-4/main_test.go
Dan Anglin 53c58fa8c0
All checks were successful
/ test (pull_request) Successful in 27s
feat: add solution for 2023, Day 4
- Add the solution and the test suite for the Advent of Code,
  2023 - Day 4: Scratchcards
- style: applied gofmt for formatting
2023-12-04 17:36:05 +00:00

45 lines
1.3 KiB
Go

package main
import (
"reflect"
"strings"
"testing"
)
func TestDay4Scratchcards(t *testing.T) {
t.Log("This is the test suite for Advent of Code - Day 4 - Scratchcards")
testScratchcard := `
Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53
Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19
Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1
Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83
Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36
Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11
`
scratchcards := strings.Split(testScratchcard, "\n")
// remove the first and last lines of the test card pack as they are blank lines
scratchcards = scratchcards[1 : len(scratchcards)-1]
t.Run("Test the solution of the scratch card winnings", testSolveScratchCardWinnings(scratchcards))
}
func testSolveScratchCardWinnings(scratchcards []string) func(t *testing.T) {
return func(t *testing.T) {
got, err := solveScratchCardWinnings(scratchcards)
if err != nil {
t.Fatalf("Received an error after running solveScratchCardWinnings(); %v\n", err)
}
want := solution{
sumUniqueScratchcardScores: 13,
totalNumberOfScratchcards: 30,
}
if !reflect.DeepEqual(want, got) {
t.Errorf("unexpected result received from solveScratchCardWinnings(); want %d, got %d\n", want, got)
}
}
}