package config import ( "testing" "time" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestDefaultConfigValues(t *testing.T) { cfg := DefaultConfig() require.NotNil(t, cfg) assert.Equal(t, "tcp://:6995", cfg.Addr) assert.Equal(t, "tcp", cfg.Network) assert.Equal(t, 4096, cfg.ReadBufferSize) assert.Equal(t, 4096, cfg.WriteBufferSize) assert.Equal(t, 10000, cfg.MaxConnections) assert.Equal(t, "nnet", cfg.ApplicationProtocol) assert.NotNil(t, cfg.Logger) assert.NotNil(t, cfg.Metrics) assert.NotNil(t, cfg.Session) assert.NotNil(t, cfg.Codec) } func TestValidate_AddrRequired(t *testing.T) { cfg := &Config{Addr: ""} err := cfg.Validate() require.Error(t, err) } func TestValidate_FillsDefaults(t *testing.T) { cfg := &Config{ Addr: "tcp://:0", ReadBufferSize: 0, WriteBufferSize: -1, MaxConnections: 0, Network: "", } err := cfg.Validate() require.NoError(t, err) assert.Equal(t, "tcp", cfg.Network) assert.Equal(t, 4096, cfg.ReadBufferSize) assert.Equal(t, 4096, cfg.WriteBufferSize) assert.Equal(t, 10000, cfg.MaxConnections) } func TestCodecConfig_Defaults(t *testing.T) { cfg := DefaultConfig() require.NotNil(t, cfg.Codec) assert.Equal(t, "binary", cfg.Codec.DefaultCodec) assert.False(t, cfg.Codec.EnableProtocolEncode) } func TestSessionConfig_Defaults(t *testing.T) { cfg := DefaultConfig() require.NotNil(t, cfg.Session) assert.Equal(t, "memory", cfg.Session.Storage) assert.GreaterOrEqual(t, cfg.Session.Expiration, 1*time.Hour) }