feat(*): support java Character[] & format unit test
diff --git a/array.go b/array.go
index 99f8560..c85f059 100644
--- a/array.go
+++ b/array.go
@@ -17,6 +17,10 @@
package hessian
+import (
+ "strings"
+)
+
func init() {
SetCollectionSerialize(&IntegerArray{})
SetCollectionSerialize(&ByteArray{})
@@ -231,13 +235,20 @@
// nolint
func (ca *CharacterArray) Get() []interface{} {
- res := []interface{}{ca.Values}
+ length := len(ca.Values)
+ charArr := strings.Split(ca.Values, "")
+ res := make([]interface{}, length)
+ for i := 0; i < length; i++ {
+ res[i] = charArr[i]
+ }
return res
}
// nolint
func (ca *CharacterArray) Set(vs []interface{}) {
- ca.Values = vs[0].(string)
+ for _, v := range vs {
+ ca.Values = ca.Values + v.(string)
+ }
}
// nolint
diff --git a/array_test.go b/array_test.go
index 92aafd6..034d06f 100644
--- a/array_test.go
+++ b/array_test.go
@@ -24,11 +24,10 @@
func TestBooleanArray(t *testing.T) {
booleanArray := &BooleanArray{[]bool{true, false}}
- jcs := JavaCollectionSerializer{}
e := &Encoder{}
a := assert.New(t)
- err := jcs.EncObject(e, booleanArray)
+ err := e.Encode(booleanArray)
a.Nil(err)
decoder := NewDecoder(e.buffer)
@@ -39,11 +38,10 @@
func TestIntegerArray(t *testing.T) {
ia := &IntegerArray{[]int32{1, 2, 3}}
- jcs := JavaCollectionSerializer{}
- e := &Encoder{}
a := assert.New(t)
- err := jcs.EncObject(e, ia)
+ e := &Encoder{}
+ err := e.Encode(ia)
a.Nil(err)
decoder := NewDecoder(e.buffer)
@@ -54,7 +52,7 @@
// Integer[] that length > 7
bigIa := &IntegerArray{[]int32{1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3}}
ne := &Encoder{}
- err = jcs.EncObject(ne, bigIa)
+ err = ne.Encode(bigIa)
a.Nil(err)
decoder = NewDecoder(e.buffer)
@@ -66,11 +64,10 @@
func TestByteArray(t *testing.T) {
ba := &ByteArray{}
ba.Values = []int32{1, 2, 3}
- jcs := JavaCollectionSerializer{}
- e := &Encoder{}
a := assert.New(t)
- err := jcs.EncObject(e, ba)
+ e := &Encoder{}
+ err := e.Encode(ba)
a.Nil(err)
decoder := NewDecoder(e.buffer)
@@ -82,11 +79,10 @@
func TestShortArray(t *testing.T) {
sa := &ShortArray{}
sa.Values = []int32{1, 2, 3}
- jcs := JavaCollectionSerializer{}
- e := &Encoder{}
a := assert.New(t)
- err := jcs.EncObject(e, sa)
+ e := &Encoder{}
+ err := e.Encode(sa)
a.Nil(err)
decoder := NewDecoder(e.buffer)
@@ -97,11 +93,10 @@
func TestLongArray(t *testing.T) {
la := &LongArray{[]int64{1, 2, 3, 4}}
- jcs := JavaCollectionSerializer{}
- e := &Encoder{}
a := assert.New(t)
- err := jcs.EncObject(e, la)
+ e := &Encoder{}
+ err := e.Encode(la)
a.Nil(err)
decoder := NewDecoder(e.buffer)
@@ -112,11 +107,10 @@
func TestFloatArray(t *testing.T) {
fa := &FloatArray{[]float32{1, 2, 3, 4}}
- jcs := JavaCollectionSerializer{}
- e := &Encoder{}
a := assert.New(t)
- err := jcs.EncObject(e, fa)
+ e := &Encoder{}
+ err := e.Encode(fa)
a.Nil(err)
decoder := NewDecoder(e.buffer)
@@ -127,11 +121,10 @@
func TestDoubleArray(t *testing.T) {
da := &DoubleArray{[]float64{1, 2, 3, 4}}
- jcs := JavaCollectionSerializer{}
- e := &Encoder{}
a := assert.New(t)
- err := jcs.EncObject(e, da)
+ e := &Encoder{}
+ err := e.Encode(da)
a.Nil(err)
decoder := NewDecoder(e.buffer)
@@ -142,11 +135,10 @@
func TestCharacterArray(t *testing.T) {
ca := &CharacterArray{"hello world"}
- jcs := JavaCollectionSerializer{}
- e := &Encoder{}
a := assert.New(t)
- err := jcs.EncObject(e, ca)
+ e := &Encoder{}
+ err := e.Encode(ca)
a.Nil(err)
decoder := NewDecoder(e.buffer)