mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-07-27 16:01:59 +08:00

- Introduces `Config`, `ConfigFactory`, `ProviderFactory`, and `Service` interfaces in `config.go`, `provider.go`, and `service.go`. - Implements `NamedMap` for managing named factories in `named.go`. - Adds `ProviderSettings` and `ScopedProviderSettings` for managing provider settings in `setting.go`.
73 lines
1.5 KiB
Go
73 lines
1.5 KiB
Go
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())
|
|
}
|