Пример #1
0
        public void SetTest()
        {
            IMemberPointRepository repo = new RedisMemberPointRepository(redis, 3);

            var result = repo.SetAdd(new MemberPoint
            {
                MemberId = 100000,
                Point    = 10000
            });

            Assert.IsNull(result.Item1);
            Assert.AreNotEqual(result.Item2, -1);

            result = repo.SetAdd(new MemberPoint
            {
                MemberId = 100000,
                Point    = 10001
            });

            Assert.IsNull(result.Item1);
            Assert.AreNotEqual(result.Item2, -1);

            result = repo.SetAdd(new MemberPoint
            {
                MemberId = 100000,
                Point    = 10002
            });

            Assert.IsNull(result.Item1);
            Assert.AreNotEqual(result.Item2, -1);

            result = repo.SetAdd(new MemberPoint
            {
                MemberId = 100000,
                Point    = 10002
            });

            Assert.IsNull(result.Item1);
            Assert.AreNotEqual(result.Item2, -1);

            var setResult = repo.SetAdd(new List <MemberPoint>
            {
                new MemberPoint {
                    MemberId = 100001, Point = 10001
                },
                new MemberPoint {
                    MemberId = 100001, Point = 10002
                },
                new MemberPoint {
                    MemberId = 100001, Point = 10007
                },
            });

            Assert.IsNull(setResult.Item1);
            Assert.AreNotEqual(setResult.Item2, -1);

            var setCombineIntersect = repo.SetCombineIntersect(100000, 100001);

            Assert.IsNull(setCombineIntersect.Item1);
            Assert.IsNotNull(setCombineIntersect.Item2);

            var setCombineUnion = repo.SetCombineUnion(100000, 100001);

            Assert.IsNull(setCombineUnion.Item1);
            Assert.IsNotNull(setCombineUnion.Item2);

            var setCombineDifference = repo.SetCombineDifference(100000, 100001);

            Assert.IsNull(setCombineDifference.Item1);
            Assert.IsNotNull(setCombineDifference.Item2);

            setCombineDifference = repo.SetCombineDifference(100001, 100000);

            Assert.IsNull(setCombineDifference.Item1);
            Assert.IsNotNull(setCombineDifference.Item2);

            setResult = repo.SetAdd(new List <MemberPoint>
            {
                new MemberPoint {
                    MemberId = 100002, Point = 10001
                },
                new MemberPoint {
                    MemberId = 100002, Point = 10007
                },
                new MemberPoint {
                    MemberId = 100002, Point = 10009
                },
            });

            Assert.IsNull(setResult.Item1);
            Assert.AreNotEqual(setResult.Item2, -1);


            setCombineIntersect = repo.SetCombineIntersect(new int[] { 100000, 100001, 100002 });

            Assert.IsNull(setCombineIntersect.Item1);
            Assert.IsNotNull(setCombineIntersect.Item2);

            setCombineUnion = repo.SetCombineUnion(new int[] { 100000, 100001, 100002 });

            Assert.IsNull(setCombineUnion.Item1);
            Assert.IsNotNull(setCombineUnion.Item2);

            setCombineDifference = repo.SetCombineDifference(new int[] { 100000, 100001, 100002 });

            Assert.IsNull(setCombineDifference.Item1);
            Assert.IsNotNull(setCombineDifference.Item2);

            setCombineDifference = repo.SetCombineDifference(new int[] { 100001, 100002, 100000 });

            Assert.IsNull(setCombineDifference.Item1);
            Assert.IsNotNull(setCombineDifference.Item2);

            setCombineDifference = repo.SetCombineDifference(new int[] { 100002, 100000, 100001 });

            Assert.IsNull(setCombineDifference.Item1);
            Assert.IsNotNull(setCombineDifference.Item2);

            //var setCombineIntersectAndStore = repo.SetCombineIntersectAndStore(100000, 100001);

            //Assert.IsNull(setCombineIntersectAndStore.Item1);
            //Assert.IsNotNull(setCombineIntersectAndStore.Item2);

            //var setCombineUnionAndStore = repo.SetCombineUnionAndStore(100000, 100001);

            //Assert.IsNull(setCombineUnionAndStore.Item1);
            //Assert.IsNotNull(setCombineUnionAndStore.Item2);

            //var setCombineDifferenceAndStore = repo.SetCombineDifferenceAndStore(100000, 100001);

            //Assert.IsNull(setCombineDifferenceAndStore.Item1);
            //Assert.IsNotNull(setCombineDifferenceAndStore.Item2);

            //setCombineDifferenceAndStore = repo.SetCombineDifferenceAndStore(100001, 100000);

            //Assert.IsNull(setCombineDifferenceAndStore.Item1);
            //Assert.IsNotNull(setCombineDifferenceAndStore.Item2);

            //var setCombineIntersectAndStore = repo.SetCombineIntersectAndStore(new int[] { 100000, 100001, 100002 });

            //Assert.IsNull(setCombineIntersectAndStore.Item1);
            //Assert.IsNotNull(setCombineIntersectAndStore.Item2);

            //var setCombineUnionAndStore = repo.SetCombineUnionAndStore(new int[] { 100000, 100001, 100002 });

            //Assert.IsNull(setCombineUnionAndStore.Item1);
            //Assert.IsNotNull(setCombineUnionAndStore.Item2);

            //var setCombineDifferenceAndStore = repo.SetCombineDifferenceAndStore(new int[] { 100000, 100001, 100002 });

            //Assert.IsNull(setCombineDifferenceAndStore.Item1);
            //Assert.IsNotNull(setCombineDifferenceAndStore.Item2);

            //setCombineDifferenceAndStore = repo.SetCombineDifferenceAndStore(new int[] { 100001, 100002, 100000 });

            //Assert.IsNull(setCombineDifferenceAndStore.Item1);
            //Assert.IsNotNull(setCombineDifferenceAndStore.Item2);

            //setCombineDifferenceAndStore = repo.SetCombineDifferenceAndStore(new int[] { 100002, 100000, 100001 });

            //Assert.IsNull(setCombineDifferenceAndStore.Item1);
            //Assert.IsNotNull(setCombineDifferenceAndStore.Item2);

            //var containResult = repo.SetContains(new MemberPoint { MemberId = 100002, Point = 10001 });

            //Assert.IsNull(containResult.Item1);
            //Assert.IsTrue(containResult.Item2);

            //containResult = repo.SetContains(new MemberPoint { MemberId = 100002, Point = 11001 });

            //Assert.IsNull(containResult.Item1);
            //Assert.IsFalse(containResult.Item2);

            var setMembers = repo.SetGetMembers(100002);

            Assert.IsNull(setMembers.Item1);
            Assert.IsNotNull(setMembers.Item2);


            var setMove = repo.SetMove(100001, 100002, 10002);

            Assert.IsNull(setMove.Item1);
            Assert.IsNotNull(setMove.Item2);

            var setPop = repo.SetPop(100002);

            Assert.IsNull(setPop.Item1);
            Assert.IsNotNull(setPop.Item2);

            var setRandomMember = repo.SetGetRandomMember(100002);

            Assert.IsNull(setRandomMember.Item1);
            Assert.IsNotNull(setRandomMember.Item2);

            var setGetRandomMember = repo.SetGetRandomMember(100002, 2);

            Assert.IsNull(setGetRandomMember.Item1);
            Assert.IsNotNull(setGetRandomMember.Item2);

            var setRemove = repo.SetRemove(new MemberPoint {
                MemberId = 100001, Point = 10001
            });

            Assert.IsNull(setRemove.Item1);
            Assert.IsNotNull(setRemove.Item2);

            var setRemoves = repo.SetRemove(new List <MemberPoint>
            {
                new MemberPoint {
                    MemberId = 100002, Point = 10001
                },
                new MemberPoint {
                    MemberId = 100002, Point = 10007
                },
                new MemberPoint {
                    MemberId = 100002, Point = 10009
                },
            });

            Assert.IsNull(setRemoves.Item1);
            Assert.IsNotNull(setRemoves.Item2);

            // 怪怪的:沒有依照pageSize返回相對應數量的資料
            var setScan = repo.SetScan(new MemberPoint {
                MemberId = 100000, Point = 1000
            }, 1);

            Assert.IsNull(setScan.Item1);
            Assert.IsNotNull(setScan.Item2);

            setScan = repo.SetScan(new MemberPoint {
                MemberId = 100000, Point = 1000
            }, 2, 0);

            Assert.IsNull(setScan.Item1);
            Assert.IsNotNull(setScan.Item2);
        }