Commit 09859807 authored by Nick Craver's avatar Nick Craver

Fix for #492

Better handling for null an empty values to SetRemove(Async), Redis will throw here so there's no reason we can't gracefully hamdle it better.
parent 532fc4f4
using System.Linq;
using System;
using System.Linq;
using System.Threading.Tasks;
using Xunit;
using Xunit.Abstractions;
......@@ -35,5 +37,23 @@ public void SScan()
}
}
}
[Fact]
public async Task SetRemoveArgTests()
{
using (var conn = Create())
{
var db = conn.GetDatabase();
var key = Me();
RedisValue[] values = null;
Assert.Throws<ArgumentNullException>(() => db.SetRemove(key, values, CommandFlags.HighPriority));
await Assert.ThrowsAsync<ArgumentNullException>(async () => await db.SetRemoveAsync(key, values, CommandFlags.HighPriority).ForAwait()).ForAwait();
values = new RedisValue[0];
Assert.Equal(0, db.SetRemove(key, values, CommandFlags.HighPriority));
Assert.Equal(0, await db.SetRemoveAsync(key, values, CommandFlags.HighPriority).ForAwait());
}
}
}
}
......@@ -1283,6 +1283,8 @@ public bool SetRemove(RedisKey key, RedisValue value, CommandFlags flags = Comma
public long SetRemove(RedisKey key, RedisValue[] values, CommandFlags flags = CommandFlags.None)
{
if (values == null) throw new ArgumentNullException(nameof(values));
if (values.Length == 0) return 0;
var msg = Message.Create(Database, flags, RedisCommand.SREM, key, values);
return ExecuteSync(msg, ResultProcessor.Int64);
}
......@@ -1295,6 +1297,8 @@ public Task<bool> SetRemoveAsync(RedisKey key, RedisValue value, CommandFlags fl
public Task<long> SetRemoveAsync(RedisKey key, RedisValue[] values, CommandFlags flags = CommandFlags.None)
{
if (values == null) throw new ArgumentNullException(nameof(values));
if (values.Length == 0) return CompletedTask<long>.FromResult(0, asyncState);
var msg = Message.Create(Database, flags, RedisCommand.SREM, key, values);
return ExecuteAsync(msg, ResultProcessor.Int64);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment