|
@@ -33,36 +33,40 @@ var writeTests = []struct {
|
|
|
expected string
|
|
expected string
|
|
|
}{
|
|
}{
|
|
|
{
|
|
{
|
|
|
- []interface{}{"SET", "foo", "bar"},
|
|
|
|
|
- "*3\r\n$3\r\nSET\r\n$3\r\nfoo\r\n$3\r\nbar\r\n",
|
|
|
|
|
|
|
+ []interface{}{"SET", "key", "value"},
|
|
|
|
|
+ "*3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$5\r\nvalue\r\n",
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- []interface{}{"SET", "foo", "bar"},
|
|
|
|
|
- "*3\r\n$3\r\nSET\r\n$3\r\nfoo\r\n$3\r\nbar\r\n",
|
|
|
|
|
|
|
+ []interface{}{"SET", "key", "value"},
|
|
|
|
|
+ "*3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$5\r\nvalue\r\n",
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ []interface{}{"SET", "key", byte(100)},
|
|
|
|
|
+ "*3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$3\r\n100\r\n",
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- []interface{}{"SET", "foo", byte(100)},
|
|
|
|
|
- "*3\r\n$3\r\nSET\r\n$3\r\nfoo\r\n$3\r\n100\r\n",
|
|
|
|
|
|
|
+ []interface{}{"SET", "key", 100},
|
|
|
|
|
+ "*3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$3\r\n100\r\n",
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- []interface{}{"SET", "foo", 100},
|
|
|
|
|
- "*3\r\n$3\r\nSET\r\n$3\r\nfoo\r\n$3\r\n100\r\n",
|
|
|
|
|
|
|
+ []interface{}{"SET", "key", int64(math.MinInt64)},
|
|
|
|
|
+ "*3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$20\r\n-9223372036854775808\r\n",
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- []interface{}{"SET", "foo", int64(math.MinInt64)},
|
|
|
|
|
- "*3\r\n$3\r\nSET\r\n$3\r\nfoo\r\n$20\r\n-9223372036854775808\r\n",
|
|
|
|
|
|
|
+ []interface{}{"SET", "key", float64(1349673917.939762)},
|
|
|
|
|
+ "*3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$21\r\n1.349673917939762e+09\r\n",
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- []interface{}{"SET", "foo", float64(1349673917.939762)},
|
|
|
|
|
- "*3\r\n$3\r\nSET\r\n$3\r\nfoo\r\n$21\r\n1.349673917939762e+09\r\n",
|
|
|
|
|
|
|
+ []interface{}{"SET", "key", ""},
|
|
|
|
|
+ "*3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$0\r\n\r\n",
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- []interface{}{"SET", "", []byte("foo")},
|
|
|
|
|
- "*3\r\n$3\r\nSET\r\n$0\r\n\r\n$3\r\nfoo\r\n",
|
|
|
|
|
|
|
+ []interface{}{"SET", "key", nil},
|
|
|
|
|
+ "*3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$0\r\n\r\n",
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- []interface{}{"SET", nil, []byte("foo")},
|
|
|
|
|
- "*3\r\n$3\r\nSET\r\n$0\r\n\r\n$3\r\nfoo\r\n",
|
|
|
|
|
|
|
+ []interface{}{"ECHO", true, false},
|
|
|
|
|
+ "*3\r\n$4\r\nECHO\r\n$1\r\n1\r\n$1\r\n0\r\n",
|
|
|
},
|
|
},
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -134,6 +138,37 @@ var readTests = []struct {
|
|
|
"*3\r\n$3\r\nfoo\r\n$-1\r\n$3\r\nbar\r\n",
|
|
"*3\r\n$3\r\nfoo\r\n$-1\r\n$3\r\nbar\r\n",
|
|
|
[]interface{}{[]byte("foo"), nil, []byte("bar")},
|
|
[]interface{}{[]byte("foo"), nil, []byte("bar")},
|
|
|
},
|
|
},
|
|
|
|
|
+
|
|
|
|
|
+ {
|
|
|
|
|
+ // "x" is not a valid length
|
|
|
|
|
+ "$x\r\nfoobar\r\n",
|
|
|
|
|
+ errorSentinel,
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ // -2 is not a valid length
|
|
|
|
|
+ "$-2\r\n",
|
|
|
|
|
+ errorSentinel,
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ // "x" is not a valid integer
|
|
|
|
|
+ ":x\r\n",
|
|
|
|
|
+ errorSentinel,
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ // missing \r\n following value
|
|
|
|
|
+ "$6\r\nfoobar",
|
|
|
|
|
+ errorSentinel,
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ // short value
|
|
|
|
|
+ "$6\r\nxx",
|
|
|
|
|
+ errorSentinel,
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ // long value
|
|
|
|
|
+ "$6\r\nfoobarx\r\n",
|
|
|
|
|
+ errorSentinel,
|
|
|
|
|
+ },
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func TestRead(t *testing.T) {
|
|
func TestRead(t *testing.T) {
|