mirror of
https://github.com/astaxie/beego.git
synced 2024-11-23 19:40:54 +00:00
添加Condition单元测试
This commit is contained in:
parent
8f3fd317da
commit
647e21b0c4
@ -2668,3 +2668,45 @@ func TestPSQueryBuilder(t *testing.T) {
|
|||||||
throwFailNow(t, AssertIs(l[0].UserName, "astaxie"))
|
throwFailNow(t, AssertIs(l[0].UserName, "astaxie"))
|
||||||
throwFailNow(t, AssertIs(l[0].Age, 30))
|
throwFailNow(t, AssertIs(l[0].Age, 30))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCondition(t *testing.T) {
|
||||||
|
// test Condition whether to include yourself
|
||||||
|
cond := NewCondition()
|
||||||
|
cond = cond.AndCond(cond.Or("id", 1))
|
||||||
|
cond = cond.AndCond(cond.Or("id", 2))
|
||||||
|
cond = cond.AndCond(cond.Or("id", 3))
|
||||||
|
cond = cond.AndCond(cond.Or("id", 4))
|
||||||
|
|
||||||
|
cycleFlag := false
|
||||||
|
var hasCycle func(*Condition)
|
||||||
|
hasCycle = func(c *Condition) {
|
||||||
|
if nil == c || cycleFlag {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
condPointMap := make(map[string]bool)
|
||||||
|
condPointMap[fmt.Sprintf("%p", c)] = true
|
||||||
|
for _, p := range c.params {
|
||||||
|
if p.isCond {
|
||||||
|
adr := fmt.Sprintf("%p", p.cond)
|
||||||
|
if condPointMap[adr] {
|
||||||
|
// self as sub cond was cycle
|
||||||
|
cycleFlag = true
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
condPointMap[adr] = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, p := range c.params {
|
||||||
|
if p.isCond {
|
||||||
|
// check next cond
|
||||||
|
hasCycle(p.cond)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
hasCycle(cond)
|
||||||
|
// cycleFlag was true,meaning use self as sub cond
|
||||||
|
throwFail(t, AssertIs(!cycleFlag, true))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user