using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using StackExchange.Redis; using Xunit; using Xunit.Extensions; using Xunit.Serialization; using Xunit.Abstractions; using Xunit.Sdk; using RedisStudyModel; using RedisStuy; namespace RedisStudyTest { [Trait("RedisString", "All")] public class RedisListStudyTest : IDisposable { #region 初始化 private readonly ITestOutputHelper testOutput; private IDatabase redisDatabase = null; private RedisListStudy redisListStudy = null; private TimeSpan defaultExpiry = TimeSpan.FromSeconds(20); private string defaultRedisKey = "RedisStudy:List:xUnitTest"; /// /// 构造 /// public RedisListStudyTest(ITestOutputHelper output) { this.testOutput = output; redisDatabase = RedisHelper.GetRedisDatabase(); redisListStudy = new RedisListStudy(); } #endregion #region ListLeftPush [Fact] public void ListLeftPushTest() { var listLength = redisListStudy.ListLeftPush(defaultRedisKey, "first"); Assert.Equal(1, listLength); listLength = redisListStudy.ListLeftPush(defaultRedisKey, "second"); Assert.Equal(2, listLength); var second = redisListStudy.ListLeftPop(defaultRedisKey); Assert.Equal("second", second); var first = redisListStudy.ListLeftPop(defaultRedisKey); Assert.Equal("first", first); } #endregion #region ListRightPush [Fact] public void ListRightPushTest() { var listLength = redisListStudy.ListRightPush(defaultRedisKey, "first"); Assert.Equal(1, listLength); listLength = redisListStudy.ListRightPush(defaultRedisKey, "second"); Assert.Equal(2, listLength); var second = redisListStudy.ListRightPop(defaultRedisKey); Assert.Equal("second", second); var first = redisListStudy.ListRightPop(defaultRedisKey); Assert.Equal("first", first); } #endregion #region ListInsertBefore /// /// Key不存在时,不执行操作,返回0 /// [Fact] public void ListInsertBeforeNotKeyTest() { var listLenth = redisListStudy.ListInsertBefore(defaultRedisKey, "first", "firstBefore"); Assert.Equal(0, listLenth); } /// /// 未找到指定参照值时,返回 -1 /// [Fact] public void ListInsertBeforeNotPivotTest() { redisListStudy.ListLeftPush(defaultRedisKey, "second"); var listLenth = redisListStudy.ListInsertBefore(defaultRedisKey, "first", "firstBefore"); Assert.Equal(-1, listLenth); } [Fact] public void ListInsertBeforeTest() { redisListStudy.ListLeftPush(defaultRedisKey, "third"); var listLenth = redisListStudy.ListInsertBefore(defaultRedisKey, "third", "second"); Assert.Equal(2, listLenth); listLenth = redisListStudy.ListInsertBefore(defaultRedisKey, "second", "first"); Assert.Equal(3, listLenth); } #endregion #region ListInsertAfter /// /// Key不存在时,不执行操作,返回0 /// [Fact] public void ListInsertAfterNotKeyTest() { var listLenth = redisListStudy.ListInsertAfter(defaultRedisKey, "first", "firstAfter"); Assert.Equal(0, listLenth); } /// /// 未找到指定参照值时,返回 -1 /// [Fact] public void ListInsertAfterNotPivotTest() { redisListStudy.ListLeftPush(defaultRedisKey, "second"); var listLenth = redisListStudy.ListInsertAfter(defaultRedisKey, "first", "firstAfter"); Assert.Equal(-1, listLenth); } [Fact] public void ListInsertAfterTest() { redisListStudy.ListLeftPush(defaultRedisKey, "first"); var listLenth = redisListStudy.ListInsertAfter(defaultRedisKey, "first", "second"); Assert.Equal(2, listLenth); listLenth = redisListStudy.ListInsertAfter(defaultRedisKey, "second", "third"); Assert.Equal(3, listLenth); } #endregion #region ListSetByIndex [Fact] public void ListGetByIndexNotKeyTest() { Assert.Throws(() => redisListStudy.ListSetByIndex(defaultRedisKey, 0, "first")); } [Fact] public void ListSetByIndexTest() { redisListStudy.ListLeftPush(defaultRedisKey, "first"); redisListStudy.ListSetByIndex(defaultRedisKey,0,"firstSetByIndex"); var first = redisListStudy.ListLeftPop(defaultRedisKey); Assert.Equal("firstSetByIndex", first); } #endregion #region 清理 public void Dispose() { redisDatabase.KeyDelete(defaultRedisKey); } #endregion } }