Make composition and boundary tests extension-friendly
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
package register
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
@@ -13,21 +12,23 @@ func TestRegisterAddsGenericFamily(t *testing.T) {
|
||||
if err := Register(registries, nil); err != nil {
|
||||
t.Fatalf("Register() error = %v, want nil", err)
|
||||
}
|
||||
assertKeys(t, "chunkers", registries.Chunkers.RegisteredKeys(), []string{"generic"})
|
||||
assertKeys(t, "mergers", registries.Mergers.RegisteredKeys(), nil)
|
||||
assertKeys(t, "normalizers", registries.Normalizers.RegisteredKeys(), nil)
|
||||
assertKeys(t, "validators", registries.Validators.RegisteredKeys(), []string{
|
||||
assertContainsKeys(t, "chunkers", registries.Chunkers.RegisteredKeys(), []string{"generic"})
|
||||
assertContainsKeys(t, "validators", registries.Validators.RegisteredKeys(), []string{
|
||||
"generic/always_accept",
|
||||
"generic/always_reject",
|
||||
"generic/valid_json",
|
||||
"generic/valid_json_schema",
|
||||
})
|
||||
assertKeys(t, "outputs", registries.Outputs.RegisteredKeys(), []string{"json"})
|
||||
if got := registries.Inputs.RegisteredKeys(); len(got) != 0 {
|
||||
t.Fatalf("input keys = %#v, want generic registrar to leave inputs unchanged", got)
|
||||
assertContainsKeys(t, "outputs", registries.Outputs.RegisteredKeys(), []string{"json"})
|
||||
assertNoKeys(t, "inputs", registries.Inputs.RegisteredKeys(), "generic registrar to leave inputs unchanged")
|
||||
assertNoKeys(t, "extractors", registries.Extractors.RegisteredKeys(), "generic registrar to leave extractors unchanged")
|
||||
assertNoKeys(t, "mergers", registries.Mergers.RegisteredKeys(), "generic registrar to leave mergers for typed family composition")
|
||||
assertNoKeys(t, "normalizers", registries.Normalizers.RegisteredKeys(), "generic registrar to leave normalizers for typed family composition")
|
||||
if chunker, err := registries.Chunkers.Build("generic"); err != nil || chunker.Key() != "generic" {
|
||||
t.Fatalf("build generic chunker = %v, %v; want generic implementation", chunker, err)
|
||||
}
|
||||
if got := registries.Extractors.RegisteredKeys(); len(got) != 0 {
|
||||
t.Fatalf("extractor keys = %#v, want generic registrar to leave extractors unchanged", got)
|
||||
if output, err := registries.Outputs.Build("json"); err != nil || output.Key() != "json" {
|
||||
t.Fatalf("build json output = %v, %v; want json implementation", output, err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,9 +84,22 @@ func completeRegistries() pipeline.Registries {
|
||||
}
|
||||
}
|
||||
|
||||
func assertKeys(t *testing.T, name string, got, want []string) {
|
||||
func assertContainsKeys(t *testing.T, name string, got, want []string) {
|
||||
t.Helper()
|
||||
if !reflect.DeepEqual(got, want) {
|
||||
t.Fatalf("%s keys = %#v, want %#v", name, got, want)
|
||||
seen := make(map[string]struct{}, len(got))
|
||||
for _, key := range got {
|
||||
seen[key] = struct{}{}
|
||||
}
|
||||
for _, key := range want {
|
||||
if _, ok := seen[key]; !ok {
|
||||
t.Fatalf("%s keys = %#v, want required key %q", name, got, key)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func assertNoKeys(t *testing.T, name string, got []string, reason string) {
|
||||
t.Helper()
|
||||
if len(got) != 0 {
|
||||
t.Fatalf("%s keys = %#v, want %s", name, got, reason)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user