summaryrefslogtreecommitdiff
path: root/go/2023/internal/day_04/part_01/part_01_test.go
blob: f6f1a8380703f02bccd705c42e359a3f9f3e9074 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package part_01

import (
	"testing"
)

func TestParseCardLine(t *testing.T) {
	input := "Card 1: 41 48 83 86 17 | 83 86  6 31 17  9 48 53"
	expected := Card{1, []int{41, 48, 83, 86, 17}, []int{83, 86, 6, 31, 17, 9, 48, 53}}

	actual := parseCardLine(input)

	if actual.id != expected.id {
		t.Errorf("ERROR: ID %d does not match expected %d", actual.id, expected.id)
	}

	if len(actual.winningNumbers) != len(expected.winningNumbers) {
		t.Errorf("ERROR: len(WinningNumbers) %d does not match expected %d", len(actual.winningNumbers), len(expected.winningNumbers))
	}

	if len(actual.haveNumbers) != len(expected.haveNumbers) {
		t.Errorf("ERROR: len(HaveNumbers) %d does not match expected %d", len(actual.haveNumbers), len(expected.haveNumbers))
	}

	for i, num := range actual.winningNumbers {
		if num != expected.winningNumbers[i] {
			t.Errorf("ERROR: WinningNumber %d does not match expected %d", num, expected.winningNumbers[i])
		}
	}

	for i, num := range actual.haveNumbers {
		if num != expected.haveNumbers[i] {
			t.Errorf("ERROR: HaveNumber %d does not match expected %d", num, expected.haveNumbers[i])
		}
	}

}

func TestTallyScore(t *testing.T) {
	card := Card{1, []int{41, 48, 83, 86, 17}, []int{83, 86, 6, 31, 17, 9, 48, 53}}
	expected := 8

	actual := tallyScore(card)

	if actual != expected {
		t.Errorf("ERROR: Score %d does not match expected %d", actual, expected)
	}
}