package main
import (
"testing"
)
func TestShouldCountUniqueAnswers(t *testing.T) {
test := []struct {
Answers []string
Expect int
}{
{
Answers: []string{"abc"},
Expect: 3,
},
{
Answers: []string{"a", "b", "c"},
Expect: 3,
},
{
Answers: []string{"ab", "ac"},
Expect: 3,
},
{
Answers: []string{"a", "a", "a", "a"},
Expect: 1,
},
{
Answers: []string{"b"},
Expect: 1,
},
}
for i, in := range test {
result := countUniqueAnswers(in.Answers)
if result != in.Expect {
t.Errorf("%d: got %d, expected %d", i, result, in.Expect)
}
}
}
func TestShouldCountAllSharedAnswers(t *testing.T) {
test := []struct {
Answers []string
Expect int
}{
{
Answers: []string{"abc"},
Expect: 3,
},
{
Answers: []string{"a", "b", "c"},
Expect: 0,
},
{
Answers: []string{"ab", "ac"},
Expect: 1,
},
{
Answers: []string{"a", "a", "a", "a"},
Expect: 1,
},
{
Answers: []string{"b"},
Expect: 1,
},
}
for i, in := range test {
result := countAllSharedAnswers(in.Answers)
if result != in.Expect {
t.Errorf("%d: got %d, expected %d", i, result, in.Expect)
}
}
}
func TestTask1ShouldFindResult(t *testing.T) {
input := [][]string{
{"abc"},
{"a", "b", "c"},
{"ab", "ac"},
{"a", "a", "a", "a"},
{"b"},
}
expected := 11
result := Task1(input)
if result != expected {
t.Errorf("got %d, expected %d", result, expected)
}
}
func TestTask2ShouldFindResult(t *testing.T) {
input := [][]string{
{"abc"},
{"a", "b", "c"},
{"ab", "ac"},
{"a", "a", "a", "a"},
{"b"},
}
expected := 6
result := Task2(input)
if result != expected {
t.Errorf("got %d, expected %d", result, expected)
}
}