This is an automated email from the ASF dual-hosted git repository.
wongoo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo-go-hessian2.git
The following commit(s) were added to refs/heads/master by this push:
new 4ce8c8d fix bug for encTypeInt32 (#148)
4ce8c8d is described below
commit 4ce8c8d0d7aca4152121331dc0fd6722b25a3146
Author: fangyincheng <[email protected]>
AuthorDate: Sat Jan 11 23:02:23 2020 +0800
fix bug for encTypeInt32 (#148)
* fix bug for encTypeInt32
* modify go.mod
* add assert
* compare the response
---
encode.go | 8 +++++---
int.go | 2 +-
int_test.go | 28 ++++++++++++++++++++++++++++
3 files changed, 34 insertions(+), 4 deletions(-)
diff --git a/encode.go b/encode.go
index 4e4fc8e..fbeae99 100644
--- a/encode.go
+++ b/encode.go
@@ -126,6 +126,11 @@ func (e *Encoder) Encode(v interface{}) error {
case map[interface{}]interface{}:
return e.encUntypedMap(val)
+ case POJOEnum:
+ if p, ok := v.(POJOEnum); ok {
+ return e.encObject(p)
+ }
+
default:
t := UnpackPtrType(reflect.TypeOf(v))
switch t.Kind() {
@@ -168,9 +173,6 @@ func (e *Encoder) Encode(v interface{}) error {
return err
}
default:
- if p, ok := v.(POJOEnum); ok { // JavaEnum
- return e.encObject(p)
- }
return perrors.Errorf("type not supported! %s",
t.Kind().String())
}
}
diff --git a/int.go b/int.go
index b2b24a6..5263a3f 100644
--- a/int.go
+++ b/int.go
@@ -109,7 +109,7 @@ func (d *Decoder) decInt32(flag int32) (int32, error) {
func (d *Encoder) encTypeInt32(b []byte, p interface{}) ([]byte, error) {
value := reflect.ValueOf(p)
- if value.IsNil() {
+ if PackPtr(value).IsNil() {
return encNull(b), nil
}
value = UnpackPtrValue(value)
diff --git a/int_test.go b/int_test.go
index 56c903e..726a11f 100644
--- a/int_test.go
+++ b/int_test.go
@@ -18,6 +18,7 @@
package hessian
import (
+ "github.com/stretchr/testify/assert"
"testing"
)
@@ -39,6 +40,7 @@ func TestEncInt32Len1B(t *testing.T) {
}
d = NewDecoder(e.Buffer())
res, err = d.Decode()
+ assert.Equal(t, v, res)
t.Logf("decode(%v) = %v, %v\n", v, res, err)
}
@@ -60,9 +62,34 @@ func TestEncInt32Len2B(t *testing.T) {
t.Logf("%#v\n", e.buffer)
d = NewDecoder(e.Buffer())
res, err = d.Decode()
+ assert.Nil(t, err)
+ assert.Equal(t, v, res)
t.Logf("decode(%#x) = %#x, %v\n", v, res, err)
}
+func TestEncInt32ForAlias(t *testing.T) {
+ var (
+ v JavaEnum
+ err error
+ e *Encoder
+ d *Decoder
+ res interface{}
+ )
+
+ v = 0xe6
+ // var v int32 = 0xf016
+ e = NewEncoder()
+ e.Encode(v)
+ if len(e.Buffer()) == 0 {
+ t.Fail()
+ }
+ d = NewDecoder(e.Buffer())
+ res, err = d.Decode()
+ assert.Nil(t, err)
+ assert.Equal(t, int32(v), res)
+ t.Logf("decode(%v) = %v, %v\n", v, res, err)
+}
+
func TestEncInt32Len4B(t *testing.T) {
var (
v int32
@@ -81,6 +108,7 @@ func TestEncInt32Len4B(t *testing.T) {
d = NewDecoder(e.Buffer())
res, err = d.Decode()
+ assert.Nil(t, err)
t.Logf("decode(%v) = %v, %v\n", v, res, err)
}