signoz/pkg/factory/named_test.go

73 lines
1.5 KiB
Go
Raw Permalink Normal View History

package factory
import (
"testing"
"github.com/stretchr/testify/assert"
)
type f1 struct{}
func (*f1) Name() Name {
return MustNewName("f1")
}
type f2 struct{}
func (*f2) Name() Name {
return MustNewName("f2")
}
func TestNewNamedMap(t *testing.T) {
nm, err := NewNamedMap[Named](&f1{}, &f2{})
assert.NoError(t, err)
assert.Equal(t, map[Name]Named{
MustNewName("f1"): &f1{},
MustNewName("f2"): &f2{},
}, nm.factories)
assert.Equal(t, []Named{&f1{}, &f2{}}, nm.GetInOrder())
}
func TestNewNamedMapWithDuplicateNames(t *testing.T) {
_, err := NewNamedMap[Named](&f1{}, &f1{})
assert.Error(t, err)
}
func TestMustNewNamedMap(t *testing.T) {
nm := MustNewNamedMap[Named](&f1{}, &f2{})
assert.Equal(t, map[Name]Named{
MustNewName("f1"): &f1{},
MustNewName("f2"): &f2{},
}, nm.factories)
assert.Equal(t, []Named{&f1{}, &f2{}}, nm.GetInOrder())
}
func TestMustNewNamedMapDuplicateNames(t *testing.T) {
assert.Panics(t, func() {
MustNewNamedMap[Named](&f1{}, &f1{})
})
}
func TestNamedMapGet(t *testing.T) {
nm := MustNewNamedMap[Named](&f1{}, &f2{})
nf1, err := nm.Get("f1")
assert.NoError(t, err)
assert.IsType(t, &f1{}, nf1)
_, err = nm.Get("f3")
assert.Error(t, err)
}
func TestNamedMapAdd(t *testing.T) {
nm := MustNewNamedMap[Named](&f1{})
err := nm.Add(&f2{})
assert.NoError(t, err)
assert.Equal(t, map[Name]Named{
MustNewName("f1"): &f1{},
MustNewName("f2"): &f2{},
}, nm.factories)
assert.Equal(t, []Named{&f1{}, &f2{}}, nm.GetInOrder())
}