From da2960880a192f234cf2230e5947bc372b969989 Mon Sep 17 00:00:00 2001 From: Scott White Date: Mon, 17 Oct 2011 13:29:50 -0700 Subject: [PATCH] adding support for encoding string types and fixed the Pack test. --- go/msgpack_test.go | 4 ++-- go/pack.go | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/go/msgpack_test.go b/go/msgpack_test.go index 2c32fee2..399f84f3 100644 --- a/go/msgpack_test.go +++ b/go/msgpack_test.go @@ -254,13 +254,13 @@ func TestPackMap(t *testing.T) { func TestPack(t *testing.T) { b := &bytes.Buffer{} - for _, i := range [](interface{}){nil, false, true, 0, 1, 2, 3, 127, -32, -1, -33, 128} { + for _, i := range [](interface{}){nil, false, true, 0, 1, 2, 3, 127, -32, -1, -33, 128, "astring"} { _, err := Pack(b, i) if err != nil { t.Error("err != nil") } } - if bytes.Compare(b.Bytes(), []byte{0xc0, 0xc2, 0xc3, 0x00, 0x01, 0x02, 0x03, 0x7f, 0xf0, 0xff, 0xd0, 0xef, 0xd1, 0x00, 0x80}) == 0 { + if bytes.Compare(b.Bytes(), []byte{0xc0, 0xc2, 0xc3, 0x00, 0x01, 0x02, 0x03, 0x7f, 0xe0, 0xff, 0xd0, 0xdf, 0xd1, 0x00, 0x80, 0xA7, 'a', 's', 't', 'r', 'i', 'n', 'g'}) != 0 { t.Error("wrong output") } } diff --git a/go/pack.go b/go/pack.go index 763f9b08..b184c372 100644 --- a/go/pack.go +++ b/go/pack.go @@ -699,6 +699,8 @@ func PackValue(writer io.Writer, value reflect.Value) (n int, err os.Error) { return PackArray(writer, _value) case reflect.Map: return PackMap(writer, _value) + case reflect.String: + return PackBytes(writer, []byte(_value.String())) case reflect.Interface: __value := reflect.ValueOf(_value.Interface()) @@ -765,6 +767,8 @@ func Pack(writer io.Writer, value interface{}) (n int, err os.Error) { return PackFloat32Array(writer, _value) case []float64: return PackFloat64Array(writer, _value) + case string: + return PackBytes(writer, []byte(_value)) default: return PackValue(writer, reflect.ValueOf(value)) }