add some test cases
This commit is contained in:
parent
9c081d1648
commit
92b12f29a7
|
@ -22,6 +22,7 @@ var (
|
||||||
tpTableName = reflect.TypeOf((*TableName)(nil)).Elem()
|
tpTableName = reflect.TypeOf((*TableName)(nil)).Elem()
|
||||||
tpTableComment = reflect.TypeOf((*TableComment)(nil)).Elem()
|
tpTableComment = reflect.TypeOf((*TableComment)(nil)).Elem()
|
||||||
tvCache sync.Map
|
tvCache sync.Map
|
||||||
|
tcCache sync.Map
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetTableName returns table name
|
// GetTableName returns table name
|
||||||
|
@ -67,5 +68,33 @@ func GetTableComment(v reflect.Value) string {
|
||||||
return v.Interface().(TableComment).TableComment()
|
return v.Interface().(TableComment).TableComment()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if v.Kind() == reflect.Ptr {//如果是指针
|
||||||
|
v = v.Elem()
|
||||||
|
if v.Type().Implements(tpTableComment) {
|
||||||
|
return v.Interface().(TableComment).TableComment()
|
||||||
|
}
|
||||||
|
} else if v.CanAddr() {//如果可以用地址访问
|
||||||
|
v1 := v.Addr()
|
||||||
|
if v1.Type().Implements(tpTableComment) {
|
||||||
|
return v1.Interface().(TableComment).TableComment()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
comment, ok := tcCache.Load(v.Type())
|
||||||
|
if ok {
|
||||||
|
if comment.(string) != "" {
|
||||||
|
return comment.(string)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
v2 := reflect.New(v.Type())
|
||||||
|
if v2.Type().Implements(tpTableComment) {
|
||||||
|
tableComment := v2.Interface().(TableComment).TableComment()
|
||||||
|
tcCache.Store(v.Type(), tableComment)
|
||||||
|
return tableComment
|
||||||
|
}
|
||||||
|
|
||||||
|
tcCache.Store(v.Type(), "")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,10 +26,21 @@ func (p ParseTableName2) TableName() string {
|
||||||
return "p_parseTableName"
|
return "p_parseTableName"
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p ParseTableName2) TableComment() string {
|
type ParseTableComment struct{}
|
||||||
return "p2_testTableComment"
|
|
||||||
|
type ParseTableComment1 struct{}
|
||||||
|
|
||||||
|
type ParseTableComment2 struct{}
|
||||||
|
|
||||||
|
func (p ParseTableComment1) TableComment() string {
|
||||||
|
return "p_parseTableComment1"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *ParseTableComment2) TableComment() string {
|
||||||
|
return "p_parseTableComment2"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
func TestParseTableName(t *testing.T) {
|
func TestParseTableName(t *testing.T) {
|
||||||
parser := NewParser(
|
parser := NewParser(
|
||||||
"xorm",
|
"xorm",
|
||||||
|
@ -59,17 +70,30 @@ func TestParseTableComment(t *testing.T) {
|
||||||
names.SnakeMapper{},
|
names.SnakeMapper{},
|
||||||
caches.NewManager(),
|
caches.NewManager(),
|
||||||
)
|
)
|
||||||
table, err := parser.Parse(reflect.ValueOf(new(ParseTableName1)))
|
|
||||||
|
table, err := parser.Parse(reflect.ValueOf(new(ParseTableComment)))
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, "", table.Name)
|
||||||
|
|
||||||
|
table, err = parser.Parse(reflect.ValueOf(new(ParseTableName1)))
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.EqualValues(t, "", table.Comment)
|
assert.EqualValues(t, "", table.Comment)
|
||||||
|
|
||||||
table, err = parser.Parse(reflect.ValueOf(new(ParseTableName2)))
|
table, err = parser.Parse(reflect.ValueOf(new(ParseTableComment1)))
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.EqualValues(t, "p2_testTableComment", table.Comment)
|
assert.EqualValues(t, "p_parseTableComment1", table.Comment)
|
||||||
|
|
||||||
table, err = parser.Parse(reflect.ValueOf(ParseTableName2{}))
|
table, err = parser.Parse(reflect.ValueOf(ParseTableComment1{}))
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.EqualValues(t, "p2_testTableComment", table.Comment)
|
assert.EqualValues(t, "p_parseTableComment1", table.Comment)
|
||||||
|
|
||||||
|
table, err = parser.Parse(reflect.ValueOf(new(ParseTableComment2)))
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, "p_parseTableComment2", table.Comment)
|
||||||
|
|
||||||
|
table, err = parser.Parse(reflect.ValueOf(ParseTableComment2{}))
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, "p_parseTableComment2", table.Comment)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUnexportField(t *testing.T) {
|
func TestUnexportField(t *testing.T) {
|
||||||
|
|
Loading…
Reference in New Issue