Files
build-emacs-for-macos/pkg/cask/release_info_test.go

81 lines
1.7 KiB
Go

package cask
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestAsset(t *testing.T) {
// Define test cases
tests := []struct {
name string
release ReleaseInfo
needles []string
want *ReleaseAsset
}{
{
name: "single needle, exact match",
release: ReleaseInfo{
Assets: map[string]*ReleaseAsset{
"asset1": {Filename: "asset1.zip"},
"asset2": {Filename: "asset2.zip"},
},
},
needles: []string{"asset1"},
want: &ReleaseAsset{Filename: "asset1.zip"},
},
{
name: "multiple needles, all",
release: ReleaseInfo{
Assets: map[string]*ReleaseAsset{
"asset1": {Filename: "asset1.zip"},
"asset2": {Filename: "asset2.zip"},
},
},
needles: []string{"zip", "asset1"},
want: &ReleaseAsset{Filename: "asset1.zip"},
},
{
name: "multiple needles, one match",
release: ReleaseInfo{
Assets: map[string]*ReleaseAsset{
"asset1": {Filename: "asset1.zip"},
"asset2": {Filename: "asset2.zip"},
},
},
needles: []string{"rar", "asset2"},
want: nil,
},
{
name: "multiple needles, no match",
release: ReleaseInfo{
Assets: map[string]*ReleaseAsset{
"asset1": {Filename: "asset1.zip"},
"asset2": {Filename: "asset2.zip"},
},
},
needles: []string{"rar", "asset3"},
want: nil,
},
{
name: "no needles",
release: ReleaseInfo{
Assets: map[string]*ReleaseAsset{
"asset1": {Filename: "asset1.zip"},
"asset2": {Filename: "asset2.zip"},
},
},
needles: nil,
want: &ReleaseAsset{Filename: "asset1.zip"},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := tt.release.Asset(tt.needles...)
assert.Equal(t, tt.want, got)
})
}
}