cache-apt-pkgs-action/internal/cache/key_test.go

124 lines
2.9 KiB
Go

package cache
import (
"testing"
"awalsh128.com/cache-apt-pkgs-action/internal/pkgs"
)
func TestKey_PlainText(t *testing.T) {
tests := []struct {
name string
key Key
expected string
}{
{
name: "Empty key",
key: Key{
Packages: pkgs.NewPackages(),
Version: "",
GlobalVersion: "",
OsArch: "",
},
expected: "Packages: '', Version: '', GlobalVersion: '', OsArch: ''",
},
{
name: "Single package",
key: Key{
Packages: pkgs.NewPackagesFromSlice([]string{"xdot=1.3-1"}),
Version: "test",
GlobalVersion: "v2",
OsArch: "amd64",
},
expected: "Packages: 'xdot=1.3-1', Version: 'test', GlobalVersion: 'v2', OsArch: 'amd64'",
},
{
name: "Multiple packages",
key: Key{
Packages: pkgs.NewPackagesFromSlice([]string{"xdot=1.3-1", "rolldice=1.16-1build3"}),
Version: "test",
GlobalVersion: "v2",
OsArch: "amd64",
},
expected: "Packages: 'xdot=1.3-1,rolldice=1.16-1build3', Version: 'test', GlobalVersion: 'v2', OsArch: 'amd64'",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
result := tt.key.PlainText()
if result != tt.expected {
t.Errorf("PlainText() = %v, want %v", result, tt.expected)
}
})
}
}
func TestKey_Hash(t *testing.T) {
tests := []struct {
name string
key1 Key
key2 Key
wantSame bool
}{
{
name: "Same keys hash to same value",
key1: Key{
Packages: pkgs.NewPackagesFromSlice([]string{"xdot=1.3-1"}),
Version: "test",
GlobalVersion: "v2",
OsArch: "amd64",
},
key2: Key{
Packages: pkgs.NewPackagesFromSlice([]string{"xdot=1.3-1"}),
Version: "test",
GlobalVersion: "v2",
OsArch: "amd64",
},
wantSame: true,
},
{
name: "Different packages hash to different values",
key1: Key{
Packages: pkgs.NewPackagesFromSlice([]string{"xdot=1.3-1"}),
Version: "test",
GlobalVersion: "v2",
OsArch: "amd64",
},
key2: Key{
Packages: pkgs.NewPackagesFromSlice([]string{"rolldice=1.16-1build3"}),
Version: "test",
GlobalVersion: "v2",
OsArch: "amd64",
},
wantSame: false,
},
{
name: "Different versions hash to different values",
key1: Key{
Packages: pkgs.NewPackagesFromSlice([]string{"xdot=1.3-1"}),
Version: "test1",
GlobalVersion: "v2",
OsArch: "amd64",
},
key2: Key{
Packages: pkgs.NewPackagesFromSlice([]string{"xdot=1.3-1"}),
Version: "test2",
GlobalVersion: "v2",
OsArch: "amd64",
},
wantSame: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
hash1 := tt.key1.Hash()
hash2 := tt.key2.Hash()
if (hash1 == hash2) != tt.wantSame {
t.Errorf("Hash equality = %v, want %v", hash1 == hash2, tt.wantSame)
}
})
}
}