adding quickfix library
This commit is contained in:
234
quickfix/session_settings_test.go
Normal file
234
quickfix/session_settings_test.go
Normal file
@ -0,0 +1,234 @@
|
||||
// Copyright (c) quickfixengine.org All rights reserved.
|
||||
//
|
||||
// This file may be distributed under the terms of the quickfixengine.org
|
||||
// license as defined by quickfixengine.org and appearing in the file
|
||||
// LICENSE included in the packaging of this file.
|
||||
//
|
||||
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING
|
||||
// THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A
|
||||
// PARTICULAR PURPOSE.
|
||||
//
|
||||
// See http://www.quickfixengine.org/LICENSE for licensing information.
|
||||
//
|
||||
// Contact ask@quickfixengine.org if any conditions of this licensing
|
||||
// are not clear to you.
|
||||
|
||||
package quickfix
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/quickfixgo/quickfix/config"
|
||||
)
|
||||
|
||||
func TestSessionSettings_StringSettings(t *testing.T) {
|
||||
s := NewSessionSettings()
|
||||
if s == nil {
|
||||
t.Error("NewSessionSettings returned nil")
|
||||
}
|
||||
|
||||
s.Set(config.BeginString, "foo")
|
||||
s.Set(config.BeginString, "blah")
|
||||
s.Set(config.SenderCompID, "bar")
|
||||
|
||||
if ok := s.HasSetting("DoesNotExist"); ok {
|
||||
t.Error("HasSetting returned true for setting that doesn't exist")
|
||||
}
|
||||
|
||||
if ok := s.HasSetting(config.BeginString); !ok {
|
||||
t.Error("HasSetting returned false for setting that does exist")
|
||||
}
|
||||
|
||||
if val, err := s.Setting(config.BeginString); err != nil {
|
||||
t.Error("Got error requesing setting", err)
|
||||
} else {
|
||||
if val != "blah" {
|
||||
t.Errorf("Expected %v got %v", "blah", val)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestSessionSettings_IntSettings(t *testing.T) {
|
||||
s := NewSessionSettings()
|
||||
if _, err := s.IntSetting(config.SocketAcceptPort); err == nil {
|
||||
t.Error("Expected error for unknown setting")
|
||||
}
|
||||
|
||||
s.Set(config.SocketAcceptPort, "notanint")
|
||||
_, err := s.IntSetting(config.SocketAcceptPort)
|
||||
if err == nil {
|
||||
t.Error("Expected error for unparsable value")
|
||||
}
|
||||
|
||||
if err.Error() != `"notanint" is invalid for SocketAcceptPort` {
|
||||
t.Errorf("Expected %s, got %s", `"notanint" is invalid for SocketAcceptPort`, err)
|
||||
}
|
||||
|
||||
s.Set(config.SocketAcceptPort, "1005")
|
||||
val, err := s.IntSetting(config.SocketAcceptPort)
|
||||
if err != nil {
|
||||
t.Error("Unexpected err", err)
|
||||
}
|
||||
|
||||
if val != 1005 {
|
||||
t.Errorf("Expected %v, got %v", 1005, val)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSessionSettings_BoolSettings(t *testing.T) {
|
||||
s := NewSessionSettings()
|
||||
if _, err := s.BoolSetting(config.ResetOnLogon); err == nil {
|
||||
t.Error("Expected error for unknown setting")
|
||||
}
|
||||
|
||||
s.Set(config.ResetOnLogon, "notabool")
|
||||
_, err := s.BoolSetting(config.ResetOnLogon)
|
||||
if err == nil {
|
||||
t.Error("Expected error for unparsable value")
|
||||
}
|
||||
|
||||
if err.Error() != `"notabool" is invalid for ResetOnLogon` {
|
||||
t.Errorf("Expected %s, got %s", `"notabool" is invalid for ResetOnLogon`, err)
|
||||
}
|
||||
|
||||
var boolTests = []struct {
|
||||
input string
|
||||
expected bool
|
||||
}{
|
||||
{"Y", true},
|
||||
{"y", true},
|
||||
{"N", false},
|
||||
{"n", false},
|
||||
}
|
||||
|
||||
for _, bt := range boolTests {
|
||||
s.Set(config.ResetOnLogon, bt.input)
|
||||
|
||||
actual, err := s.BoolSetting(config.ResetOnLogon)
|
||||
if err != nil {
|
||||
t.Error("Unexpected err", err)
|
||||
}
|
||||
|
||||
if actual != bt.expected {
|
||||
t.Errorf("Expected %v, got %v", bt.expected, actual)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestSessionSettings_DurationSettings(t *testing.T) {
|
||||
s := NewSessionSettings()
|
||||
if _, err := s.BoolSetting(config.ReconnectInterval); err == nil {
|
||||
t.Error("Expected error for unknown setting")
|
||||
}
|
||||
|
||||
s.Set(config.ReconnectInterval, "not duration")
|
||||
|
||||
_, err := s.DurationSetting(config.ReconnectInterval)
|
||||
if err == nil {
|
||||
t.Error("Expected error for unparsable value")
|
||||
}
|
||||
|
||||
if err.Error() != `"not duration" is invalid for ReconnectInterval` {
|
||||
t.Errorf("Expected %s, got %s", `"not duration" is invalid for ReconnectInterval`, err)
|
||||
}
|
||||
|
||||
s.Set(config.ReconnectInterval, "10s")
|
||||
|
||||
got, err := s.DurationSetting(config.ReconnectInterval)
|
||||
if err != nil {
|
||||
t.Error("Unexpected err", err)
|
||||
}
|
||||
|
||||
expected, _ := time.ParseDuration("10s")
|
||||
|
||||
if got != expected {
|
||||
t.Errorf("Expected %v, got %v", expected, got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSessionSettings_ByteSettings(t *testing.T) {
|
||||
s := NewSessionSettings()
|
||||
if _, err := s.RawSetting(config.SocketPrivateKeyBytes); err == nil {
|
||||
t.Error("Expected error for unknown setting")
|
||||
}
|
||||
|
||||
s.SetRaw(config.SocketPrivateKeyBytes, []byte("pembytes"))
|
||||
|
||||
got, err := s.RawSetting(config.SocketPrivateKeyBytes)
|
||||
if err != nil {
|
||||
t.Error("Unexpected err", err)
|
||||
}
|
||||
|
||||
if !bytes.Equal([]byte("pembytes"), got) {
|
||||
t.Errorf("Expected %v, got %v", []byte("pembytes"), got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSessionSettings_Clone(t *testing.T) {
|
||||
s := NewSessionSettings()
|
||||
|
||||
var cloneTests = []struct {
|
||||
input string
|
||||
expected string
|
||||
}{
|
||||
{config.SocketAcceptPort, "101"},
|
||||
{config.BeginString, "foo"},
|
||||
{config.ResetOnLogon, "N"},
|
||||
}
|
||||
|
||||
for _, ct := range cloneTests {
|
||||
s.Set(ct.input, ct.expected)
|
||||
}
|
||||
|
||||
cloned := s.clone()
|
||||
if cloned == nil {
|
||||
t.Error("clone returned nil")
|
||||
}
|
||||
|
||||
for _, ct := range cloneTests {
|
||||
actual, err := cloned.Setting(ct.input)
|
||||
|
||||
if err != nil {
|
||||
t.Error("Unexpected Error", err)
|
||||
}
|
||||
|
||||
if ct.expected != actual {
|
||||
t.Errorf("Expected %v got %v", ct.expected, actual)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestSessionSettings_Overlay(t *testing.T) {
|
||||
s := NewSessionSettings()
|
||||
overlay := NewSessionSettings()
|
||||
|
||||
s.Set(config.SocketAcceptPort, "101")
|
||||
s.Set(config.BeginString, "foo")
|
||||
|
||||
overlay.Set(config.SocketAcceptPort, "102")
|
||||
overlay.Set(config.SenderCompID, "blah")
|
||||
|
||||
var overlayTests = []struct {
|
||||
input string
|
||||
expected string
|
||||
}{
|
||||
{config.SocketAcceptPort, "102"},
|
||||
{config.BeginString, "foo"},
|
||||
{config.SenderCompID, "blah"},
|
||||
}
|
||||
|
||||
s.overlay(overlay)
|
||||
|
||||
for _, ot := range overlayTests {
|
||||
actual, err := s.Setting(ot.input)
|
||||
if err != nil {
|
||||
t.Error("Unexpected error", err)
|
||||
}
|
||||
|
||||
if actual != ot.expected {
|
||||
t.Errorf("expected %v got %v", ot.expected, actual)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user