From 6e15c1bbb793a1ac31164e1a3a51912c909a42bd Mon Sep 17 00:00:00 2001
From: ruyu <bicijinlian@163.com>
Date: Sat, 30 Jun 2018 23:56:09 +0800
Subject: [PATCH] =?UTF-8?q?RedisListStudyTest=20=E5=AE=8C=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 RedisStudyTest/RedisListStudyTest.cs | 91 +++++++++++++++++++++++++++-
 1 file changed, 90 insertions(+), 1 deletion(-)

diff --git a/RedisStudyTest/RedisListStudyTest.cs b/RedisStudyTest/RedisListStudyTest.cs
index 1d9c18f..6433948 100644
--- a/RedisStudyTest/RedisListStudyTest.cs
+++ b/RedisStudyTest/RedisListStudyTest.cs
@@ -67,8 +67,13 @@ namespace RedisStudyTest
                 "secnd",
                 "third"
             };
+
             var listLenth = redisListStudy.ListLeftPush(defaultRedisKey, listValues);
             Assert.Equal(3, listLenth);
+
+            Assert.Equal(listValues[2], redisListStudy.ListGetByIndex(defaultRedisKey, 0));
+            Assert.Equal(listValues[1], redisListStudy.ListGetByIndex(defaultRedisKey, 1));
+            Assert.Equal(listValues[0], redisListStudy.ListGetByIndex(defaultRedisKey, 2));
         }
         #endregion
 
@@ -178,7 +183,7 @@ namespace RedisStudyTest
 
         #region ListSetByIndex
         [Fact]
-        public void ListGetByIndexNotKeyTest()
+        public void ListSetByIndexNotKeyTest()
         {
             Assert.Throws<RedisServerException>(() => redisListStudy.ListSetByIndex(defaultRedisKey, 0, "first"));
         }
@@ -196,6 +201,31 @@ namespace RedisStudyTest
         }
         #endregion
 
+        #region ListGetByIndex
+
+        [Fact]
+        public void ListGetByIndexNotKeyTest()
+        {
+            var result = redisListStudy.ListGetByIndex(defaultRedisKey, 0);
+            Assert.False(result.HasValue);
+        }
+
+        [Fact]
+        public void Test()
+        {
+            redisListStudy.ListLeftPush(defaultRedisKey, new RedisValue[] { "first", "second", "third" });
+
+            var result = redisListStudy.ListGetByIndex(defaultRedisKey, 0);
+            Assert.Equal("third", result);
+
+            result = redisListStudy.ListGetByIndex(defaultRedisKey, 1);
+            Assert.Equal("second", result);
+
+            result = redisListStudy.ListGetByIndex(defaultRedisKey, 2);
+            Assert.Equal("first", result);
+        }
+        #endregion
+
         #region ListLength
         [Fact]
         public void ListLengthNotKeyTest()
@@ -304,6 +334,65 @@ namespace RedisStudyTest
         }
         #endregion
 
+        #region ListRightPopLeftPush
+
+        [Fact]
+        public void ListRightPopLeftPushNotKeyTest()
+        {
+            //操作
+            var firsValue = redisListStudy.ListRightPopLeftPush(defaultRedisKey, "RedisStudy:List:xUnitTest2");
+
+            //断言
+            Assert.False(firsValue.HasValue);
+            Assert.False(redisDatabase.KeyExists("RedisStudy:List:xUnitTest2"));
+
+            //清理
+            redisDatabase.KeyDelete("RedisStudy:List:xUnitTest");
+        }
+
+        /// <summary>
+        /// 目标list不存在
+        /// </summary>
+        [Fact]
+        public void ListRightPopLeftPushNotDestinationTest()
+        {
+            //准备
+            redisListStudy.ListLeftPush(defaultRedisKey, new RedisValue[] { "first", "second" });
+
+            //操作
+            var firsValue = redisListStudy.ListRightPopLeftPush(defaultRedisKey, "RedisStudy:List:xUnitTest2");
+
+            //断言
+            Assert.Equal(1, redisListStudy.ListLength(defaultRedisKey));
+            Assert.Equal("first",firsValue);
+            Assert.True(redisDatabase.KeyExists("RedisStudy:List:xUnitTest2"));
+
+            //清理
+            redisDatabase.KeyDelete("RedisStudy:List:xUnitTest");
+        }
+
+        [Fact]
+        public void ListRightPopLeftPushTest()
+        {
+            //准备
+            string secondListKey = "RedisStudy:List:xUnitTest2";
+            redisListStudy.ListLeftPush(defaultRedisKey, new RedisValue[] { "first", "second" });
+
+            redisListStudy.ListLeftPush(secondListKey, new RedisValue[] {});
+
+            //操作
+            var resultValue = redisListStudy.ListRightPopLeftPush(defaultRedisKey, secondListKey);
+
+            //断言
+            Assert.Equal("first", resultValue);
+            Assert.Equal(1, redisListStudy.ListLength(defaultRedisKey));
+            Assert.True(redisDatabase.KeyExists(secondListKey));
+
+            //清理
+            redisDatabase.KeyDelete(secondListKey);
+        }
+        #endregion
+
         #region 清理
         public void Dispose()
         {