yjp 1 жил өмнө
parent
commit
a8ca4ec269
1 өөрчлөгдсөн 104 нэмэгдсэн , 78 устгасан
  1. 104 78
      test/assign_tag_test.go

+ 104 - 78
test/assign_tag_test.go

@@ -5,6 +5,7 @@ import (
 	"git.sxidc.com/go-tools/utils/strutils"
 	"github.com/pkg/errors"
 	"math/rand"
+	"strings"
 	"testing"
 	"time"
 )
@@ -731,51 +732,54 @@ func TestAssignTagDefaultUsage(t *testing.T) {
 }
 
 type AssignTagFromSlice struct {
-	BasicField              string               `assign:"toField:BasicField"`
-	BasicSliceField         []string             `assign:"toField:BasicSliceField"`
-	TimeSliceField          []time.Time          `assign:"toField:TimeSliceField"`
-	StructSliceField        []AssignTagFrom      `assign:"toField:StructSliceField"`
-	MapSliceField           []map[string]string  `assign:"toField:MapSliceField"`
-	ChanSliceField          []chan any           `assign:"toField:ChanSliceField"`
-	FuncSliceField          []func() string      `assign:"toField:FuncSliceField"`
-	BasicPointerSliceField  []*string            `assign:"toField:BasicPointerSliceField"`
-	TimePointerSliceField   []*time.Time         `assign:"toField:TimePointerSliceField"`
-	StructPointerSliceField []*AssignTagFrom     `assign:"toField:StructPointerSliceField"`
-	MapPointerSliceField    []*map[string]string `assign:"toField:MapPointerSliceField"`
-	ChanPointerSliceField   []*chan any          `assign:"toField:ChanPointerSliceField"`
-	FuncPointerSliceField   []*func() string     `assign:"toField:FuncPointerSliceField"`
+	BasicField                   string               `assign:"toField:BasicField"`
+	BasicSliceField              []string             `assign:"toField:BasicSliceField"`
+	TimeSliceField               []time.Time          `assign:"toField:TimeSliceField"`
+	StructSliceField             []AssignTagFrom      `assign:"toField:StructSliceField"`
+	MapSliceField                []map[string]string  `assign:"toField:MapSliceField"`
+	ChanSliceField               []chan any           `assign:"toField:ChanSliceField"`
+	FuncSliceField               []func() string      `assign:"toField:FuncSliceField"`
+	BasicPointerSliceField       []*string            `assign:"toField:BasicPointerSliceField"`
+	TimePointerSliceField        []*time.Time         `assign:"toField:TimePointerSliceField"`
+	StructPointerSliceField      []*AssignTagFrom     `assign:"toField:StructPointerSliceField"`
+	MapPointerSliceField         []*map[string]string `assign:"toField:MapPointerSliceField"`
+	ChanPointerSliceField        []*chan any          `assign:"toField:ChanPointerSliceField"`
+	FuncPointerSliceField        []*func() string     `assign:"toField:FuncPointerSliceField"`
+	FromStringSliceToStringField []string             `assign:"toField:FromStringSliceToStringField"`
 }
 
 type AssignTagFromSlicePointerField struct {
-	BasicField              *string               `assign:"toField:BasicField"`
-	BasicSliceField         *[]string             `assign:"toField:BasicSliceField"`
-	TimeSliceField          *[]time.Time          `assign:"toField:TimeSliceField"`
-	StructSliceField        *[]AssignTagFrom      `assign:"toField:StructSliceField"`
-	MapSliceField           *[]map[string]string  `assign:"toField:MapSliceField"`
-	ChanSliceField          *[]chan any           `assign:"toField:ChanSliceField"`
-	FuncSliceField          *[]func() string      `assign:"toField:FuncSliceField"`
-	BasicPointerSliceField  *[]*string            `assign:"toField:BasicPointerSliceField"`
-	TimePointerSliceField   *[]*time.Time         `assign:"toField:TimePointerSliceField"`
-	StructPointerSliceField *[]*AssignTagFrom     `assign:"toField:StructPointerSliceField"`
-	MapPointerSliceField    *[]*map[string]string `assign:"toField:MapPointerSliceField"`
-	ChanPointerSliceField   *[]*chan any          `assign:"toField:ChanPointerSliceField"`
-	FuncPointerSliceField   *[]*func() string     `assign:"toField:FuncPointerSliceField"`
+	BasicField                   *string               `assign:"toField:BasicField"`
+	BasicSliceField              *[]string             `assign:"toField:BasicSliceField"`
+	TimeSliceField               *[]time.Time          `assign:"toField:TimeSliceField"`
+	StructSliceField             *[]AssignTagFrom      `assign:"toField:StructSliceField"`
+	MapSliceField                *[]map[string]string  `assign:"toField:MapSliceField"`
+	ChanSliceField               *[]chan any           `assign:"toField:ChanSliceField"`
+	FuncSliceField               *[]func() string      `assign:"toField:FuncSliceField"`
+	BasicPointerSliceField       *[]*string            `assign:"toField:BasicPointerSliceField"`
+	TimePointerSliceField        *[]*time.Time         `assign:"toField:TimePointerSliceField"`
+	StructPointerSliceField      *[]*AssignTagFrom     `assign:"toField:StructPointerSliceField"`
+	MapPointerSliceField         *[]*map[string]string `assign:"toField:MapPointerSliceField"`
+	ChanPointerSliceField        *[]*chan any          `assign:"toField:ChanPointerSliceField"`
+	FuncPointerSliceField        *[]*func() string     `assign:"toField:FuncPointerSliceField"`
+	FromStringSliceToStringField *[]string             `assign:"toField:FromStringSliceToStringField"`
 }
 
 type AssignTagToSlice struct {
-	BasicField              string
-	BasicSliceField         []string
-	TimeSliceField          []time.Time
-	StructSliceField        []AssignTagTo
-	MapSliceField           []map[string]string
-	ChanSliceField          []chan any
-	FuncSliceField          []func() string
-	BasicPointerSliceField  []*string
-	TimePointerSliceField   []*time.Time
-	StructPointerSliceField []*AssignTagFromSlice
-	MapPointerSliceField    []*map[string]string
-	ChanPointerSliceField   []*chan any
-	FuncPointerSliceField   []*func() string
+	BasicField                   string
+	BasicSliceField              []string
+	TimeSliceField               []time.Time
+	StructSliceField             []AssignTagTo
+	MapSliceField                []map[string]string
+	ChanSliceField               []chan any
+	FuncSliceField               []func() string
+	BasicPointerSliceField       []*string
+	TimePointerSliceField        []*time.Time
+	StructPointerSliceField      []*AssignTagFromSlice
+	MapPointerSliceField         []*map[string]string
+	ChanPointerSliceField        []*chan any
+	FuncPointerSliceField        []*func() string
+	FromStringSliceToStringField string
 }
 
 func (to AssignTagToSlice) checkFields(t *testing.T, from AssignTagFromSlice) {
@@ -865,6 +869,11 @@ func (to AssignTagToSlice) checkFields(t *testing.T, from AssignTagFromSlice) {
 				(*value)(), (*to.FuncPointerSliceField[i])()))
 		}
 	}
+
+	if strings.Join(from.FromStringSliceToStringField, "::") != to.FromStringSliceToStringField {
+		t.Fatalf("%+v\n", errors.Errorf("FromStringSliceToStringField not equal: from %v, to %v",
+			strings.Join(from.FromStringSliceToStringField, "::"), to.FromStringSliceToStringField))
+	}
 }
 
 func (to AssignTagToSlice) checkNil(t *testing.T) {
@@ -919,22 +928,27 @@ func (to AssignTagToSlice) checkNil(t *testing.T) {
 	if to.FuncPointerSliceField != nil {
 		t.Fatalf("%+v\n", errors.Errorf("FuncPointerSliceField not nil"))
 	}
+
+	if to.FromStringSliceToStringField != "" {
+		t.Fatalf("%+v\n", errors.Errorf("FromStringSliceToStringField not zero"))
+	}
 }
 
 type AssignTagToSlicePointerField struct {
-	BasicField              *string
-	BasicSliceField         *[]string
-	TimeSliceField          *[]time.Time
-	StructSliceField        *[]AssignTagTo
-	MapSliceField           *[]map[string]string
-	ChanSliceField          *[]chan any
-	FuncSliceField          *[]func() string
-	BasicPointerSliceField  *[]*string
-	TimePointerSliceField   *[]*time.Time
-	StructPointerSliceField *[]*AssignTagFromSlice
-	MapPointerSliceField    *[]*map[string]string
-	ChanPointerSliceField   *[]*chan any
-	FuncPointerSliceField   *[]*func() string
+	BasicField                   *string
+	BasicSliceField              *[]string
+	TimeSliceField               *[]time.Time
+	StructSliceField             *[]AssignTagTo
+	MapSliceField                *[]map[string]string
+	ChanSliceField               *[]chan any
+	FuncSliceField               *[]func() string
+	BasicPointerSliceField       *[]*string
+	TimePointerSliceField        *[]*time.Time
+	StructPointerSliceField      *[]*AssignTagFromSlice
+	MapPointerSliceField         *[]*map[string]string
+	ChanPointerSliceField        *[]*chan any
+	FuncPointerSliceField        *[]*func() string
+	FromStringSliceToStringField *string
 }
 
 func (to AssignTagToSlicePointerField) checkFields(t *testing.T, from AssignTagFromSlice) {
@@ -1024,6 +1038,11 @@ func (to AssignTagToSlicePointerField) checkFields(t *testing.T, from AssignTagF
 				(*value)(), (*(*to.FuncPointerSliceField)[i])()))
 		}
 	}
+
+	if strings.Join(from.FromStringSliceToStringField, "::") != *to.FromStringSliceToStringField {
+		t.Fatalf("%+v\n", errors.Errorf("FromStringSliceToStringField not equal: from %v, to %v",
+			strings.Join(from.FromStringSliceToStringField, "::"), *to.FromStringSliceToStringField))
+	}
 }
 
 func (to AssignTagToSlicePointerField) checkNil(t *testing.T) {
@@ -1078,6 +1097,10 @@ func (to AssignTagToSlicePointerField) checkNil(t *testing.T) {
 	if to.FuncPointerSliceField != nil {
 		t.Fatalf("%+v\n", errors.Errorf("FuncPointerSliceField not nil"))
 	}
+
+	if to.FromStringSliceToStringField != nil {
+		t.Fatalf("%+v\n", errors.Errorf("FromStringSliceToStringField not nil"))
+	}
 }
 
 func TestAssignTagDefaultUsageSlice(t *testing.T) {
@@ -1154,37 +1177,40 @@ func TestAssignTagDefaultUsageSlice(t *testing.T) {
 	mapPointerSliceField := []*map[string]string{&map1, &map2}
 	chanPointerSliceField := []*chan any{&chan1, &chan2}
 	funcPointerSliceField := []*func() string{&func1, &func2}
+	fromStringSliceToStringField := []string{str1, str2}
 
 	from := AssignTagFromSlice{
-		BasicField:              basicField,
-		BasicSliceField:         basicSliceField,
-		TimeSliceField:          timeSliceField,
-		StructSliceField:        structSliceField,
-		MapSliceField:           mapSliceField,
-		ChanSliceField:          chanSliceField,
-		FuncSliceField:          funcSliceField,
-		BasicPointerSliceField:  basicPointerSliceField,
-		TimePointerSliceField:   timePointerSliceField,
-		StructPointerSliceField: structPointerSliceField,
-		MapPointerSliceField:    mapPointerSliceField,
-		ChanPointerSliceField:   chanPointerSliceField,
-		FuncPointerSliceField:   funcPointerSliceField,
+		BasicField:                   basicField,
+		BasicSliceField:              basicSliceField,
+		TimeSliceField:               timeSliceField,
+		StructSliceField:             structSliceField,
+		MapSliceField:                mapSliceField,
+		ChanSliceField:               chanSliceField,
+		FuncSliceField:               funcSliceField,
+		BasicPointerSliceField:       basicPointerSliceField,
+		TimePointerSliceField:        timePointerSliceField,
+		StructPointerSliceField:      structPointerSliceField,
+		MapPointerSliceField:         mapPointerSliceField,
+		ChanPointerSliceField:        chanPointerSliceField,
+		FuncPointerSliceField:        funcPointerSliceField,
+		FromStringSliceToStringField: fromStringSliceToStringField,
 	}
 
 	fromPointer := AssignTagFromSlicePointerField{
-		BasicField:              &basicField,
-		BasicSliceField:         &basicSliceField,
-		TimeSliceField:          &timeSliceField,
-		StructSliceField:        &structSliceField,
-		MapSliceField:           &mapSliceField,
-		ChanSliceField:          &chanSliceField,
-		FuncSliceField:          &funcSliceField,
-		BasicPointerSliceField:  &basicPointerSliceField,
-		TimePointerSliceField:   &timePointerSliceField,
-		StructPointerSliceField: &structPointerSliceField,
-		MapPointerSliceField:    &mapPointerSliceField,
-		ChanPointerSliceField:   &chanPointerSliceField,
-		FuncPointerSliceField:   &funcPointerSliceField,
+		BasicField:                   &basicField,
+		BasicSliceField:              &basicSliceField,
+		TimeSliceField:               &timeSliceField,
+		StructSliceField:             &structSliceField,
+		MapSliceField:                &mapSliceField,
+		ChanSliceField:               &chanSliceField,
+		FuncSliceField:               &funcSliceField,
+		BasicPointerSliceField:       &basicPointerSliceField,
+		TimePointerSliceField:        &timePointerSliceField,
+		StructPointerSliceField:      &structPointerSliceField,
+		MapPointerSliceField:         &mapPointerSliceField,
+		ChanPointerSliceField:        &chanPointerSliceField,
+		FuncPointerSliceField:        &funcPointerSliceField,
+		FromStringSliceToStringField: &fromStringSliceToStringField,
 	}
 
 	fromPointerNil := AssignTagFromPointerField{}