@@ -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