HRANDFIELD feature by slorello89 · Pull Request #2090 · StackExchange/StackExchange.Redis
Expand Up
@@ -596,5 +596,81 @@ public async Task TestWhenAlwaysAsync()
Assert.False(result4, "Duplicate se key 1 variant");
}
}
[Fact] public async Task HashRandomFieldAsync() { using var muxer = Create(); Skip.IfBelow(muxer, RedisFeatures.v6_2_0);
var db = muxer.GetDatabase(); var hashKey = Me(); var items = new HashEntry[] { new("new york", "yankees"), new("baltimore", "orioles"), new("boston", "red sox"), new("Tampa Bay", "rays"), new("Toronto", "blue jays") }; await db.HashSetAsync(hashKey, items);
var singleField = await db.HashRandomFieldAsync(hashKey); var multiFields = await db.HashRandomFieldsAsync(hashKey, 3); var withValues = await db.HashRandomFieldsWithValuesAsync(hashKey, 3); Assert.Equal(3, multiFields.Length); Assert.Equal(3, withValues.Length); Assert.Contains(items, x => x.Name == singleField);
foreach (var field in multiFields) { Assert.Contains(items, x => x.Name == field); }
foreach (var field in withValues) { Assert.Contains(items, x => x.Name == field.Name); } }
[Fact] public void HashRandomField() { using var muxer = Create(); Skip.IfBelow(muxer, RedisFeatures.v6_2_0);
var db = muxer.GetDatabase(); var hashKey = Me(); var items = new HashEntry[] { new("new york", "yankees"), new("baltimore", "orioles"), new("boston", "red sox"), new("Tampa Bay", "rays"), new("Toronto", "blue jays") }; db.HashSet(hashKey, items);
var singleField = db.HashRandomField(hashKey); var multiFields = db.HashRandomFields(hashKey, 3); var withValues = db.HashRandomFieldsWithValues(hashKey, 3); Assert.Equal(3, multiFields.Length); Assert.Equal(3, withValues.Length); Assert.Contains(items, x => x.Name == singleField);
foreach (var field in multiFields) { Assert.Contains(items, x => x.Name == field); }
foreach (var field in withValues) { Assert.Contains(items, x => x.Name == field.Name); } }
[Fact] public void HashRandomFieldEmptyHash() { using var muxer = Create(); Skip.IfBelow(muxer, RedisFeatures.v6_2_0);
var db = muxer.GetDatabase(); var hashKey = Me();
var singleField = db.HashRandomField(hashKey); var multiFields = db.HashRandomFields(hashKey, 3); var withValues = db.HashRandomFieldsWithValues(hashKey, 3);
Assert.Equal(RedisValue.Null, singleField); Assert.Empty(multiFields); Assert.Empty(withValues); } } }
[Fact] public async Task HashRandomFieldAsync() { using var muxer = Create(); Skip.IfBelow(muxer, RedisFeatures.v6_2_0);
var db = muxer.GetDatabase(); var hashKey = Me(); var items = new HashEntry[] { new("new york", "yankees"), new("baltimore", "orioles"), new("boston", "red sox"), new("Tampa Bay", "rays"), new("Toronto", "blue jays") }; await db.HashSetAsync(hashKey, items);
var singleField = await db.HashRandomFieldAsync(hashKey); var multiFields = await db.HashRandomFieldsAsync(hashKey, 3); var withValues = await db.HashRandomFieldsWithValuesAsync(hashKey, 3); Assert.Equal(3, multiFields.Length); Assert.Equal(3, withValues.Length); Assert.Contains(items, x => x.Name == singleField);
foreach (var field in multiFields) { Assert.Contains(items, x => x.Name == field); }
foreach (var field in withValues) { Assert.Contains(items, x => x.Name == field.Name); } }
[Fact] public void HashRandomField() { using var muxer = Create(); Skip.IfBelow(muxer, RedisFeatures.v6_2_0);
var db = muxer.GetDatabase(); var hashKey = Me(); var items = new HashEntry[] { new("new york", "yankees"), new("baltimore", "orioles"), new("boston", "red sox"), new("Tampa Bay", "rays"), new("Toronto", "blue jays") }; db.HashSet(hashKey, items);
var singleField = db.HashRandomField(hashKey); var multiFields = db.HashRandomFields(hashKey, 3); var withValues = db.HashRandomFieldsWithValues(hashKey, 3); Assert.Equal(3, multiFields.Length); Assert.Equal(3, withValues.Length); Assert.Contains(items, x => x.Name == singleField);
foreach (var field in multiFields) { Assert.Contains(items, x => x.Name == field); }
foreach (var field in withValues) { Assert.Contains(items, x => x.Name == field.Name); } }
[Fact] public void HashRandomFieldEmptyHash() { using var muxer = Create(); Skip.IfBelow(muxer, RedisFeatures.v6_2_0);
var db = muxer.GetDatabase(); var hashKey = Me();
var singleField = db.HashRandomField(hashKey); var multiFields = db.HashRandomFields(hashKey, 3); var withValues = db.HashRandomFieldsWithValues(hashKey, 3);
Assert.Equal(RedisValue.Null, singleField); Assert.Empty(multiFields); Assert.Empty(withValues); } } }