using System.Linq;
using NUnit.Framework;
namespace StackExchange.Redis.Tests
{
[TestFixture]
public class MultiAdd : TestBase
{
[Test]
public void AddSortedSetEveryWay()
{
using(var conn = Create())
{
var db = conn.GetDatabase(3);
RedisKey key = Me();
db.KeyDelete(key);
db.SortedSetAdd(key, "a", 1);
db.SortedSetAdd(key, new[] {
new SortedSetEntry("b", 2) });
db.SortedSetAdd(key, new[] {
new SortedSetEntry("c", 3),
new SortedSetEntry("d", 4)});
db.SortedSetAdd(key, new[] {
new SortedSetEntry("e", 5),
new SortedSetEntry("f", 6),
new SortedSetEntry("g", 7)});
db.SortedSetAdd(key, new[] {
new SortedSetEntry("h", 8),
new SortedSetEntry("i", 9),
new SortedSetEntry("j", 10),
new SortedSetEntry("k", 11)});
var vals = db.SortedSetRangeByScoreWithScores(key);
string s = string.Join(",", vals.OrderByDescending(x => x.Score).Select(x => x.Element));
Assert.AreEqual("k,j,i,h,g,f,e,d,c,b,a", s);
s = string.Join(",", vals.OrderBy(x => x.Score).Select(x => x.Score));
Assert.AreEqual("1,2,3,4,5,6,7,8,9,10,11", s);
}
}
[Test]
public void AddHashEveryWay()
{
using (var conn = Create())
{
var db = conn.GetDatabase(3);
RedisKey key = Me();
db.KeyDelete(key);
db.HashSet(key, "a", 1);
db.HashSet(key, new[] {
new HashEntry("b", 2) });
db.HashSet(key, new[] {
new HashEntry("c", 3),
new HashEntry("d", 4)});
db.HashSet(key, new[] {
new HashEntry("e", 5),
new HashEntry("f", 6),
new HashEntry("g", 7)});
db.HashSet(key, new[] {
new HashEntry("h", 8),
new HashEntry("i", 9),
new HashEntry("j", 10),
new HashEntry("k", 11)});
var vals = db.HashGetAll(key);
string s = string.Join(",", vals.OrderByDescending(x => (double)x.Value).Select(x => x.Name));
Assert.AreEqual("k,j,i,h,g,f,e,d,c,b,a", s);
s = string.Join(",", vals.OrderBy(x => (double)x.Value).Select(x => x.Value));
Assert.AreEqual("1,2,3,4,5,6,7,8,9,10,11", s);
}
}
[Test]
public void AddSetEveryWay()
{
using (var conn = Create())
{
var db = conn.GetDatabase(3);
RedisKey key = Me();
db.KeyDelete(key);
db.SetAdd(key, "a");
db.SetAdd(key, new RedisValue[] { "b" });
db.SetAdd(key, new RedisValue[] { "c", "d" });
db.SetAdd(key, new RedisValue[] { "e", "f", "g" });
db.SetAdd(key, new RedisValue[] { "h", "i", "j","k" });
var vals = db.SetMembers(key);
string s = string.Join(",", vals.OrderByDescending(x => x));
Assert.AreEqual("k,j,i,h,g,f,e,d,c,b,a", s);
}
}
[Test]
public void AddSetEveryWayNumbers()
{
using (var conn = Create())
{
var db = conn.GetDatabase(3);
RedisKey key = Me();
db.KeyDelete(key);
db.SetAdd(key, "a");
db.SetAdd(key, new RedisValue[] { "1" });
db.SetAdd(key, new RedisValue[] { "11", "2" });
db.SetAdd(key, new RedisValue[] { "10", "3", "1.5" });
db.SetAdd(key, new RedisValue[] { "2.2", "-1", "s", "t" });
var vals = db.SetMembers(key);
string s = string.Join(",", vals.OrderByDescending(x => x));
Assert.AreEqual("t,s,a,11,10,3,2.2,2,1.5,1,-1", s);
}
}
}
}