50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
package server_test
|
|
|
|
import (
|
|
"github.com/kercylan98/minotaur/server"
|
|
"io"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
type Writer struct {
|
|
t *testing.T
|
|
bot *server.Bot
|
|
}
|
|
|
|
func (slf *Writer) Write(p []byte) (n int, err error) {
|
|
slf.t.Log(string(p))
|
|
switch string(p) {
|
|
case "hello":
|
|
slf.bot.SendPacket([]byte("world"))
|
|
}
|
|
return 0, nil
|
|
}
|
|
|
|
func TestNewBot(t *testing.T) {
|
|
srv := server.New(server.NetworkWebsocket)
|
|
|
|
srv.RegConnectionOpenedEvent(func(srv *server.Server, conn *server.Conn) {
|
|
t.Logf("connection opened: %s", conn.GetID())
|
|
conn.Close()
|
|
conn.Write([]byte("hello"))
|
|
})
|
|
srv.RegConnectionClosedEvent(func(srv *server.Server, conn *server.Conn, err any) {
|
|
t.Logf("connection closed: %s", conn.GetID())
|
|
})
|
|
srv.RegConnectionReceivePacketEvent(func(srv *server.Server, conn *server.Conn, packet []byte) {
|
|
t.Logf("connection %s receive packet: %s", conn.GetID(), string(packet))
|
|
conn.Write([]byte("world"))
|
|
})
|
|
srv.RegStartFinishEvent(func(srv *server.Server) {
|
|
bot := server.NewBot(srv, server.WithBotNetworkDelay(100, 20), server.WithBotWriter(func(bot *server.Bot) io.Writer {
|
|
return &Writer{t: t, bot: bot}
|
|
}))
|
|
bot.JoinServer()
|
|
time.Sleep(time.Second)
|
|
bot.SendPacket([]byte("hello"))
|
|
})
|
|
|
|
_ = srv.Run(":9600")
|
|
}
|