Files
go-agwpe/agwpe_test.go

80 lines
1.8 KiB
Go

package agwpe
import (
"net"
"testing"
"time"
)
// NOTE(m): Use more table-driven-tests? At the moment this feels less abstract.
func TestNewPacketEngine(t *testing.T) {
// Default configuration
engine, err := NewPacketEngine("localhost:1234")
if err != nil {
t.Errorf("Did not expect error: %v", err)
}
if engine.cfg.Timeout != 5*time.Second {
t.Errorf("Expected 5 second timeout, got %v", engine.cfg.Timeout)
}
if engine.Ready {
t.Error("Expected engine that is not ready")
}
// Custom timeout
engine, err = NewPacketEngine("localhost:1234", WithTimeout(30*time.Second))
if err != nil {
t.Errorf("Did not expect error: %v", err)
}
if engine.cfg.Timeout != 30*time.Second {
t.Errorf("Expected 30 second timeout, got %v", engine.cfg.Timeout)
}
}
func TestPacketEngine_Connect(t *testing.T) {
listener, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
t.Fatal(err)
}
defer listener.Close()
serverAddr := listener.Addr().String()
// Successful connect
engine, _ := NewPacketEngine(serverAddr)
err = engine.Connect()
if err != nil {
t.Errorf("Did not expect error: %v", err)
}
// Invalid address
engine, _ = NewPacketEngine("invalid-address")
err = engine.Connect()
if err == nil {
t.Error("Expected an error")
}
}
func TestPacketEngine_Disconnect(t *testing.T) {
listener, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
t.Fatal(err)
}
defer listener.Close()
serverAddr := listener.Addr().String()
engine, _ := NewPacketEngine(serverAddr)
engine.Connect()
// Disconnect connected engine
err = engine.Disconnect()
if err != nil {
t.Errorf("Did not expect error: %v", err)
}
// Call to Disconnect() on disconnected packet engine should return an error
err = engine.Disconnect()
if err == nil {
t.Error("Expected an error")
}
}