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)
 }
 

Reply via email to