using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Xunit; using RedisStudyModel; using StackExchange; using StackExchange.Redis; using RedisStuy; namespace RedisStudyTest { public class RedisHashStudyTest : IDisposable { private IDatabase redisDatabase = null; private RedisHashStudy hashStudy = null; private List students; private Student student = null; private string preHashKey = "RedisStudy:Student:"; /// /// 构造 /// public RedisHashStudyTest() { redisDatabase = RedisHelper.GetRedisDatabase(); hashStudy = new RedisHashStudy(); student = new Student() { Id = 1, Name = "王高峰", Age = 2 * 9 }; students = new List() { new Student() { Id = 1001, Name = "王高峰", Age = 11 }, new Student() { Id = 1002, Name = "王高峰2", Age = 22 }, new Student() { Id = 1003, Name = "王高峰3", Age = 33 }, new Student() { Id = 1004, Name = "王高峰4", Age = 44 }, new Student() { Id = 1005, Name = "王高峰5", Age = 55 }, }; //hashStudy.AddStudents(students); } [Fact] public void AddStudentExceptionTest() { string redisKey = preHashKey + student.Id; //参数异常测试 Assert.Throws(() => hashStudy.HashSet(string.Empty, null)); Assert.Throws(() => hashStudy.HashSet("", null)); Assert.Throws(() => hashStudy.HashSet(preHashKey + "-1", null)); Assert.Throws(() => hashStudy.HashSet(preHashKey + "-1", new HashEntry[] { })); } [Fact] public void AddStudentWhenTest() { string redisKey = preHashKey + student.Id; var id_When_NotExists_No = hashStudy.HashSet(redisKey, "Id", student.Id + 1, When.NotExists); Assert.True(id_When_NotExists_No); var id_When_NotExists_Yes = hashStudy.HashSet(redisKey, "Id2", student.Id + 1, When.NotExists); Assert.False(id_When_NotExists_Yes); var id_When_Exists_Yes = hashStudy.HashSet(redisKey, "Id", student.Id + 1, When.Exists); Assert.True(id_When_Exists_Yes); var id_When_Exists_No = hashStudy.HashSet(redisKey, "Id3", student.Id + 1, When.Exists); Assert.False(id_When_Exists_No); var id_When_Always_Exists = hashStudy.HashSet(redisKey, "Id", student.Id + 1, When.Always); Assert.True(id_When_Always_Exists); var id_When_Always_NotExists = hashStudy.HashSet(redisKey, "Id4", student.Id + 1, When.Always); Assert.True(id_When_Always_NotExists); } [Fact] public void AddStudentCommandFlagTest() { string redisKey = preHashKey + student.Id; } [Fact] public void AddStudentTest() { string redisKey = preHashKey + student.Id; var studentEntries = new HashEntry[] { new HashEntry("Id",1), new HashEntry("Name",student.Name), new HashEntry("Age",student.Age), }; //插入Sudent var addHash = hashStudy.HashSet(redisKey, studentEntries, CommandFlags.None); Assert.True(addHash); //设置过期 redisDatabase.KeyExpire(redisKey, TimeSpan.FromSeconds(5)); } /// /// 更新学生异常测试 /// [Fact] public void UpdateStudentExceptionTest() { string redisKey = preHashKey + student.Id; //不存在Key Assert.Throws(()=> hashStudy.HashSet(string.Empty, "Id", -1)); } /// /// 更新学生 /// [Theory] [InlineData("Id", 1)] [InlineData("Name",1)] [InlineData("Age",1)] public void UpdateStudentTest(RedisValue fieldName, RedisValue value) { string redisKey = preHashKey + student.Id; var addOrUpdateOne = hashStudy.HashSet(redisKey, fieldName, value+1); Assert.True(addOrUpdateOne); addOrUpdateOne = hashStudy.HashSet(redisKey, "Name", student.Name + 1); Assert.True(addOrUpdateOne); addOrUpdateOne = hashStudy.HashSet(redisKey, "Age", student.Age + 1); Assert.True(addOrUpdateOne); } [Theory] [InlineData(-1)] [InlineData(-2)] [InlineData(-3)] public void DelStudentTest(int studentId) { Assert.False(redisDatabase.KeyDelete(preHashKey + studentId)); } [Theory] [InlineData(-100)] public void DelStudentTest2(int studentId) { Assert.False(redisDatabase.KeyDelete(preHashKey + studentId)); } /// /// 清理 /// public void Dispose() { if (student != null) { redisDatabase.KeyDelete(preHashKey + student.Id); } foreach (var temp in students) { redisDatabase.KeyDelete(preHashKey + temp.Id); } } } }