mirror of
https://github.com/Sagit-chu/flvx.git
synced 2026-10-06 01:56:37 +08:00
46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
package chain
|
|
|
|
import (
|
|
"context"
|
|
"net"
|
|
"testing"
|
|
|
|
corechain "github.com/go-gost/core/chain"
|
|
)
|
|
|
|
type copyTestRoute struct{}
|
|
|
|
func (copyTestRoute) Dial(context.Context, string, string, ...corechain.DialOption) (net.Conn, error) {
|
|
return nil, nil
|
|
}
|
|
|
|
func (copyTestRoute) Bind(context.Context, string, string, ...corechain.BindOption) (net.Listener, error) {
|
|
return nil, nil
|
|
}
|
|
|
|
func (copyTestRoute) Nodes() []*corechain.Node {
|
|
return nil
|
|
}
|
|
|
|
func TestTransportCopyReturnsIndependentTransport(t *testing.T) {
|
|
originalRoute := copyTestRoute{}
|
|
replacementRoute := ©TestRoute{}
|
|
original := NewTransport(nil, nil, corechain.RouteTransportOption(originalRoute))
|
|
|
|
copied, ok := original.Copy().(*Transport)
|
|
if !ok {
|
|
t.Fatalf("copy type = %T, want *Transport", original.Copy())
|
|
}
|
|
if copied == original {
|
|
t.Fatal("Copy returned the original transport")
|
|
}
|
|
|
|
copied.Options().Route = replacementRoute
|
|
if original.Options().Route != originalRoute {
|
|
t.Fatal("mutating copied transport changed original route")
|
|
}
|
|
if copied.Options().Route != replacementRoute {
|
|
t.Fatal("copied transport did not retain its independent route")
|
|
}
|
|
}
|