123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524 |
- package test
- import (
- "git.sxidc.com/go-framework/baize/framework/core/tag/assign"
- "git.sxidc.com/go-tools/utils/strutils"
- "github.com/pkg/errors"
- "math/rand"
- "strings"
- "testing"
- "time"
- )
- type AssignTagFrom struct {
- StringField string `assign:"toField:StringField"`
- BoolField bool `assign:"toField:BoolField"`
- IntField int `assign:"toField:IntField"`
- Int8Field int8 `assign:"toField:Int8Field"`
- Int16Field int16 `assign:"toField:Int16Field"`
- Int32Field int32 `assign:"toField:Int32Field"`
- Int64Field int64 `assign:"toField:Int64Field"`
- UintField uint `assign:"toField:UintField"`
- Uint8Field uint8 `assign:"toField:Uint8Field"`
- Uint16Field uint16 `assign:"toField:Uint16Field"`
- Uint32Field uint32 `assign:"toField:Uint32Field"`
- Uint64Field uint64 `assign:"toField:Uint64Field"`
- Float32Field float32 `assign:"toField:Float32Field"`
- Float64Field float64 `assign:"toField:Float64Field"`
- MapField map[string]string `assign:"toField:MapField"`
- ChanField chan any `assign:"toField:ChanField"`
- FuncField func() string `assign:"toField:FuncField"`
- StructField struct{ ID string } `assign:"toField:StructField"`
- FromTimeToStringField time.Time `assign:"toField:FromTimeToStringField"`
- FromTimeToTimeField time.Time `assign:"toField:FromTimeToTimeField"`
- FromStringToTimeField string `assign:"toField:FromStringToTimeField"`
- }
- type AssignTagFromPointerField struct {
- StringField *string `assign:"toField:StringField"`
- BoolField *bool `assign:"toField:BoolField"`
- IntField *int `assign:"toField:IntField"`
- Int8Field *int8 `assign:"toField:Int8Field"`
- Int16Field *int16 `assign:"toField:Int16Field"`
- Int32Field *int32 `assign:"toField:Int32Field"`
- Int64Field *int64 `assign:"toField:Int64Field"`
- UintField *uint `assign:"toField:UintField"`
- Uint8Field *uint8 `assign:"toField:Uint8Field"`
- Uint16Field *uint16 `assign:"toField:Uint16Field"`
- Uint32Field *uint32 `assign:"toField:Uint32Field"`
- Uint64Field *uint64 `assign:"toField:Uint64Field"`
- Float32Field *float32 `assign:"toField:Float32Field"`
- Float64Field *float64 `assign:"toField:Float64Field"`
- MapField *map[string]string `assign:"toField:MapField"`
- ChanField *chan any `assign:"toField:ChanField"`
- FuncField *func() string `assign:"toField:FuncField"`
- StructField *struct{ ID string } `assign:"toField:StructField"`
- FromTimeToStringField *time.Time `assign:"toField:FromTimeToStringField"`
- FromTimeToTimeField *time.Time `assign:"toField:FromTimeToTimeField"`
- FromStringToTimeField *string `assign:"toField:FromStringToTimeField"`
- }
- type AssignTagTo struct {
- StringField string
- BoolField bool
- IntField int
- Int8Field int8
- Int16Field int16
- Int32Field int32
- Int64Field int64
- UintField uint
- Uint8Field uint8
- Uint16Field uint16
- Uint32Field uint32
- Uint64Field uint64
- Float32Field float32
- Float64Field float64
- MapField map[string]string
- ChanField chan any
- FuncField func() string
- StructField struct{ ID string }
- FromTimeToStringField string
- FromTimeToTimeField time.Time
- FromStringToTimeField time.Time
- }
- func (to AssignTagTo) checkFields(t *testing.T, from AssignTagFrom) {
- if from.StringField != to.StringField {
- t.Fatalf("%+v\n", errors.Errorf("StringField not equal: from %v, to %v",
- from.StringField, to.StringField))
- }
- if from.BoolField != to.BoolField {
- t.Fatalf("%+v\n", errors.Errorf("BoolField not equal: from %v, to %v",
- from.BoolField, to.BoolField))
- }
- if from.IntField != to.IntField {
- t.Fatalf("%+v\n", errors.Errorf("IntField not equal: from %v, to %v",
- from.IntField, to.IntField))
- }
- if from.Int8Field != to.Int8Field {
- t.Fatalf("%+v\n", errors.Errorf("Int8Field not equal: from %v, to %v",
- from.Int8Field, to.Int8Field))
- }
- if from.Int16Field != to.Int16Field {
- t.Fatalf("%+v\n", errors.Errorf("Int16Field not equal: from %v, to %v",
- from.Int16Field, to.Int16Field))
- }
- if from.Int32Field != to.Int32Field {
- t.Fatalf("%+v\n", errors.Errorf("Int32Field not equal: from %v, to %v",
- from.Int32Field, to.Int32Field))
- }
- if from.Int64Field != to.Int64Field {
- t.Fatalf("%+v\n", errors.Errorf("Int64Field not equal: from %v, to %v",
- from.Int64Field, to.Int64Field))
- }
- if from.UintField != to.UintField {
- t.Fatalf("%+v\n", errors.Errorf("UintField not equal: from %v, to %v",
- from.UintField, to.UintField))
- }
- if from.Uint8Field != to.Uint8Field {
- t.Fatalf("%+v\n", errors.Errorf("Uint8Field not equal: from %v, to %v",
- from.Uint8Field, to.Uint8Field))
- }
- if from.Uint16Field != to.Uint16Field {
- t.Fatalf("%+v\n", errors.Errorf("Uint16Field not equal: from %v, to %v",
- from.Uint16Field, to.Uint16Field))
- }
- if from.Uint32Field != to.Uint32Field {
- t.Fatalf("%+v\n", errors.Errorf("Uint32Field not equal: from %v, to %v",
- from.Uint32Field, to.Uint32Field))
- }
- if from.Uint64Field != to.Uint64Field {
- t.Fatalf("%+v\n", errors.Errorf("Uint64Field not equal: from %v, to %v",
- from.Uint64Field, to.Uint64Field))
- }
- if from.Float32Field != to.Float32Field {
- t.Fatalf("%+v\n", errors.Errorf("Float32Field not equal: from %v, to %v",
- from.Float32Field, to.Float32Field))
- }
- if from.Float64Field != to.Float64Field {
- t.Fatalf("%+v\n", errors.Errorf("Float64Field not equal: from %v, to %v",
- from.Float64Field, to.Float64Field))
- }
- for key, value := range from.MapField {
- if value != to.MapField[key] {
- t.Fatalf("%+v\n", errors.Errorf("MapField not equal: from %v, to %v",
- value, to.MapField[key]))
- }
- }
- if from.ChanField != to.ChanField {
- t.Fatalf("%+v\n", errors.Errorf("ChanField not equal: from %v, to %v",
- from.ChanField, to.ChanField))
- }
- if from.FuncField() != to.FuncField() {
- t.Fatalf("%+v\n", errors.Errorf("FuncField not equal: from %v, to %v",
- from.FuncField(), to.FuncField()))
- }
- if from.StructField.ID != to.StructField.ID {
- t.Fatalf("%+v\n", errors.Errorf("StructField not equal: from %v, to %v",
- from.StructField.ID, to.StructField.ID))
- }
- if from.FromTimeToStringField.Format(time.DateTime) != to.FromTimeToStringField {
- t.Fatalf("%+v\n", errors.Errorf("FromTimeToStringField not equal: from %v, to %v",
- from.FromTimeToStringField.Format(time.DateTime), to.FromTimeToStringField))
- }
- if from.FromTimeToTimeField.Format(time.DateTime) != to.FromTimeToTimeField.Format(time.DateTime) {
- t.Fatalf("%+v\n", errors.Errorf("FromTimeToTimeField not equal: from %v, to %v",
- from.FromTimeToTimeField.Format(time.DateTime), to.FromTimeToTimeField.Format(time.DateTime)))
- }
- if from.FromStringToTimeField != to.FromStringToTimeField.Format(time.DateTime) {
- t.Fatalf("%+v\n", errors.Errorf("FromStringToTimeField not equal: from %v, to %v",
- from.FromStringToTimeField, to.FromStringToTimeField.Format(time.DateTime)))
- }
- }
- func (to AssignTagTo) checkNil(t *testing.T) {
- if to.StringField != "" {
- t.Fatalf("%+v\n", errors.New("StringField not zero"))
- }
- if to.BoolField != false {
- t.Fatalf("%+v\n", errors.New("BoolField not zero"))
- }
- if to.IntField != 0 {
- t.Fatalf("%+v\n", errors.New("IntField not zero"))
- }
- if to.Int8Field != 0 {
- t.Fatalf("%+v\n", errors.New("Int8Field not zero"))
- }
- if to.Int16Field != 0 {
- t.Fatalf("%+v\n", errors.New("Int16Field not zero"))
- }
- if to.Int32Field != 0 {
- t.Fatalf("%+v\n", errors.New("Int32Field not zero"))
- }
- if to.Int64Field != 0 {
- t.Fatalf("%+v\n", errors.New("Int64Field not zero"))
- }
- if to.UintField != 0 {
- t.Fatalf("%+v\n", errors.New("UintField not zero"))
- }
- if to.Uint8Field != 0 {
- t.Fatalf("%+v\n", errors.New("Uint8Field not zero"))
- }
- if to.Uint16Field != 0 {
- t.Fatalf("%+v\n", errors.New("Uint16Field not zero"))
- }
- if to.Uint32Field != 0 {
- t.Fatalf("%+v\n", errors.New("Uint32Field not zero"))
- }
- if to.Uint64Field != 0 {
- t.Fatalf("%+v\n", errors.New("Uint64Field not zero"))
- }
- if to.Float32Field != 0 {
- t.Fatalf("%+v\n", errors.New("Float32Field not zero"))
- }
- if to.Float64Field != 0 {
- t.Fatalf("%+v\n", errors.New("Float64Field not zero"))
- }
- if to.MapField != nil {
- t.Fatalf("%+v\n", errors.New("MapField not zero"))
- }
- if to.ChanField != nil {
- t.Fatalf("%+v\n", errors.New("ChanField not zero"))
- }
- if to.FuncField != nil {
- t.Fatalf("%+v\n", errors.New("FuncField not zero"))
- }
- if to.StructField.ID != "" {
- t.Fatalf("%+v\n", errors.New("StructField not zero"))
- }
- if to.FromTimeToStringField != "" {
- t.Fatalf("%+v\n", errors.New("FromTimeToStringField not zero"))
- }
- if !to.FromTimeToTimeField.IsZero() {
- t.Fatalf("%+v\n", errors.New("FromTimeToTimeField not zero"))
- }
- if !to.FromStringToTimeField.IsZero() {
- t.Fatalf("%+v\n", errors.New("FromStringToTimeField not zero"))
- }
- }
- type AssignTagToPointerField struct {
- StringField *string
- BoolField *bool
- IntField *int
- Int8Field *int8
- Int16Field *int16
- Int32Field *int32
- Int64Field *int64
- UintField *uint
- Uint8Field *uint8
- Uint16Field *uint16
- Uint32Field *uint32
- Uint64Field *uint64
- Float32Field *float32
- Float64Field *float64
- MapField *map[string]string
- ChanField *chan any
- FuncField *func() string
- StructField *struct{ ID string }
- FromTimeToStringField *string
- FromTimeToTimeField *time.Time
- FromStringToTimeField *time.Time
- }
- func (to AssignTagToPointerField) checkFields(t *testing.T, from AssignTagFrom) {
- if from.StringField != *to.StringField {
- t.Fatalf("%+v\n", errors.Errorf("StringField not equal: from %v, to %v",
- from.StringField, *to.StringField))
- }
- if from.BoolField != *to.BoolField {
- t.Fatalf("%+v\n", errors.Errorf("BoolField not equal: from %v, to %v",
- from.BoolField, *to.BoolField))
- }
- if from.IntField != *to.IntField {
- t.Fatalf("%+v\n", errors.Errorf("IntField not equal: from %v, to %v",
- from.IntField, *to.IntField))
- }
- if from.Int8Field != *to.Int8Field {
- t.Fatalf("%+v\n", errors.Errorf("Int8Field not equal: from %v, to %v",
- from.Int8Field, *to.Int8Field))
- }
- if from.Int16Field != *to.Int16Field {
- t.Fatalf("%+v\n", errors.Errorf("Int16Field not equal: from %v, to %v",
- from.Int16Field, *to.Int16Field))
- }
- if from.Int32Field != *to.Int32Field {
- t.Fatalf("%+v\n", errors.Errorf("Int32Field not equal: from %v, to %v",
- from.Int32Field, *to.Int32Field))
- }
- if from.Int64Field != *to.Int64Field {
- t.Fatalf("%+v\n", errors.Errorf("Int64Field not equal: from %v, to %v",
- from.Int64Field, *to.Int64Field))
- }
- if from.UintField != *to.UintField {
- t.Fatalf("%+v\n", errors.Errorf("UintField not equal: from %v, to %v",
- from.UintField, *to.UintField))
- }
- if from.Uint8Field != *to.Uint8Field {
- t.Fatalf("%+v\n", errors.Errorf("Uint8Field not equal: from %v, to %v",
- from.Uint8Field, *to.Uint8Field))
- }
- if from.Uint16Field != *to.Uint16Field {
- t.Fatalf("%+v\n", errors.Errorf("Uint16Field not equal: from %v, to %v",
- from.Uint16Field, *to.Uint16Field))
- }
- if from.Uint32Field != *to.Uint32Field {
- t.Fatalf("%+v\n", errors.Errorf("Uint32Field not equal: from %v, to %v",
- from.Uint32Field, *to.Uint32Field))
- }
- if from.Uint64Field != *to.Uint64Field {
- t.Fatalf("%+v\n", errors.Errorf("Uint64Field not equal: from %v, to %v",
- from.Uint64Field, *to.Uint64Field))
- }
- if from.Float32Field != *to.Float32Field {
- t.Fatalf("%+v\n", errors.Errorf("Float32Field not equal: from %v, to %v",
- from.Float32Field, *to.Float32Field))
- }
- if from.Float64Field != *to.Float64Field {
- t.Fatalf("%+v\n", errors.Errorf("Float64Field not equal: from %v, to %v",
- from.Float64Field, *to.Float64Field))
- }
- for key, value := range from.MapField {
- if value != (*to.MapField)[key] {
- t.Fatalf("%+v\n", errors.Errorf("MapField not equal: from %v, to %v",
- value, (*to.MapField)[key]))
- }
- }
- if from.ChanField != *to.ChanField {
- t.Fatalf("%+v\n", errors.Errorf("ChanField not equal: from %v, to %v",
- from.ChanField, *to.ChanField))
- }
- if from.FuncField() != (*to.FuncField)() {
- t.Fatalf("%+v\n", errors.Errorf("FuncField not equal: from %v, to %v",
- from.FuncField(), (*to.FuncField)()))
- }
- if from.StructField.ID != (*to.StructField).ID {
- t.Fatalf("%+v\n", errors.Errorf("StructField not equal: from %v, to %v",
- from.StructField.ID, (*to.StructField).ID))
- }
- if from.FromTimeToStringField.Format(time.DateTime) != *to.FromTimeToStringField {
- t.Fatalf("%+v\n", errors.Errorf("FromTimeToStringField not equal: from %v, to %v",
- from.FromTimeToStringField.Format(time.DateTime), to.FromTimeToStringField))
- }
- if from.FromTimeToTimeField.Format(time.DateTime) != (*to.FromTimeToTimeField).Format(time.DateTime) {
- t.Fatalf("%+v\n", errors.Errorf("FromTimeToTimeField not equal: from %v, to %v",
- from.FromTimeToTimeField.Format(time.DateTime), (*to.FromTimeToTimeField).Format(time.DateTime)))
- }
- if from.FromStringToTimeField != (*to.FromStringToTimeField).Format(time.DateTime) {
- t.Fatalf("%+v\n", errors.Errorf("FromStringToTimeField not equal: from %v, to %v",
- from.FromStringToTimeField, (*to.FromStringToTimeField).Format(time.DateTime)))
- }
- }
- func (to AssignTagToPointerField) checkNil(t *testing.T) {
- if to.StringField != nil {
- t.Fatalf("%+v\n", errors.New("StringField not nil"))
- }
- if to.BoolField != nil {
- t.Fatalf("%+v\n", errors.New("BoolField not nil"))
- }
- if to.IntField != nil {
- t.Fatalf("%+v\n", errors.New("IntField not nil"))
- }
- if to.Int8Field != nil {
- t.Fatalf("%+v\n", errors.New("Int8Field not nil"))
- }
- if to.Int16Field != nil {
- t.Fatalf("%+v\n", errors.New("Int16Field not nil"))
- }
- if to.Int32Field != nil {
- t.Fatalf("%+v\n", errors.New("Int32Field not nil"))
- }
- if to.Int64Field != nil {
- t.Fatalf("%+v\n", errors.New("Int64Field not nil"))
- }
- if to.UintField != nil {
- t.Fatalf("%+v\n", errors.New("UintField not nil"))
- }
- if to.Uint8Field != nil {
- t.Fatalf("%+v\n", errors.New("Uint8Field not nil"))
- }
- if to.Uint16Field != nil {
- t.Fatalf("%+v\n", errors.New("Uint16Field not nil"))
- }
- if to.Uint32Field != nil {
- t.Fatalf("%+v\n", errors.New("Uint32Field not nil"))
- }
- if to.Uint64Field != nil {
- t.Fatalf("%+v\n", errors.New("Uint64Field not nil"))
- }
- if to.Float32Field != nil {
- t.Fatalf("%+v\n", errors.New("Float32Field not nil"))
- }
- if to.Float64Field != nil {
- t.Fatalf("%+v\n", errors.New("Float64Field not nil"))
- }
- if to.MapField != nil {
- t.Fatalf("%+v\n", errors.New("MapField not nil"))
- }
- if to.ChanField != nil {
- t.Fatalf("%+v\n", errors.New("ChanField not nil"))
- }
- if to.FuncField != nil {
- t.Fatalf("%+v\n", errors.New("ChanField not nil"))
- }
- if to.StructField != nil {
- t.Fatalf("%+v\n", errors.New("ChanField not nil"))
- }
- if to.FromTimeToStringField != nil {
- t.Fatalf("%+v\n", errors.New("ChanField not nil"))
- }
- if to.FromTimeToTimeField != nil {
- t.Fatalf("%+v\n", errors.New("ChanField not nil"))
- }
- if to.FromStringToTimeField != nil {
- t.Fatalf("%+v\n", errors.New("ChanField not nil"))
- }
- }
- func TestAssignTagDefaultUsage(t *testing.T) {
- stringField := strutils.SimpleUUID()
- boolField := rand.Intn(2) == 0
- intField := rand.Int()
- int8Field := int8(rand.Int())
- int16Field := int16(rand.Int())
- int32Field := int32(rand.Int())
- int64Field := int64(rand.Int())
- uintField := uint(rand.Int())
- uint8Field := uint8(rand.Int())
- uint16Field := uint16(rand.Int())
- uint32Field := uint32(rand.Int())
- uint64Field := uint64(rand.Int())
- float32Field := rand.Float32()
- float64Field := rand.Float64()
- mapField := map[string]string{strutils.SimpleUUID(): strutils.SimpleUUID()}
- chanField := make(chan any)
- returnValue := strutils.SimpleUUID()
- funcField := func() string { return returnValue }
- structField := struct{ ID string }{ID: strutils.SimpleUUID()}
- fromTimeToStringField := time.Now().Local()
- fromTimeToTimeField := time.Now().Local()
- fromStringToTimeField := time.Now().Local().Format(time.DateTime)
- from := AssignTagFrom{
- StringField: stringField,
- BoolField: boolField,
- IntField: intField,
- Int8Field: int8Field,
- Int16Field: int16Field,
- Int32Field: int32Field,
- Int64Field: int64Field,
- UintField: uintField,
- Uint8Field: uint8Field,
- Uint16Field: uint16Field,
- Uint32Field: uint32Field,
- Uint64Field: uint64Field,
- Float32Field: float32Field,
- Float64Field: float64Field,
- MapField: mapField,
- ChanField: chanField,
- FuncField: funcField,
- StructField: structField,
- FromTimeToStringField: fromTimeToStringField,
- FromTimeToTimeField: fromTimeToTimeField,
- FromStringToTimeField: fromStringToTimeField,
- }
- fromPointer := AssignTagFromPointerField{
- StringField: &stringField,
- BoolField: &boolField,
- IntField: &intField,
- Int8Field: &int8Field,
- Int16Field: &int16Field,
- Int32Field: &int32Field,
- Int64Field: &int64Field,
- UintField: &uintField,
- Uint8Field: &uint8Field,
- Uint16Field: &uint16Field,
- Uint32Field: &uint32Field,
- Uint64Field: &uint64Field,
- Float32Field: &float32Field,
- Float64Field: &float64Field,
- MapField: &mapField,
- ChanField: &chanField,
- FuncField: &funcField,
- StructField: &structField,
- FromTimeToStringField: &fromTimeToStringField,
- FromTimeToTimeField: &fromTimeToTimeField,
- FromStringToTimeField: &fromStringToTimeField,
- }
- fromPointerNil := AssignTagFromPointerField{}
- to := AssignTagTo{}
- toPointer := AssignTagToPointerField{}
- err := assign.DefaultUsage(from, to)
- if err == nil || err.Error() != "返回类型不是结构指针" {
- t.Fatalf("%+v\n", errors.Errorf("没有检测出to参数必须是指针类型"))
- }
- err = assign.DefaultUsage(from, toPointer)
- if err == nil || err.Error() != "返回类型不是结构指针" {
- t.Fatalf("%+v\n", errors.Errorf("没有检测出to参数必须是指针类型"))
- }
- err = assign.DefaultUsage(fromPointer, to)
- if err == nil || err.Error() != "返回类型不是结构指针" {
- t.Fatalf("%+v\n", errors.Errorf("没有检测出to参数必须是指针类型"))
- }
- err = assign.DefaultUsage(fromPointer, toPointer)
- if err == nil || err.Error() != "返回类型不是结构指针" {
- t.Fatalf("%+v\n", errors.Errorf("没有检测出to参数必须是指针类型"))
- }
- err = assign.DefaultUsage(from, &to)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- to.checkFields(t, from)
- to = AssignTagTo{}
- toPointer = AssignTagToPointerField{}
- err = assign.DefaultUsage(from, &toPointer)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- toPointer.checkFields(t, from)
- to = AssignTagTo{}
- toPointer = AssignTagToPointerField{}
- err = assign.DefaultUsage(fromPointer, &to)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- to.checkFields(t, from)
- to = AssignTagTo{}
- toPointer = AssignTagToPointerField{}
- err = assign.DefaultUsage(fromPointer, &toPointer)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- toPointer.checkFields(t, from)
- to = AssignTagTo{}
- toPointer = AssignTagToPointerField{}
- err = assign.DefaultUsage(&from, to)
- if err == nil || err.Error() != "返回类型不是结构指针" {
- t.Fatalf("%+v\n", errors.Errorf("没有检测出to参数必须是指针类型"))
- }
- err = assign.DefaultUsage(&from, toPointer)
- if err == nil || err.Error() != "返回类型不是结构指针" {
- t.Fatalf("%+v\n", errors.Errorf("没有检测出to参数必须是指针类型"))
- }
- err = assign.DefaultUsage(&fromPointer, to)
- if err == nil || err.Error() != "返回类型不是结构指针" {
- t.Fatalf("%+v\n", errors.Errorf("没有检测出to参数必须是指针类型"))
- }
- err = assign.DefaultUsage(&fromPointer, toPointer)
- if err == nil || err.Error() != "返回类型不是结构指针" {
- t.Fatalf("%+v\n", errors.Errorf("没有检测出to参数必须是指针类型"))
- }
- err = assign.DefaultUsage(&from, &to)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- to.checkFields(t, from)
- to = AssignTagTo{}
- toPointer = AssignTagToPointerField{}
- err = assign.DefaultUsage(&from, &toPointer)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- toPointer.checkFields(t, from)
- to = AssignTagTo{}
- toPointer = AssignTagToPointerField{}
- err = assign.DefaultUsage(&fromPointer, &to)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- to.checkFields(t, from)
- to = AssignTagTo{}
- toPointer = AssignTagToPointerField{}
- err = assign.DefaultUsage(&fromPointer, &toPointer)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- toPointer.checkFields(t, from)
- to = AssignTagTo{}
- toPointer = AssignTagToPointerField{}
- err = assign.DefaultUsage(fromPointerNil, &to)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- to.checkNil(t)
- to = AssignTagTo{}
- toPointer = AssignTagToPointerField{}
- err = assign.DefaultUsage(fromPointerNil, &toPointer)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- toPointer.checkNil(t)
- to = AssignTagTo{}
- toPointer = AssignTagToPointerField{}
- err = assign.DefaultUsage(&fromPointerNil, &to)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- to.checkNil(t)
- to = AssignTagTo{}
- toPointer = AssignTagToPointerField{}
- err = assign.DefaultUsage(&fromPointerNil, &toPointer)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- toPointer.checkNil(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"`
- FromStringSliceToStringField []string `assign:"toField:FromStringSliceToStringField"`
- FromTimeToStringField []time.Time `assign:"toField:FromTimeToStringField"`
- FromStringToTimeField []string `assign:"toField:FromStringToTimeField"`
- 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"`
- FromStringSliceToStringPointerField []*string `assign:"toField:FromStringSliceToStringPointerField"`
- FromTimeToStringPointerField []*time.Time `assign:"toField:FromTimeToStringPointerField"`
- FromStringToTimePointerField []*string `assign:"toField:FromStringToTimePointerField"`
- }
- 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"`
- FromStringSliceToStringField *[]string `assign:"toField:FromStringSliceToStringField"`
- FromTimeToStringField *[]time.Time `assign:"toField:FromTimeToStringField"`
- FromStringToTimeField *[]string `assign:"toField:FromStringToTimeField"`
- 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"`
- FromStringSliceToStringPointerField *[]*string `assign:"toField:FromStringSliceToStringPointerField"`
- FromTimeToStringPointerField *[]*time.Time `assign:"toField:FromTimeToStringPointerField"`
- FromStringToTimePointerField *[]*string `assign:"toField:FromStringToTimePointerField"`
- }
- type AssignTagToSlice struct {
- BasicField string
- BasicSliceField []string
- TimeSliceField []time.Time
- StructSliceField []AssignTagTo
- MapSliceField []map[string]string
- ChanSliceField []chan any
- FuncSliceField []func() string
- FromStringSliceToStringField string
- FromTimeToStringField []string
- FromStringToTimeField []time.Time
- BasicPointerSliceField []*string
- TimePointerSliceField []*time.Time
- StructPointerSliceField []*AssignTagTo
- MapPointerSliceField []*map[string]string
- ChanPointerSliceField []*chan any
- FuncPointerSliceField []*func() string
- FromStringSliceToStringPointerField string
- FromTimeToStringPointerField []*string
- FromStringToTimePointerField []*time.Time
- }
- func (to AssignTagToSlice) checkFields(t *testing.T, from AssignTagFromSlice) {
- if from.BasicField != to.BasicField {
- t.Fatalf("%+v\n", errors.Errorf("BasicField not equal: from %v, to %v",
- from.BasicField, to.BasicField))
- }
- for i, value := range from.BasicSliceField {
- if value != to.BasicSliceField[i] {
- t.Fatalf("%+v\n", errors.Errorf("BasicSliceField not equal: from %v, to %v",
- value, to.BasicSliceField[i]))
- }
- }
- for i, value := range from.TimeSliceField {
- if !value.Equal(to.TimeSliceField[i]) {
- t.Fatalf("%+v\n", errors.Errorf("TimeSliceField not equal: from %v, to %v",
- value, to.TimeSliceField[i]))
- }
- }
- for i, value := range from.StructSliceField {
- to.StructSliceField[i].checkFields(t, value)
- }
- for i, value := range from.MapSliceField {
- for k, v := range value {
- if v != to.MapSliceField[i][k] {
- t.Fatalf("%+v\n", errors.Errorf("MapSliceField not equal: from %v, to %v",
- value, to.MapSliceField[i][k]))
- }
- }
- }
- for i, value := range from.ChanSliceField {
- if value != to.ChanSliceField[i] {
- t.Fatalf("%+v\n", errors.Errorf("ChanSliceField not equal: from %v, to %v",
- value, to.ChanSliceField[i]))
- }
- }
- for i, value := range from.FuncSliceField {
- if value() != to.FuncSliceField[i]() {
- t.Fatalf("%+v\n", errors.Errorf("FuncSliceField not equal: from %v, to %v",
- value(), to.FuncSliceField[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))
- }
- for i, value := range from.FromTimeToStringField {
- if value.Format(time.DateTime) != to.FromTimeToStringField[i] {
- t.Fatalf("%+v\n", errors.Errorf("FromTimeToStringField not equal: from %v, to %v",
- value.Format(time.DateTime), to.FromTimeToStringField[i]))
- }
- }
- for i, value := range from.FromStringToTimeField {
- if value != to.FromStringToTimeField[i].Format(time.DateTime) {
- t.Fatalf("%+v\n", errors.Errorf("FromStringToTimeField not equal: from %v, to %v",
- value, to.FromStringToTimeField[i].Format(time.DateTime)))
- }
- }
- for i, value := range from.BasicPointerSliceField {
- if *value != *to.BasicPointerSliceField[i] {
- t.Fatalf("%+v\n", errors.Errorf("BasicPointerSliceField not equal: from %v, to %v",
- value, to.BasicPointerSliceField[i]))
- }
- }
- for i, value := range from.TimePointerSliceField {
- if !value.Equal(*to.TimePointerSliceField[i]) {
- t.Fatalf("%+v\n", errors.Errorf("TimeSliceField not equal: from %v, to %v",
- value, *to.TimePointerSliceField[i]))
- }
- }
- for i, value := range from.StructPointerSliceField {
- to.StructSliceField[i].checkFields(t, *value)
- }
- for i, value := range from.MapPointerSliceField {
- for k, v := range *value {
- if v != (*to.MapPointerSliceField[i])[k] {
- t.Fatalf("%+v\n", errors.Errorf("MapPointerSliceField not equal: from %v, to %v",
- value, (*to.MapPointerSliceField[i])[k]))
- }
- }
- }
- for i, value := range from.ChanPointerSliceField {
- if value != to.ChanPointerSliceField[i] {
- t.Fatalf("%+v\n", errors.Errorf("ChanPointerSliceField not equal: from %v, to %v",
- value, to.ChanPointerSliceField[i]))
- }
- }
- for i, value := range from.FuncPointerSliceField {
- if (*value)() != (*to.FuncPointerSliceField[i])() {
- t.Fatalf("%+v\n", errors.Errorf("FuncPointerSliceField not equal: from %v, to %v",
- (*value)(), (*to.FuncPointerSliceField[i])()))
- }
- }
- toStringSliceToStringSlice := strings.Split(to.FromStringSliceToStringPointerField, "::")
- for i, value := range from.FromStringSliceToStringPointerField {
- if *value != toStringSliceToStringSlice[i] {
- t.Fatalf("%+v\n", errors.Errorf("FromStringSliceToStringPointerField not equal: from %v, to %v",
- *value, toStringSliceToStringSlice[i]))
- }
- }
- for i, value := range from.FromTimeToStringPointerField {
- if value.Format(time.DateTime) != *to.FromTimeToStringPointerField[i] {
- t.Fatalf("%+v\n", errors.Errorf("FromTimeToStringPointerField not equal: from %v, to %v",
- value.Format(time.DateTime), *to.FromTimeToStringPointerField[i]))
- }
- }
- for i, value := range from.FromStringToTimePointerField {
- if *value != (*to.FromStringToTimePointerField[i]).Format(time.DateTime) {
- t.Fatalf("%+v\n", errors.Errorf("FromStringToTimePointerField not equal: from %v, to %v",
- *value, (*to.FromStringToTimePointerField[i]).Format(time.DateTime)))
- }
- }
- }
- func (to AssignTagToSlice) checkNil(t *testing.T) {
- if to.BasicField != "" {
- t.Fatalf("%+v\n", errors.Errorf("BasicField not zero"))
- }
- if to.BasicSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("BasicSliceField not nil"))
- }
- if to.TimeSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("TimeSliceField not nil"))
- }
- if to.StructSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("StructSliceField not nil"))
- }
- if to.MapSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("MapSliceField not nil"))
- }
- if to.ChanSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("ChanSliceField not nil"))
- }
- if to.FuncSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("FuncSliceField not nil"))
- }
- if to.FromStringSliceToStringField != "" {
- t.Fatalf("%+v\n", errors.Errorf("FromStringSliceToStringField not zero"))
- }
- if to.FromTimeToStringField != nil {
- t.Fatalf("%+v\n", errors.Errorf("FromTimeToStringField not nil"))
- }
- if to.FromStringToTimeField != nil {
- t.Fatalf("%+v\n", errors.Errorf("FromStringToTimeField not nil"))
- }
- if to.BasicPointerSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("BasicPointerSliceField not nil"))
- }
- if to.TimePointerSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("TimePointerSliceField not nil"))
- }
- if to.StructPointerSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("StructPointerSliceField not nil"))
- }
- if to.MapPointerSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("MapPointerSliceField not nil"))
- }
- if to.ChanPointerSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("ChanPointerSliceField not nil"))
- }
- if to.FuncPointerSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("FuncPointerSliceField not nil"))
- }
- if to.FromStringSliceToStringPointerField != "" {
- t.Fatalf("%+v\n", errors.Errorf("FromStringSliceToStringPointerField not zero"))
- }
- if to.FromTimeToStringPointerField != nil {
- t.Fatalf("%+v\n", errors.Errorf("FromTimeToStringPointerField not nil"))
- }
- if to.FromStringToTimePointerField != nil {
- t.Fatalf("%+v\n", errors.Errorf("FromStringToTimePointerField not nil"))
- }
- }
- type AssignTagToSlicePointerField struct {
- BasicField *string
- BasicSliceField *[]string
- TimeSliceField *[]time.Time
- StructSliceField *[]AssignTagTo
- MapSliceField *[]map[string]string
- ChanSliceField *[]chan any
- FuncSliceField *[]func() string
- FromStringSliceToStringField *string
- FromTimeToStringField *[]string
- FromStringToTimeField *[]time.Time
- BasicPointerSliceField *[]*string
- TimePointerSliceField *[]*time.Time
- StructPointerSliceField *[]*AssignTagTo
- MapPointerSliceField *[]*map[string]string
- ChanPointerSliceField *[]*chan any
- FuncPointerSliceField *[]*func() string
- FromStringSliceToStringPointerField *string
- FromTimeToStringPointerField *[]*string
- FromStringToTimePointerField *[]*time.Time
- }
- func (to AssignTagToSlicePointerField) checkFields(t *testing.T, from AssignTagFromSlice) {
- if from.BasicField != *to.BasicField {
- t.Fatalf("%+v\n", errors.Errorf("BasicField not equal: from %v, to %v",
- from.BasicField, *to.BasicField))
- }
- for i, value := range from.BasicSliceField {
- if value != (*to.BasicSliceField)[i] {
- t.Fatalf("%+v\n", errors.Errorf("BasicSliceField not equal: from %v, to %v",
- value, (*to.BasicSliceField)[i]))
- }
- }
- for i, value := range from.TimeSliceField {
- if !value.Equal((*to.TimeSliceField)[i]) {
- t.Fatalf("%+v\n", errors.Errorf("TimeSliceField not equal: from %v, to %v",
- value, (*to.TimeSliceField)[i]))
- }
- }
- for i, value := range from.StructSliceField {
- (*to.StructSliceField)[i].checkFields(t, value)
- }
- for i, value := range from.MapSliceField {
- for k, v := range value {
- if v != (*to.MapSliceField)[i][k] {
- t.Fatalf("%+v\n", errors.Errorf("MapSliceField not equal: from %v, to %v",
- value, (*to.MapSliceField)[i][k]))
- }
- }
- }
- for i, value := range from.ChanSliceField {
- if value != (*to.ChanSliceField)[i] {
- t.Fatalf("%+v\n", errors.Errorf("ChanSliceField not equal: from %v, to %v",
- value, (*to.ChanSliceField)[i]))
- }
- }
- for i, value := range from.FuncSliceField {
- if value() != (*to.FuncSliceField)[i]() {
- t.Fatalf("%+v\n", errors.Errorf("FuncSliceField not equal: from %v, to %v",
- value(), (*to.FuncSliceField)[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))
- }
- for i, value := range from.FromTimeToStringField {
- if value.Format(time.DateTime) != (*to.FromTimeToStringField)[i] {
- t.Fatalf("%+v\n", errors.Errorf("FromTimeToStringField not equal: from %v, to %v",
- value.Format(time.DateTime), (*to.FromTimeToStringField)[i]))
- }
- }
- for i, value := range from.FromStringToTimeField {
- if value != (*to.FromStringToTimeField)[i].Format(time.DateTime) {
- t.Fatalf("%+v\n", errors.Errorf("FromStringToTimeField not equal: from %v, to %v",
- value, (*to.FromStringToTimeField)[i].Format(time.DateTime)))
- }
- }
- for i, value := range from.BasicPointerSliceField {
- if *value != *(*to.BasicPointerSliceField)[i] {
- t.Fatalf("%+v\n", errors.Errorf("BasicPointerSliceField not equal: from %v, to %v",
- value, *(*to.BasicPointerSliceField)[i]))
- }
- }
- for i, value := range from.TimePointerSliceField {
- if !value.Equal(*(*to.TimePointerSliceField)[i]) {
- t.Fatalf("%+v\n", errors.Errorf("TimeSliceField not equal: from %v, to %v",
- value, *(*to.TimePointerSliceField)[i]))
- }
- }
- for i, value := range from.StructPointerSliceField {
- (*to.StructSliceField)[i].checkFields(t, *value)
- }
- for i, value := range from.MapPointerSliceField {
- for k, v := range *value {
- if v != (*(*to.MapPointerSliceField)[i])[k] {
- t.Fatalf("%+v\n", errors.Errorf("MapPointerSliceField not equal: from %v, to %v",
- value, (*(*to.MapPointerSliceField)[i])[k]))
- }
- }
- }
- for i, value := range from.ChanPointerSliceField {
- if value != (*to.ChanPointerSliceField)[i] {
- t.Fatalf("%+v\n", errors.Errorf("ChanPointerSliceField not equal: from %v, to %v",
- value, (*to.ChanPointerSliceField)[i]))
- }
- }
- for i, value := range from.FuncPointerSliceField {
- if (*value)() != (*(*to.FuncPointerSliceField)[i])() {
- t.Fatalf("%+v\n", errors.Errorf("FuncPointerSliceField not equal: from %v, to %v",
- (*value)(), (*(*to.FuncPointerSliceField)[i])()))
- }
- }
- toStringSliceToStringSlice := strings.Split(*to.FromStringSliceToStringPointerField, "::")
- for i, value := range from.FromStringSliceToStringPointerField {
- if *value != toStringSliceToStringSlice[i] {
- t.Fatalf("%+v\n", errors.Errorf("FromStringSliceToStringPointerField not equal: from %v, to %v",
- *value, toStringSliceToStringSlice[i]))
- }
- }
- for i, value := range from.FromTimeToStringPointerField {
- if value.Format(time.DateTime) != *(*to.FromTimeToStringPointerField)[i] {
- t.Fatalf("%+v\n", errors.Errorf("FromTimeToStringPointerField not equal: from %v, to %v",
- value.Format(time.DateTime), *(*to.FromTimeToStringPointerField)[i]))
- }
- }
- for i, value := range from.FromStringToTimePointerField {
- if *value != (*to.FromStringToTimePointerField)[i].Format(time.DateTime) {
- t.Fatalf("%+v\n", errors.Errorf("FromStringToTimePointerField not equal: from %v, to %v",
- *value, (*to.FromStringToTimePointerField)[i].Format(time.DateTime)))
- }
- }
- }
- func (to AssignTagToSlicePointerField) checkNil(t *testing.T) {
- if to.BasicField != nil {
- t.Fatalf("%+v\n", errors.Errorf("BasicField not nil"))
- }
- if to.BasicSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("BasicSliceField not nil"))
- }
- if to.TimeSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("TimeSliceField not nil"))
- }
- if to.StructSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("StructSliceField not nil"))
- }
- if to.MapSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("MapSliceField not nil"))
- }
- if to.ChanSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("ChanSliceField not nil"))
- }
- if to.FuncSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("FuncSliceField not nil"))
- }
- if to.FromStringSliceToStringField != nil {
- t.Fatalf("%+v\n", errors.Errorf("FromStringSliceToStringField not nil"))
- }
- if to.FromTimeToStringField != nil {
- t.Fatalf("%+v\n", errors.Errorf("FromTimeToStringField not nil"))
- }
- if to.FromStringToTimeField != nil {
- t.Fatalf("%+v\n", errors.Errorf("FromStringToTimeField not nil"))
- }
- if to.BasicPointerSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("BasicPointerSliceField not nil"))
- }
- if to.TimePointerSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("TimePointerSliceField not nil"))
- }
- if to.StructPointerSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("StructPointerSliceField not nil"))
- }
- if to.MapPointerSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("MapPointerSliceField not nil"))
- }
- if to.ChanPointerSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("ChanPointerSliceField not nil"))
- }
- if to.FuncPointerSliceField != nil {
- t.Fatalf("%+v\n", errors.Errorf("FuncPointerSliceField not nil"))
- }
- if to.FromStringSliceToStringPointerField != nil {
- t.Fatalf("%+v\n", errors.Errorf("FuncPointerSliceField not nil"))
- }
- if to.FromTimeToStringPointerField != nil {
- t.Fatalf("%+v\n", errors.Errorf("FromTimeToStringPointerField not nil"))
- }
- if to.FromStringToTimePointerField != nil {
- t.Fatalf("%+v\n", errors.Errorf("FromStringToTimePointerField not nil"))
- }
- }
- func TestAssignTagDefaultUsageSlice(t *testing.T) {
- retValue1 := strutils.SimpleUUID()
- retValue2 := strutils.SimpleUUID()
- str1 := strutils.SimpleUUID()
- str2 := strutils.SimpleUUID()
- time1 := time.Now()
- time2 := time.Now().Add(-1 * time.Hour)
- map1 := map[string]string{"name": strutils.SimpleUUID()}
- map2 := map[string]string{"name": strutils.SimpleUUID()}
- chan1 := make(chan any)
- chan2 := make(chan any)
- func1 := func() string { return retValue1 }
- func2 := func() string { return retValue2 }
- struct1 := AssignTagFrom{
- StringField: strutils.SimpleUUID(),
- BoolField: rand.Intn(2) == 0,
- IntField: rand.Int(),
- Int8Field: int8(rand.Int()),
- Int16Field: int16(rand.Int()),
- Int32Field: int32(rand.Int()),
- Int64Field: int64(rand.Int()),
- UintField: uint(rand.Int()),
- Uint8Field: uint8(rand.Int()),
- Uint16Field: uint16(rand.Int()),
- Uint32Field: uint32(rand.Int()),
- Uint64Field: uint64(rand.Int()),
- Float32Field: rand.Float32(),
- Float64Field: rand.Float64(),
- MapField: map[string]string{strutils.SimpleUUID(): strutils.SimpleUUID()},
- ChanField: make(chan any),
- FuncField: func() string { return retValue1 },
- StructField: struct{ ID string }{ID: strutils.SimpleUUID()},
- FromTimeToStringField: time.Now().Local(),
- FromTimeToTimeField: time.Now().Local(),
- FromStringToTimeField: time.Now().Local().Format(time.DateTime),
- }
- struct2 := AssignTagFrom{
- StringField: strutils.SimpleUUID(),
- BoolField: rand.Intn(2) == 0,
- IntField: rand.Int(),
- Int8Field: int8(rand.Int()),
- Int16Field: int16(rand.Int()),
- Int32Field: int32(rand.Int()),
- Int64Field: int64(rand.Int()),
- UintField: uint(rand.Int()),
- Uint8Field: uint8(rand.Int()),
- Uint16Field: uint16(rand.Int()),
- Uint32Field: uint32(rand.Int()),
- Uint64Field: uint64(rand.Int()),
- Float32Field: rand.Float32(),
- Float64Field: rand.Float64(),
- MapField: map[string]string{strutils.SimpleUUID(): strutils.SimpleUUID()},
- ChanField: make(chan any),
- FuncField: func() string { return retValue1 },
- StructField: struct{ ID string }{ID: strutils.SimpleUUID()},
- FromTimeToStringField: time.Now().Local(),
- FromTimeToTimeField: time.Now().Local(),
- FromStringToTimeField: time.Now().Local().Format(time.DateTime),
- }
- basicField := str1
- basicSliceField := []string{str1, str2}
- timeSliceField := []time.Time{time1, time2}
- structSliceField := []AssignTagFrom{struct1, struct2}
- mapSliceField := []map[string]string{map1, map2}
- chanSliceField := []chan any{chan1, chan2}
- funcSliceField := []func() string{func1, func2}
- basicPointerSliceField := []*string{&str1, &str2}
- timePointerSliceField := []*time.Time{&time1, &time2}
- structPointerSliceField := []*AssignTagFrom{&struct1, &struct2}
- mapPointerSliceField := []*map[string]string{&map1, &map2}
- chanPointerSliceField := []*chan any{&chan1, &chan2}
- funcPointerSliceField := []*func() string{&func1, &func2}
- fromStringSliceToStringField := []string{str1, str2}
- fromTimeToStringField := []time.Time{time1, time2}
- fromStringToTimeField := []string{time1.Format(time.DateTime), time2.Format(time.DateTime)}
- fromStringSliceToStringPointerField := []*string{&str1, &str2}
- fromTimeToStringPointerField := []*time.Time{&time1, &time2}
- from := AssignTagFromSlice{
- BasicField: basicField,
- BasicSliceField: basicSliceField,
- TimeSliceField: timeSliceField,
- StructSliceField: structSliceField,
- MapSliceField: mapSliceField,
- ChanSliceField: chanSliceField,
- FuncSliceField: funcSliceField,
- FromStringSliceToStringField: fromStringSliceToStringField,
- FromTimeToStringField: fromTimeToStringField,
- FromStringToTimeField: fromStringToTimeField,
- BasicPointerSliceField: basicPointerSliceField,
- TimePointerSliceField: timePointerSliceField,
- StructPointerSliceField: structPointerSliceField,
- MapPointerSliceField: mapPointerSliceField,
- ChanPointerSliceField: chanPointerSliceField,
- FuncPointerSliceField: funcPointerSliceField,
- FromStringSliceToStringPointerField: fromStringSliceToStringPointerField,
- FromTimeToStringPointerField: fromTimeToStringPointerField,
- }
- fromPointer := AssignTagFromSlicePointerField{
- BasicField: &basicField,
- BasicSliceField: &basicSliceField,
- TimeSliceField: &timeSliceField,
- StructSliceField: &structSliceField,
- MapSliceField: &mapSliceField,
- ChanSliceField: &chanSliceField,
- FuncSliceField: &funcSliceField,
- FromStringSliceToStringField: &fromStringSliceToStringField,
- FromTimeToStringField: &fromTimeToStringField,
- FromStringToTimeField: &fromStringToTimeField,
- BasicPointerSliceField: &basicPointerSliceField,
- TimePointerSliceField: &timePointerSliceField,
- StructPointerSliceField: &structPointerSliceField,
- MapPointerSliceField: &mapPointerSliceField,
- ChanPointerSliceField: &chanPointerSliceField,
- FuncPointerSliceField: &funcPointerSliceField,
- FromStringSliceToStringPointerField: &fromStringSliceToStringPointerField,
- FromTimeToStringPointerField: &fromTimeToStringPointerField,
- }
- fromPointerNil := AssignTagFromPointerField{}
- to := AssignTagToSlice{}
- toPointer := AssignTagToSlicePointerField{}
- err := assign.DefaultUsage(from, to)
- if err == nil || err.Error() != "返回类型不是结构指针" {
- t.Fatalf("%+v\n", errors.Errorf("没有检测出to参数必须是指针类型"))
- }
- err = assign.DefaultUsage(from, toPointer)
- if err == nil || err.Error() != "返回类型不是结构指针" {
- t.Fatalf("%+v\n", errors.Errorf("没有检测出to参数必须是指针类型"))
- }
- err = assign.DefaultUsage(fromPointer, to)
- if err == nil || err.Error() != "返回类型不是结构指针" {
- t.Fatalf("%+v\n", errors.Errorf("没有检测出to参数必须是指针类型"))
- }
- err = assign.DefaultUsage(fromPointer, toPointer)
- if err == nil || err.Error() != "返回类型不是结构指针" {
- t.Fatalf("%+v\n", errors.Errorf("没有检测出to参数必须是指针类型"))
- }
- err = assign.DefaultUsage(from, &to)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- to.checkFields(t, from)
- to = AssignTagToSlice{}
- toPointer = AssignTagToSlicePointerField{}
- err = assign.DefaultUsage(from, &toPointer)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- toPointer.checkFields(t, from)
- to = AssignTagToSlice{}
- toPointer = AssignTagToSlicePointerField{}
- err = assign.DefaultUsage(fromPointer, &to)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- to.checkFields(t, from)
- to = AssignTagToSlice{}
- toPointer = AssignTagToSlicePointerField{}
- err = assign.DefaultUsage(fromPointer, &toPointer)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- toPointer.checkFields(t, from)
- to = AssignTagToSlice{}
- toPointer = AssignTagToSlicePointerField{}
- err = assign.DefaultUsage(&from, to)
- if err == nil || err.Error() != "返回类型不是结构指针" {
- t.Fatalf("%+v\n", errors.Errorf("没有检测出to参数必须是指针类型"))
- }
- err = assign.DefaultUsage(&from, toPointer)
- if err == nil || err.Error() != "返回类型不是结构指针" {
- t.Fatalf("%+v\n", errors.Errorf("没有检测出to参数必须是指针类型"))
- }
- err = assign.DefaultUsage(&fromPointer, to)
- if err == nil || err.Error() != "返回类型不是结构指针" {
- t.Fatalf("%+v\n", errors.Errorf("没有检测出to参数必须是指针类型"))
- }
- err = assign.DefaultUsage(&fromPointer, toPointer)
- if err == nil || err.Error() != "返回类型不是结构指针" {
- t.Fatalf("%+v\n", errors.Errorf("没有检测出to参数必须是指针类型"))
- }
- to = AssignTagToSlice{}
- toPointer = AssignTagToSlicePointerField{}
- err = assign.DefaultUsage(&from, &to)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- to.checkFields(t, from)
- to = AssignTagToSlice{}
- toPointer = AssignTagToSlicePointerField{}
- err = assign.DefaultUsage(&from, &toPointer)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- toPointer.checkFields(t, from)
- to = AssignTagToSlice{}
- toPointer = AssignTagToSlicePointerField{}
- err = assign.DefaultUsage(&fromPointer, &to)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- to.checkFields(t, from)
- to = AssignTagToSlice{}
- toPointer = AssignTagToSlicePointerField{}
- err = assign.DefaultUsage(&fromPointer, &toPointer)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- toPointer.checkFields(t, from)
- to = AssignTagToSlice{}
- toPointer = AssignTagToSlicePointerField{}
- err = assign.DefaultUsage(fromPointerNil, &to)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- to.checkNil(t)
- to = AssignTagToSlice{}
- toPointer = AssignTagToSlicePointerField{}
- err = assign.DefaultUsage(fromPointerNil, &toPointer)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- toPointer.checkNil(t)
- to = AssignTagToSlice{}
- toPointer = AssignTagToSlicePointerField{}
- err = assign.DefaultUsage(&fromPointerNil, &to)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- to.checkNil(t)
- to = AssignTagToSlice{}
- toPointer = AssignTagToSlicePointerField{}
- err = assign.DefaultUsage(&fromPointerNil, &toPointer)
- if err != nil {
- t.Fatalf("%+v\n", err)
- }
- toPointer.checkNil(t)
- }
|