diff --git a/RedisStudyTest/RedisHashStudyTest.cs b/RedisStudyTest/RedisHashStudyTest.cs index c9791be..8287637 100644 --- a/RedisStudyTest/RedisHashStudyTest.cs +++ b/RedisStudyTest/RedisHashStudyTest.cs @@ -29,6 +29,12 @@ namespace RedisStudyTest { redisDatabase = RedisHelper.GetRedisDatabase(); hashStudy = new RedisHashStudy(); + student = new Student() + { + Id = 1, + Name = "王高峰", + Age = 2 * 9 + }; students = new List() { new Student() @@ -67,24 +73,51 @@ namespace RedisStudyTest } [Fact] - public void AddStudentTest() + public void AddStudentExceptionTest() { - student = new Student() - { - Id = 1, - Name = "王高峰", - Age = 2 * 9 - }; 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[] { })); + } - - var studentEntries = 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), @@ -93,18 +126,37 @@ namespace RedisStudyTest //插入Sudent var addHash = hashStudy.HashSet(redisKey, studentEntries, CommandFlags.None); + Assert.True(addHash); + //设置过期 redisDatabase.KeyExpire(redisKey, TimeSpan.FromSeconds(5)); - Assert.True(addHash); + } - //更新(插入)一项 + /// + /// 更新学生异常测试 + /// + [Fact] + public void UpdateStudentExceptionTest() + { + string redisKey = preHashKey + student.Id; + //不存在Key + Assert.Throws(()=> hashStudy.HashSet(string.Empty, "Id", -1)); + } - var addOrUpdateOne = hashStudy.HashSet(redisKey, "Id",student.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); } @@ -115,14 +167,14 @@ namespace RedisStudyTest [InlineData(-3)] public void DelStudentTest(int studentId) { - //Assert.False(hashStudy.DelStudentById(studentId)); + Assert.False(redisDatabase.KeyDelete(preHashKey + studentId)); } [Theory] [InlineData(-100)] public void DelStudentTest2(int studentId) { - //Assert.False(hashStudy.DelStudentById(studentId)); + Assert.False(redisDatabase.KeyDelete(preHashKey + studentId)); } [Fact] @@ -172,11 +224,11 @@ namespace RedisStudyTest { redisDatabase.KeyDelete(preHashKey + student.Id); } - //hashStudy.DelStudentById(student.Id); - //foreach (var temp in students) - //{ - // hashStudy.DelStudentById(temp.Id); - //} + + foreach (var temp in students) + { + redisDatabase.KeyDelete(preHashKey + temp.Id); + } } #region 辅助方法 @@ -195,6 +247,40 @@ namespace RedisStudyTest }; return entrys.ToArray(); } + + public Student HashEntrysToStudent(HashEntry[] hashEntrys) + { + if (hashEntrys == null) + { + return null; + } + + if (hashEntrys.Length <= 0) + { + return null; + } + + var student = new Student(); + foreach (var entry in hashEntrys) + { + switch (entry.Name) + { + case "Id": + student.Id = entry.Value.IsInteger ? (int)entry.Value : default(int); ; + break; + case "Name": + student.Name = entry.Value.ToString(); + break; + case "Age": + student.Age = entry.Value.IsInteger ? (int)entry.Value : default(int); + break; + default: + break; + } + } + + return student; + } #endregion } }