60 lines
1.2 KiB
Go
60 lines
1.2 KiB
Go
package seven
|
|
|
|
import "testing"
|
|
|
|
func Test_data_load(t *testing.T) {
|
|
rules := rules{}
|
|
err := rules.load("sample.txt")
|
|
if err != nil {
|
|
t.Log(err)
|
|
t.FailNow()
|
|
}
|
|
|
|
if len(rules.bags) != 9 {
|
|
t.Logf("Expected 9 rules, Got %d rules", len(rules.bags))
|
|
t.FailNow()
|
|
}
|
|
|
|
ruleCapacity := []int{2, 2, 1, 2, 2, 2, 2, 0, 0}
|
|
bagCapacity := []int{3, 7, 1, 11, 3, 7, 11, 0, 0}
|
|
|
|
for i, bag := range rules.bags {
|
|
if len(bag.capacity) != ruleCapacity[i] {
|
|
t.Logf("Expected %d bag, Got %d bags", ruleCapacity[i], len(bag.capacity))
|
|
t.FailNow()
|
|
}
|
|
|
|
capacity := 0
|
|
for _, count := range bag.capacity {
|
|
capacity += count
|
|
}
|
|
|
|
if capacity != bagCapacity[i] {
|
|
t.Logf("Expected %d bags, Got %d bags", bagCapacity[i], capacity)
|
|
t.FailNow()
|
|
}
|
|
}
|
|
}
|
|
|
|
func Test_bag_counting(t *testing.T) {
|
|
rules := rules{}
|
|
rules.load("sample.txt")
|
|
|
|
count, bags := rules.canContain("shiny gold")
|
|
if count != 4 {
|
|
t.Logf("Expected 4 bags could hold shiny gold, Got %d bags, %s", count, bags)
|
|
t.FailNow()
|
|
}
|
|
}
|
|
|
|
func Test_bag_capacity(t *testing.T) {
|
|
rules := rules{}
|
|
rules.load("sample.txt")
|
|
|
|
count := rules.canHold("shiny gold")
|
|
if count != 32 {
|
|
t.Logf("Expected 32 bag capacity for shiny gold, Got %d bag capacity", count)
|
|
t.FailNow()
|
|
}
|
|
}
|