Skip to content

Commit 3b0b705

Browse files
committed
added tests
1 parent 098a5f9 commit 3b0b705

1 file changed

Lines changed: 51 additions & 4 deletions

File tree

collection_test.go

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -751,6 +751,41 @@ func TestServiceCollection_AddInstance(t *testing.T) {
751751
}
752752
})
753753

754+
t.Run("adds interface instance", func(t *testing.T) {
755+
collection := godi.NewServiceCollection()
756+
757+
// Create an instance that implements an interface
758+
var logger TestLogger = &testLogger{messages: []string{"interface instance"}}
759+
760+
// Add the interface instance
761+
err := collection.AddSingleton(logger, godi.As(new(TestLogger)))
762+
if err != nil {
763+
t.Fatalf("unexpected error: %v", err)
764+
}
765+
766+
provider, err := collection.BuildServiceProvider()
767+
if err != nil {
768+
t.Fatalf("unexpected error building provider: %v", err)
769+
}
770+
defer provider.Close()
771+
772+
// Should be able to resolve as interface
773+
resolved, err := godi.Resolve[TestLogger](provider)
774+
if err != nil {
775+
t.Fatalf("unexpected error resolving: %v", err)
776+
}
777+
778+
// Verify it's the same instance
779+
if resolved != logger {
780+
t.Error("expected same instance")
781+
}
782+
783+
logs := resolved.GetLogs()
784+
if len(logs) != 1 {
785+
t.Errorf("expected 1 log message, got %d", len(logs))
786+
}
787+
})
788+
754789
t.Run("adds slice instance", func(t *testing.T) {
755790
collection := godi.NewServiceCollection()
756791

@@ -883,11 +918,23 @@ func TestServiceCollection_AddInstance(t *testing.T) {
883918
t.Fatalf("expected 3 handlers, got %d", len(capturedHandlers))
884919
}
885920

886-
// Should be the same instances
887-
for i, h := range capturedHandlers {
888-
if h != handlers[i] {
889-
t.Errorf("handler %d not the same instance", i)
921+
// Create a map to track which handlers we've seen
922+
handlerMap := make(map[Handler]bool)
923+
for _, h := range handlers {
924+
handlerMap[h] = true
925+
}
926+
927+
// Verify we got the same instances (order doesn't matter)
928+
for i, capturedHandler := range capturedHandlers {
929+
if !handlerMap[capturedHandler] {
930+
t.Errorf("handler at index %d is not one of the original instances", i)
890931
}
932+
delete(handlerMap, capturedHandler)
933+
}
934+
935+
// Verify we saw all handlers
936+
if len(handlerMap) != 0 {
937+
t.Errorf("not all original handlers were found in captured handlers")
891938
}
892939
})
893940

0 commit comments

Comments
 (0)