|
- package lockprovider
-
- import (
- "testing"
-
- . "github.com/smartystreets/goconvey/convey"
- )
-
- func Test_StringLockTarget(t *testing.T) {
- cases := []struct {
- title string
- target1 *StringLockTarget
- target2 *StringLockTarget
- wantIsConflict bool
- }{
- {
- title: "没有任何段算冲突",
- target1: NewStringLockTarget(),
- target2: NewStringLockTarget(),
- wantIsConflict: true,
- },
- {
- title: "有段,但段内为空,算冲突",
- target1: NewStringLockTarget().Add(),
- target2: NewStringLockTarget().Add(),
- wantIsConflict: true,
- },
- {
- title: "每一段不同才不冲突",
- target1: NewStringLockTarget().Add("a").Add("b"),
- target2: NewStringLockTarget().Add("b").Add("c"),
- wantIsConflict: false,
- },
- {
- title: "只要有一段相同就冲突",
- target1: NewStringLockTarget().Add("a").Add("b"),
- target2: NewStringLockTarget().Add("a").Add("c"),
- wantIsConflict: true,
- },
- {
- title: "同段内,只要有一个数据不同就不冲突",
- target1: NewStringLockTarget().Add("a", "b"),
- target2: NewStringLockTarget().Add("b", "b"),
- wantIsConflict: false,
- },
- {
- title: "同段内,只要每个数据都相同才不冲突",
- target1: NewStringLockTarget().Add("a", "b"),
- target2: NewStringLockTarget().Add("a", "b"),
- wantIsConflict: true,
- },
- }
-
- for _, ca := range cases {
- Convey(ca.title, t, func() {
- ret := ca.target1.IsConflict(ca.target2)
- So(ret, ShouldEqual, ca.wantIsConflict)
- })
- }
- }
|