Files
aego/schema/shortname_test.go

36 lines
947 B
Go

package schema
import "testing"
type hpA struct{ A int32 }
type hpB struct{ B int32 }
type hpC struct{ C int32 }
func TestComponentNamedPrefersProject(t *testing.T) {
r := NewRegistry()
engine, err := Register[hpA](r, Name("gameplay.Health"))
if err != nil {
t.Fatal(err)
}
engine.Builtin = true
if td, ok := r.ComponentNamed("Health"); !ok || td != engine {
t.Fatalf("engine only: %v %v", td, ok)
}
project, err := Register[hpB](r, Name("game.Health"))
if err != nil {
t.Fatal(err)
}
if td, ok := r.ComponentNamed("Health"); !ok || td != project {
t.Fatalf("project wins: %v %v", td, ok)
}
if got := PreferProject([]*TypeDescriptor{engine, project}); len(got) != 1 || got[0] != project {
t.Fatalf("PreferProject = %v", got)
}
if _, err := Register[hpC](r, Name("mygame.Health")); err != nil {
t.Fatal(err)
}
if _, ok := r.ComponentNamed("Health"); ok {
t.Fatal("two project components must stay ambiguous")
}
}