master
ruyu 7 years ago
parent 22377b67b0
commit 5ded611ef8

@ -40,7 +40,7 @@ namespace RedisStudyTest
}
#endregion
#region SetAdd
#region SortedSetAdd
[Fact]
public void SortedAdd_NotKey_Test()
@ -370,6 +370,15 @@ namespace RedisStudyTest
}
#endregion
#region SortedSetScore
[Fact]
public void SortedSetScoreTest()
{
//redisSortedSetStudy.SortedSetScore();
}
#endregion
#region SortedSetRangeByRank
[Fact]
@ -408,166 +417,40 @@ namespace RedisStudyTest
}
#endregion
#region SortedSetLengthByValue
#region SortedSetRangeByRankWithScores
[Fact]
public void SortedSetRangeByValue_NotKey_Test()
public void SortedSetRangeByRankWithScores_NotKey_Test()
{
var mumbers = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, 0, -1);
Assert.Empty(mumbers);
var sortedSetEntries = redisSortedSetStudy.SortedSetRangeByRankWithScores(defaultRedisKey);
Assert.Empty(sortedSetEntries);
}
/// <summary>
/// 排它性参数Exclude设置 测试
/// </summary>
[Fact]
public void SortedSetRangeByValue_Exclude_Test()
public void SortedSetRangeByRankWithScoresTest()
{
SortedSetEntry[] sortedSetEntries = new SortedSetEntry[]
{
new SortedSetEntry("first",0),
new SortedSetEntry("second",0),
new SortedSetEntry("third",0),
new SortedSetEntry("four",0),
new SortedSetEntry("five",0),
};
redisSortedSetStudy.SortedSetAdd(defaultRedisKey, sortedSetEntries);
//默认Exclude.None [Start,Stop]
var members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "first", "second", Exclude.None);
//firt five four second
Assert.Equal(4, members.Length);
//Exclude.Start (Start,Stop]
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "first", "second", Exclude.Start);
//five four second
Assert.Equal(3, members.Length);
//Exclude.Stop [Start,Stop)
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "first", "four", Exclude.Stop);
Assert.Equal(2, members.Length);
//Exclude.Both (Start,Stop)
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "first", "four", Exclude.Both);
Assert.Single(members);
}
/// <summary>
/// 分数相同,字典排序,逐字符比较(汉字的比较等待确认)
/// 字典顺序”0”<…<”9”<”A”<…<”Z”<”a”<…<”z”
/// </summary>
[Fact]
public void SortedSetRangeByValueTest()
{
SortedSetEntry[] sortedSetEntries = new SortedSetEntry[]
{
new SortedSetEntry("Andy",0),
new SortedSetEntry("and",0),
new SortedSetEntry("And",0),
new SortedSetEntry("Banana",0),
new SortedSetEntry("color",0),
new SortedSetEntry("query",0),
new SortedSetEntry("remove",0),
new SortedSetEntry("101",0),
new SortedSetEntry("304",0),
new SortedSetEntry("404",0),
new SortedSetEntry("王高峰",0),
new SortedSetEntry("刘山东",0),
new SortedSetEntry("first",1),
new SortedSetEntry("second",2),
new SortedSetEntry("third",3),
new SortedSetEntry("four",4),
new SortedSetEntry("five",5),
};
redisSortedSetStudy.SortedSetAdd(defaultRedisKey, sortedSetEntries);
//数字排序
var members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "0", "5");
Assert.Contains("101", members);
Assert.Contains("304", members);
Assert.Contains("404", members);
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "10", "4");
Assert.Contains("101", members);
Assert.Contains("304", members);
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "11", "40");
Assert.Contains("304", members);
//字母排序
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "And", "color");
//And Andy Banana and color
Assert.Contains("And", members);
Assert.Contains("Andy", members);
Assert.Contains("Banana", members);
Assert.Contains("and", members);
Assert.Contains("color", members);
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "A", "color");
//And Andy Banana and color
Assert.Contains("And", members);
Assert.Contains("Andy", members);
Assert.Contains("Banana", members);
Assert.Contains("and", members);
Assert.Contains("color", members);
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "A", "B");
//And Andy 不包括Banana,因为Ba排在B后
Assert.Contains("And", members);
Assert.Contains("Andy", members);
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "A", "Bb");
//And Andy Banana
Assert.Contains("And", members);
Assert.Contains("Andy", members);
Assert.Contains("Banana", members);
//TODO:汉字排序规则不清楚
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "王", "赵");
//王高峰
Assert.Contains("王高峰", members);
}
/// <summary>
/// 分页测试
/// </summary>
[Fact]
public void SortedSetRangeByValue_Page_Test()
{
SortedSetEntry[] sortedSetEntries = new SortedSetEntry[]
var queryEntries = redisSortedSetStudy.SortedSetRangeByRankWithScores(defaultRedisKey);
Assert.NotEmpty(queryEntries);
for (var i = 0; i < sortedSetEntries.Length; i++)
{
new SortedSetEntry("Andy",0),
new SortedSetEntry("and",0),
new SortedSetEntry("And",0),
new SortedSetEntry("Banana",0),
new SortedSetEntry("color",0),
new SortedSetEntry("query",0),
new SortedSetEntry("remove",0),
new SortedSetEntry("101",0),
new SortedSetEntry("304",0),
new SortedSetEntry("404",0),
new SortedSetEntry("王高峰",0),
new SortedSetEntry("刘山东",0),
};
redisSortedSetStudy.SortedSetAdd(defaultRedisKey, sortedSetEntries);
//第一页
var members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "101", "remove", Exclude.None, 0, 4, CommandFlags.None);
Assert.Equal(4, members.Length);
Assert.Contains("101", members);
Assert.Contains("304", members);
Assert.Contains("404", members);
Assert.Contains("And", members);
//第2页
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "101", "remove", Exclude.None, 4, 4, CommandFlags.None);
Assert.Equal(4, members.Length);
Assert.Contains("Andy", members);
Assert.Contains("Banana", members);
Assert.Contains("and", members);
Assert.Contains("color", members);
Assert.Equal(sortedSetEntries[0], queryEntries[0]);
}
//第3页
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "101", "remove", Exclude.None, 8, 4, CommandFlags.None);
Assert.Equal(2, members.Length);
Assert.Contains("query", members);
Assert.Contains("remove", members);
queryEntries = redisSortedSetStudy.SortedSetRangeByRankWithScores(defaultRedisKey, 1, -1, Order.Descending, CommandFlags.None);
//four third second first
Assert.Equal(sortedSetEntries[3], queryEntries[0]);
Assert.Equal(sortedSetEntries[2], queryEntries[1]);
Assert.Equal(sortedSetEntries[1], queryEntries[2]);
Assert.Equal(sortedSetEntries[0], queryEntries[3]);
}
#endregion
@ -742,6 +625,340 @@ namespace RedisStudyTest
#endregion
#region SortedSetRangeByScoreWithScores
[Fact]
public void SortedSetRangeByScoreWithScores_NotKey_Test()
{
var members = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey);
Assert.Empty(members);
}
/// <summary>
/// 排它性参数Exclude设置 测试
/// </summary>
[Fact]
public void SortedSetRangeByScoreWithScores_Exclude_Test()
{
SortedSetEntry[] sortedSetEntries = new SortedSetEntry[]
{
new SortedSetEntry("first",1),
new SortedSetEntry("second",2),
new SortedSetEntry("third",3),
new SortedSetEntry("four",4),
new SortedSetEntry("five",5),
};
redisSortedSetStudy.SortedSetAdd(defaultRedisKey, sortedSetEntries);
//默认Exclude.None [Start,Stop]
var queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, 2, 4, Exclude.None);
Assert.Equal(3, queryEntries.Length);
Assert.Contains("second", queryEntries[0].Element);
Assert.Contains("third", queryEntries[1].Element);
Assert.Contains("four", queryEntries[2].Element);
//Exclude.Start (Start,Stop]
queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, 2, 4, Exclude.Start);
Assert.Equal(2, queryEntries.Length);
Assert.Contains("third", queryEntries[0].Element);
Assert.Contains("four", queryEntries[1].Element);
//Exclude.Stop [Start,Stop)
queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, 2, 4, Exclude.Stop);
Assert.Equal(2, queryEntries.Length);
Assert.Contains("second", queryEntries[0].Element);
Assert.Contains("third", queryEntries[1].Element);
//Exclude.Both (Start,Stop)
queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, 2, 4, Exclude.Both);
Assert.Single(queryEntries);
Assert.Contains("third", queryEntries[0].Element);
}
/// <summary>
/// 排序参数测试
/// </summary>
[Fact]
public void SortedSetRangeByScoreWithScores_Sort_Test()
{
SortedSetEntry[] sortedSetEntries = new SortedSetEntry[]
{
new SortedSetEntry("first",1),
new SortedSetEntry("second",2),
new SortedSetEntry("third",3),
new SortedSetEntry("four",4),
new SortedSetEntry("five",5),
};
redisSortedSetStudy.SortedSetAdd(defaultRedisKey, sortedSetEntries);
//默认:升序
var queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, 2, 4, Exclude.None, Order.Ascending);
Assert.Equal(3, queryEntries.Length);
Assert.Equal("second", queryEntries[0].Element);
Assert.Equal("third", queryEntries[1].Element);
Assert.Equal("four", queryEntries[2].Element);
//降序
queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, 2, 4, Exclude.None, Order.Descending);
Assert.Equal(3, queryEntries.Length);
Assert.Equal("four", queryEntries[0].Element);
Assert.Equal("third", queryEntries[1].Element);
Assert.Equal("second", queryEntries[2].Element);
}
/// <summary>
/// 分页测试
/// </summary>
[Fact]
public void SortedSetRangeByScoreWithScores_Page_Test()
{
SortedSetEntry[] sortedSetEntries = new SortedSetEntry[]
{
new SortedSetEntry("Andy",1),
new SortedSetEntry("and",2),
new SortedSetEntry("And",3),
new SortedSetEntry("Banana",4),
new SortedSetEntry("color",5),
new SortedSetEntry("query",6),
new SortedSetEntry("remove",7),
new SortedSetEntry("101",8),
new SortedSetEntry("304",9),
new SortedSetEntry("404",10),
new SortedSetEntry("王高峰",11),
new SortedSetEntry("刘山东",12),
};
redisSortedSetStudy.SortedSetAdd(defaultRedisKey, sortedSetEntries);
//第一页
var queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, double.MinValue, double.MaxValue, Exclude.None, Order.Ascending, 0, 4, CommandFlags.None);
Assert.Equal(4, queryEntries.Length);
Assert.Equal(sortedSetEntries[0], queryEntries[0]);
Assert.Equal(sortedSetEntries[1], queryEntries[1]);
Assert.Equal(sortedSetEntries[2], queryEntries[2]);
Assert.Equal(sortedSetEntries[3], queryEntries[3]);
//第2页
queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, double.NegativeInfinity, double.PositiveInfinity, Exclude.None, Order.Ascending, 4, 4, CommandFlags.None);
Assert.Equal(4, queryEntries.Length);
Assert.Equal(sortedSetEntries[4], queryEntries[0]);
Assert.Equal(sortedSetEntries[5], queryEntries[1]);
Assert.Equal(sortedSetEntries[6], queryEntries[2]);
Assert.Equal(sortedSetEntries[7], queryEntries[3]);
//第3页
queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, double.NegativeInfinity, double.PositiveInfinity, Exclude.None, Order.Ascending, 8, 4, CommandFlags.None);
Assert.Equal(4, queryEntries.Length);
Assert.Equal(sortedSetEntries[8], queryEntries[0]);
Assert.Equal(sortedSetEntries[9], queryEntries[1]);
Assert.Equal(sortedSetEntries[10], queryEntries[2]);
Assert.Equal(sortedSetEntries[11], queryEntries[3]);
}
[Fact]
public void SortedSetRangeByScoreWithScoresTest()
{
SortedSetEntry[] sortedSetEntries = new SortedSetEntry[]
{
new SortedSetEntry("Andy",1),
new SortedSetEntry("and",2),
new SortedSetEntry("And",3),
new SortedSetEntry("Banana",4),
new SortedSetEntry("color",5),
new SortedSetEntry("query",6),
new SortedSetEntry("remove",7),
new SortedSetEntry("101",8),
new SortedSetEntry("304",9),
new SortedSetEntry("404",10),
new SortedSetEntry("王高峰",11),
new SortedSetEntry("刘山东",12),
};
redisSortedSetStudy.SortedSetAdd(defaultRedisKey, sortedSetEntries);
var queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, 1, 5);
Assert.Equal(5, queryEntries.Length);
Assert.Equal("Andy", queryEntries[0].Element);
Assert.Equal("and", queryEntries[1].Element);
Assert.Equal("And", queryEntries[2].Element);
Assert.Equal("Banana", queryEntries[3].Element);
Assert.Equal("color", queryEntries[4].Element);
queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, 5, 7, Exclude.None, Order.Descending);
Assert.Equal(3, queryEntries.Length);
Assert.Equal("remove", queryEntries[0].Element);
Assert.Equal("query", queryEntries[1].Element);
Assert.Equal("color", queryEntries[2].Element);
queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, double.NegativeInfinity, double.PositiveInfinity);
Assert.Equal(12, queryEntries.Length);
Assert.Equal("Andy", queryEntries[0].Element);
Assert.Equal("刘山东", queryEntries[11].Element);
}
#endregion
#region SortedSetRangeByValue
[Fact]
public void SortedSetRangeByValue_NotKey_Test()
{
var mumbers = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, 0, -1);
Assert.Empty(mumbers);
}
/// <summary>
/// 排它性参数Exclude设置 测试
/// </summary>
[Fact]
public void SortedSetRangeByValue_Exclude_Test()
{
SortedSetEntry[] sortedSetEntries = new SortedSetEntry[]
{
new SortedSetEntry("first",0),
new SortedSetEntry("second",0),
new SortedSetEntry("third",0),
new SortedSetEntry("four",0),
new SortedSetEntry("five",0),
};
redisSortedSetStudy.SortedSetAdd(defaultRedisKey, sortedSetEntries);
//默认Exclude.None [Start,Stop]
var members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "first", "second", Exclude.None);
//firt five four second
Assert.Equal(4, members.Length);
//Exclude.Start (Start,Stop]
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "first", "second", Exclude.Start);
//five four second
Assert.Equal(3, members.Length);
//Exclude.Stop [Start,Stop)
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "first", "four", Exclude.Stop);
Assert.Equal(2, members.Length);
//Exclude.Both (Start,Stop)
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "first", "four", Exclude.Both);
Assert.Single(members);
}
/// <summary>
/// 分数相同,字典排序,逐字符比较(汉字的比较等待确认)
/// 字典顺序”0”<…<”9”<”A”<…<”Z”<”a”<…<”z”
/// </summary>
[Fact]
public void SortedSetRangeByValueTest()
{
SortedSetEntry[] sortedSetEntries = new SortedSetEntry[]
{
new SortedSetEntry("Andy",0),
new SortedSetEntry("and",0),
new SortedSetEntry("And",0),
new SortedSetEntry("Banana",0),
new SortedSetEntry("color",0),
new SortedSetEntry("query",0),
new SortedSetEntry("remove",0),
new SortedSetEntry("101",0),
new SortedSetEntry("304",0),
new SortedSetEntry("404",0),
new SortedSetEntry("王高峰",0),
new SortedSetEntry("刘山东",0),
};
redisSortedSetStudy.SortedSetAdd(defaultRedisKey, sortedSetEntries);
//数字排序
var members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "0", "5");
Assert.Contains("101", members);
Assert.Contains("304", members);
Assert.Contains("404", members);
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "10", "4");
Assert.Contains("101", members);
Assert.Contains("304", members);
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "11", "40");
Assert.Contains("304", members);
//字母排序
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "And", "color");
//And Andy Banana and color
Assert.Contains("And", members);
Assert.Contains("Andy", members);
Assert.Contains("Banana", members);
Assert.Contains("and", members);
Assert.Contains("color", members);
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "A", "color");
//And Andy Banana and color
Assert.Contains("And", members);
Assert.Contains("Andy", members);
Assert.Contains("Banana", members);
Assert.Contains("and", members);
Assert.Contains("color", members);
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "A", "B");
//And Andy 不包括Banana,因为Ba排在B后
Assert.Contains("And", members);
Assert.Contains("Andy", members);
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "A", "Bb");
//And Andy Banana
Assert.Contains("And", members);
Assert.Contains("Andy", members);
Assert.Contains("Banana", members);
//TODO:汉字排序规则不清楚
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "王", "赵");
//王高峰
Assert.Contains("王高峰", members);
}
/// <summary>
/// 分页测试
/// </summary>
[Fact]
public void SortedSetRangeByValue_Page_Test()
{
SortedSetEntry[] sortedSetEntries = new SortedSetEntry[]
{
new SortedSetEntry("Andy",0),
new SortedSetEntry("and",0),
new SortedSetEntry("And",0),
new SortedSetEntry("Banana",0),
new SortedSetEntry("color",0),
new SortedSetEntry("query",0),
new SortedSetEntry("remove",0),
new SortedSetEntry("101",0),
new SortedSetEntry("304",0),
new SortedSetEntry("404",0),
new SortedSetEntry("王高峰",0),
new SortedSetEntry("刘山东",0),
};
redisSortedSetStudy.SortedSetAdd(defaultRedisKey, sortedSetEntries);
//第一页
var members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "101", "remove", Exclude.None, 0, 4, CommandFlags.None);
Assert.Equal(4, members.Length);
Assert.Contains("101", members);
Assert.Contains("304", members);
Assert.Contains("404", members);
Assert.Contains("And", members);
//第2页
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "101", "remove", Exclude.None, 4, 4, CommandFlags.None);
Assert.Equal(4, members.Length);
Assert.Contains("Andy", members);
Assert.Contains("Banana", members);
Assert.Contains("and", members);
Assert.Contains("color", members);
//第3页
members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "101", "remove", Exclude.None, 8, 4, CommandFlags.None);
Assert.Equal(2, members.Length);
Assert.Contains("query", members);
Assert.Contains("remove", members);
}
#endregion
#region 清理
public void Dispose()
{

Loading…
Cancel
Save