github.com/aavshr/aws-sdk-go@v1.41.3/service/dynamodb/dynamodbattribute/tag_test.go (about) 1 package dynamodbattribute 2 3 import ( 4 "reflect" 5 "testing" 6 ) 7 8 func TestTagParse(t *testing.T) { 9 cases := []struct { 10 in reflect.StructTag 11 json, av bool 12 expect tag 13 }{ 14 {`json:""`, true, false, tag{}}, 15 {`json:"name"`, true, false, tag{Name: "name"}}, 16 {`json:"name,omitempty"`, true, false, tag{Name: "name", OmitEmpty: true}}, 17 {`json:"-"`, true, false, tag{Ignore: true}}, 18 {`json:",omitempty"`, true, false, tag{OmitEmpty: true}}, 19 {`json:",string"`, true, false, tag{AsString: true}}, 20 {`dynamodbav:""`, false, true, tag{}}, 21 {`dynamodbav:","`, false, true, tag{}}, 22 {`dynamodbav:"name"`, false, true, tag{Name: "name"}}, 23 {`dynamodbav:"name"`, false, true, tag{Name: "name"}}, 24 {`dynamodbav:"-"`, false, true, tag{Ignore: true}}, 25 {`dynamodbav:",omitempty"`, false, true, tag{OmitEmpty: true}}, 26 {`dynamodbav:",omitemptyelem"`, false, true, tag{OmitEmptyElem: true}}, 27 {`dynamodbav:",string"`, false, true, tag{AsString: true}}, 28 {`dynamodbav:",binaryset"`, false, true, tag{AsBinSet: true}}, 29 {`dynamodbav:",numberset"`, false, true, tag{AsNumSet: true}}, 30 {`dynamodbav:",stringset"`, false, true, tag{AsStrSet: true}}, 31 {`dynamodbav:",stringset,omitemptyelem"`, false, true, tag{AsStrSet: true, OmitEmptyElem: true}}, 32 {`dynamodbav:"name,stringset,omitemptyelem"`, false, true, tag{Name: "name", AsStrSet: true, OmitEmptyElem: true}}, 33 } 34 35 for i, c := range cases { 36 actual := tag{} 37 if c.json { 38 actual.parseStructTag("json", c.in) 39 } 40 if c.av { 41 actual.parseAVTag(c.in) 42 } 43 if e, a := c.expect, actual; !reflect.DeepEqual(e, a) { 44 t.Errorf("case %d, expect %v, got %v", i, e, a) 45 } 46 } 47 }