Files
mautrix-telegram/pkg/gotd/transport/once_close_test.go
T
2025-06-27 20:03:37 -07:00

48 lines
972 B
Go

package transport
import (
"net"
"testing"
"github.com/stretchr/testify/require"
"go.mau.fi/mautrix-telegram/pkg/gotd/testutil"
)
type closeMockListener struct {
closed int
err error
}
func (m *closeMockListener) Accept() (net.Conn, error) {
panic("unexpected call")
}
func (m *closeMockListener) Addr() net.Addr {
panic("unexpected call")
}
func (m *closeMockListener) Close() error {
m.closed++
return m.err
}
func Test_onceCloseListener_Close(t *testing.T) {
t.Run("OK", func(t *testing.T) {
m := &closeMockListener{}
once := onceCloseListener{Listener: m}
require.NoError(t, once.Close())
require.NoError(t, once.Close())
require.Equal(t, 1, m.closed)
})
t.Run("With Error", func(t *testing.T) {
testErr := testutil.TestError()
m := &closeMockListener{err: testErr}
once := onceCloseListener{Listener: m}
require.Equal(t, testErr, once.Close())
require.Equal(t, testErr, once.Close())
require.Equal(t, 1, m.closed)
})
}