JCS-pub/common/pkgs/distlock/lockprovider/lock_compatibility_table_te...

42 lines
911 B
Go

package lockprovider
import (
"testing"
. "github.com/smartystreets/goconvey/convey"
"gitlink.org.cn/cloudream/jcs-pub/common/pkgs/distlock/types"
)
func Test_LockCompatibilityTable(t *testing.T) {
Convey("兼容,互斥,特殊比较", t, func() {
table := LockCompatibilityTable{}
table.
Column("l1", func() bool { return true }).
Column("l2", func() bool { return true }).
Column("l3", func() bool { return false })
comp := LockCompatible()
uncp := LockUncompatible()
spcl := LockSpecial(func(lock types.Lock, testLockName string) bool { return true })
table.Row(comp, comp, comp)
table.Row(comp, uncp, comp)
table.Row(comp, comp, spcl)
err := table.Test(types.Lock{
Name: "l1",
})
So(err, ShouldBeNil)
err = table.Test(types.Lock{
Name: "l2",
})
So(err, ShouldNotBeNil)
err = table.Test(types.Lock{
Name: "l3",
})
So(err, ShouldBeNil)
})
}