Skip to content

Commit

Permalink
Added uint16 and increased test coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
0xC0D3D00D committed Jan 11, 2020
1 parent f8f09d6 commit 010978d
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 8 deletions.
10 changes: 6 additions & 4 deletions encode.go
Expand Up @@ -80,12 +80,14 @@ func Marshal(v interface{}) ([]byte, error) {
return encodeInteger(int64(v.(int32))), nil
case int64:
return encodeInteger(v.(int64)), nil
case uint64:
return encodeUnsignedInteger(v.(uint64)), nil
case uint8:
return encodeInteger(int64(v.(uint8))), nil
return encodeUnsignedInteger(uint64(v.(uint8))), nil
case uint16:
return encodeUnsignedInteger(uint64(v.(uint16))), nil
case uint32:
return encodeInteger(int64(v.(uint32))), nil
return encodeUnsignedInteger(uint64(v.(uint32))), nil
case uint64:
return encodeUnsignedInteger(v.(uint64)), nil
case string:
return encodeSimpleString(v.(string)), nil
case []byte:
Expand Down
34 changes: 30 additions & 4 deletions encode_test.go
Expand Up @@ -8,6 +8,8 @@ import (
"testing"
)

type unsupportedType int

func BenchmarkEncodeInteger(b *testing.B) {
for n := 0; n < b.N; n++ {
encodeInteger(1234)
Expand Down Expand Up @@ -112,29 +114,53 @@ func TestEncodeArray(t *testing.T) {
nil,
}, // array of two bulk strings
{
[]byte{'*', '5', '\r', '\n',
[]byte{'*', '1', '3', '\r', '\n',
'$', '-', '1', '\r', '\n',
':', '1', '\r', '\n',
':', '2', '\r', '\n',
':', '3', '\r', '\n',
':', '4', '\r', '\n',
':', '5', '\r', '\n',
':', '6', '\r', '\n',
':', '7', '\r', '\n',
':', '8', '\r', '\n',
':', '9', '\r', '\n',
'+', 's', 't', 'r', '\r', '\n',
'$', '6', '\r', '\n',
'f', 'o', 'o', 'b', 'a', 'r', '\r', '\n',
'-', 'e', 'r', 'r', '\r', '\n',
},
[]interface{}{
nil,
int(1),
int8(2),
int32(3),
int64(4),
int16(3),
int32(4),
int64(5),
uint8(6),
uint16(7),
uint32(8),
uint64(9),
"str",
[]byte{'f', 'o', 'o', 'b', 'a', 'r'},
errors.New("err"),
},
nil,
}, // mixed array
{
nil,
[]interface{}{
int(1),
unsupportedType(1),
},
ErrUnsupportedType,
}, // Unsupported type
}

for _, testCase := range testCases {
msg, err := encodeArray(testCase.resp)
if !reflect.DeepEqual(msg, testCase.msg) || err != testCase.err {
t.Fatalf("Case %v:\nExpected resp=%v and err=%v, Actual resp=%v, err=%v", testCase.msg, testCase.resp, testCase.err, msg, err)
t.Fatalf("Case %v:\nExpected resp=%s and err=%v, Actual resp=%s, err=%v", testCase.resp, testCase.msg, testCase.err, msg, err)
}
}
}

0 comments on commit 010978d

Please sign in to comment.