Files
advent-of-code-go/2022/day20/main_test.go
T
2022-12-26 02:14:12 -05:00

116 lines
2.0 KiB
Go

package main
import (
_ "embed"
"testing"
)
var example = `1
2
-3
3
-2
0
4`
var example2 = `1
2
-3
9
-2
0
4`
var example3 = `1
2
-3
3
-8
0
4`
func Test_mixList(t *testing.T) {
tests := []struct {
name string
input string
decryptionKey, mixes int // for part 2 mostly
want int
}{
{
name: "example",
input: example,
decryptionKey: 1,
mixes: 1,
want: 3,
},
{
name: "example2",
input: example2,
decryptionKey: 1,
mixes: 1,
want: 3,
},
{
name: "example3",
input: example3,
decryptionKey: 1,
mixes: 1,
want: 3,
},
{
name: "actual",
input: input,
decryptionKey: 1,
mixes: 1,
want: 9945,
},
{
name: "example",
input: example,
decryptionKey: part2DecryptionKey,
mixes: 10,
want: 1623178306,
},
{
name: "actual",
input: input,
decryptionKey: part2DecryptionKey,
mixes: 10,
want: 3338877775442,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := mixList(tt.input, tt.decryptionKey, tt.mixes); got != tt.want {
t.Errorf("mixList() = %v, want %v", got, tt.want)
}
})
}
}
func Test_llNode_move(t *testing.T) {
zeroNode, nodeSlice := parseInput(`0
1
2
3
4
5`)
zeroNode.move(len(nodeSlice))
originalString := "0,1,2,3,4,5,"
// should be the same
if got := listToString(zeroNode, len(nodeSlice)); got != originalString {
t.Errorf("moving zero, want no change %q, got %q", originalString, got)
}
zeroNode.prev.move(len(nodeSlice))
if got := listToString(zeroNode, len(nodeSlice)); got != originalString {
t.Errorf("moving 5, want no change %q, got %q", originalString, got)
}
oneNode := zeroNode.next
oneNode.move(len(nodeSlice))
want := "0,2,1,3,4,5,"
if got := listToString(zeroNode, len(nodeSlice)); got != want {
t.Errorf("moving 1, want %q got %q", want, got)
}
}