Added more tests for dataconverters

This commit is contained in:
Trial97
2020-07-20 13:36:41 +03:00
committed by Dan Christian Bogos
parent f6c1fa4eaa
commit 088f43c7af
2 changed files with 33 additions and 20 deletions

View File

@@ -90,10 +90,11 @@ func NewDataConverter(params string) (conv DataConverter, err error) {
}
return NewPhoneNumberConverter(params[len(MetaLibPhoneNumber)+1:])
case strings.HasPrefix(params, MetaTimeString):
if len(params) == len(MetaTimeString) { // no extra params, defaults implied
return NewTimeStringConverter(time.RFC3339)
layout := time.RFC3339
if len(params) > len(MetaTimeString) { // no extra params, defaults implied
layout = params[len(MetaTimeString)+1:]
}
return NewTimeStringConverter(params[len(MetaTimeString)+1:])
return NewTimeStringConverter(layout), nil
default:
return nil, fmt.Errorf("unsupported converter definition: <%s>", params)
}
@@ -342,10 +343,8 @@ func (*SIPURIMethodConverter) Convert(in interface{}) (out interface{}, err erro
return sipingo.MethodFrom(val), nil
}
func NewTimeStringConverter(params string) (hdlr DataConverter, err error) {
tm := new(TimeStringConverter)
tm.Layout = params
return tm, nil
func NewTimeStringConverter(params string) (hdlr DataConverter) {
return &TimeStringConverter{Layout: params}
}
type TimeStringConverter struct {

View File

@@ -150,6 +150,24 @@ func TestNewDataConverter(t *testing.T) {
if !reflect.DeepEqual(hex, exp) {
t.Errorf("Expected %+v received: %+v", exp, hex)
}
tm, err := NewDataConverter(MetaTimeString)
if err != nil {
t.Error(err)
}
expTime := NewTimeStringConverter(time.RFC3339)
if !reflect.DeepEqual(tm, expTime) {
t.Errorf("Expected %+v received: %+v", expTime, tm)
}
tm, err = NewDataConverter("*time_string:020106150400")
if err != nil {
t.Error(err)
}
expTime = NewTimeStringConverter("020106150400")
if !reflect.DeepEqual(tm, expTime) {
t.Errorf("Expected %+v received: %+v", expTime, tm)
}
}
func TestNewDataConverterMustCompile(t *testing.T) {
@@ -731,19 +749,14 @@ func TestNewDataConverterMustCompile2(t *testing.T) {
func TestNewTimeStringConverter(t *testing.T) {
//empty
eOut := &TimeStringConverter{Layout: EmptyString}
if rcv, err := NewTimeStringConverter(EmptyString); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(eOut, rcv) {
if rcv := NewTimeStringConverter(EmptyString); !reflect.DeepEqual(eOut, rcv) {
t.Errorf("Expecting: %+v, received: %+v", eOut, rcv)
}
//default
eOut = &TimeStringConverter{Layout: time.RFC3339}
var rcv DataConverter
var err error
if rcv, err = NewTimeStringConverter(time.RFC3339); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(eOut, rcv) {
if rcv = NewTimeStringConverter(time.RFC3339); !reflect.DeepEqual(eOut, rcv) {
t.Errorf("Expecting: %+v, received: %+v", eOut, rcv)
}
exp := "2015-07-07T14:52:08Z"
@@ -761,9 +774,7 @@ func TestNewTimeStringConverter(t *testing.T) {
//other
eOut = &TimeStringConverter{"020106150400"}
if rcv, err = NewTimeStringConverter("020106150400"); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(eOut, rcv) {
if rcv = NewTimeStringConverter("020106150400"); !reflect.DeepEqual(eOut, rcv) {
t.Errorf("Expecting: %+v, received: %+v", eOut, rcv)
}
exp = "070715145200"
@@ -781,9 +792,7 @@ func TestNewTimeStringConverter(t *testing.T) {
//wrong cases
eOut = &TimeStringConverter{"not really a good time"}
if rcv, err = NewTimeStringConverter("not really a good time"); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(eOut, rcv) {
if rcv = NewTimeStringConverter("not really a good time"); !reflect.DeepEqual(eOut, rcv) {
t.Errorf("Expecting: %+v, received: %+v", eOut, rcv)
}
exp = "not really a good time"
@@ -797,6 +806,11 @@ func TestNewTimeStringConverter(t *testing.T) {
} else if rcv.(string) != exp {
t.Errorf("Expecting: %+v, received: %+v", exp, rcv)
}
if _, err := rcv.Convert("137521s2790"); err == nil {
t.Errorf("Expected error received: %v:", err)
}
}
func TestStringHexConvertor(t *testing.T) {
hx := new(String2HexConverter)
val := "127.0.0.1"