All checks were successful
ci/woodpecker/push/build-image Pipeline was successful
63 lines
1.8 KiB
Go
63 lines
1.8 KiB
Go
package units
|
|
|
|
import "testing"
|
|
|
|
func TestRegistryResolve(t *testing.T) {
|
|
reg := NewRegistry()
|
|
if err := reg.Register(StaticFactory{UnitSystem: "us", Converter: USConverter{}}); err != nil {
|
|
t.Fatalf("register us: %v", err)
|
|
}
|
|
if err := reg.Register(StaticFactory{UnitSystem: "metric", Converter: MetricConverter{}}); err != nil {
|
|
t.Fatalf("register metric: %v", err)
|
|
}
|
|
|
|
converter, err := reg.Resolve("US")
|
|
if err != nil {
|
|
t.Fatalf("resolve us: %v", err)
|
|
}
|
|
if converter.System() != "us" {
|
|
t.Fatalf("expected us converter, got %q", converter.System())
|
|
}
|
|
|
|
converter, err = reg.Resolve(" metric ")
|
|
if err != nil {
|
|
t.Fatalf("resolve metric: %v", err)
|
|
}
|
|
if converter.System() != "metric" {
|
|
t.Fatalf("expected metric converter, got %q", converter.System())
|
|
}
|
|
}
|
|
|
|
func TestRegistryRejectsInvalidRegistration(t *testing.T) {
|
|
reg := NewRegistry()
|
|
if err := reg.Register(nil); err == nil {
|
|
t.Fatalf("expected error for nil factory")
|
|
}
|
|
|
|
if err := reg.Register(StaticFactory{UnitSystem: "", Converter: USConverter{}}); err == nil {
|
|
t.Fatalf("expected error for empty unit system")
|
|
}
|
|
|
|
if err := reg.Register(StaticFactory{UnitSystem: "us", Converter: nil}); err == nil {
|
|
t.Fatalf("expected error for nil converter")
|
|
}
|
|
|
|
if err := reg.Register(StaticFactory{UnitSystem: "us", Converter: USConverter{}}); err != nil {
|
|
t.Fatalf("register us: %v", err)
|
|
}
|
|
if err := reg.Register(StaticFactory{UnitSystem: "US", Converter: USConverter{}}); err == nil {
|
|
t.Fatalf("expected duplicate registration error")
|
|
}
|
|
}
|
|
|
|
func TestRegistryResolveUnknown(t *testing.T) {
|
|
reg := NewRegistry()
|
|
if err := reg.Register(StaticFactory{UnitSystem: "us", Converter: USConverter{}}); err != nil {
|
|
t.Fatalf("register us: %v", err)
|
|
}
|
|
|
|
if _, err := reg.Resolve("metric"); err == nil {
|
|
t.Fatalf("expected unsupported unit system error")
|
|
}
|
|
}
|