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(); 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 AddStudentTest() { 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[] { new HashEntry("Id",1), new HashEntry("Name",student.Name), new HashEntry("Age",student.Age), }; //插入Sudent var addHash = hashStudy.HashSet(redisKey, studentEntries, CommandFlags.None); //设置过期 redisDatabase.KeyExpire(redisKey, TimeSpan.FromSeconds(5)); Assert.True(addHash); //更新(插入)一项 var addOrUpdateOne = hashStudy.HashSet(redisKey, "Id",student.Id+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(hashStudy.DelStudentById(studentId)); } [Theory] [InlineData(-100)] public void DelStudentTest2(int studentId) { //Assert.False(hashStudy.DelStudentById(studentId)); } [Fact] public void QueryOneStudentTest() { //hashStudy.AddStudent(this.student); //var queryStudent = hashStudy.QueryOneStudent(this.student.Id); //Assert.NotNull(queryStudent); //Assert.True(this.student.Id==queryStudent.Id); //Assert.True(this.student.Name == queryStudent.Name); //Assert.True(this.student.Age == queryStudent.Age); } [Fact] public void ExistStudentTest() { //Assert.True(hashStudy.ExistStudent(students[0].Id)); //Assert.True(hashStudy.ExistStudent(students[1].Id)); //Assert.True(hashStudy.ExistStudent(students[2].Id)); //Assert.True(hashStudy.ExistStudent(students[3].Id)); //Assert.True(hashStudy.ExistStudent(students[4].Id)); //Assert.False(hashStudy.ExistStudent(-1000)); //Assert.False(hashStudy.ExistStudent(-2000)); } /// /// 查询所有学生 /// [Fact] public void QueryAllStudent() { //List students = hashStudy.QueryAllStudents(); //Assert.NotNull(students); //Assert.Equal(students.Count(), students.Count); } /// /// 清理 /// public void Dispose() { if (student != null) { redisDatabase.KeyDelete(preHashKey + student.Id); } //hashStudy.DelStudentById(student.Id); //foreach (var temp in students) //{ // hashStudy.DelStudentById(temp.Id); //} } #region 辅助方法 public HashEntry[] StudentsToHashEntrys(Student student) { if (student == null) { return null; } var entrys = new List() { new HashEntry("Id",student.Id), new HashEntry("Name",student.Name), new HashEntry("Age",student.Age), }; return entrys.ToArray(); } #endregion } }