Commit 0376026f authored by Marc Gravell's avatar Marc Gravell

Better null vs empty key prefix handling

parent d9fa8e5e
......@@ -8,6 +8,54 @@ namespace StackExchange.Redis.Tests
[TestFixture]
public class WithKeyPrefixTests : TestBase
{
[Test]
public void BlankPrefixYieldsSame_Bytes()
{
using (var conn = Create())
{
var raw = conn.GetDatabase(1);
var prefixed = raw.WithKeyPrefix(new byte[0]);
Assert.AreSame(raw, prefixed);
}
}
[Test]
public void BlankPrefixYieldsSame_String()
{
using (var conn = Create())
{
var raw = conn.GetDatabase(1);
var prefixed = raw.WithKeyPrefix("");
Assert.AreSame(raw, prefixed);
}
}
[Test, ExpectedException(typeof(ArgumentNullException))]
public void NullPrefixIsError_Bytes()
{
using (var conn = Create())
{
var raw = conn.GetDatabase(1);
var prefixed = raw.WithKeyPrefix((string)null);
}
}
[Test, ExpectedException(typeof(ArgumentNullException))]
public void NullPrefixIsError_String()
{
using (var conn = Create())
{
var raw = conn.GetDatabase(1);
var prefixed = raw.WithKeyPrefix((string)null);
}
}
[Test, ExpectedException(typeof(ArgumentNullException))]
[TestCase("abc")]
[TestCase("")]
[TestCase(null)]
public void NullDatabaseIsError(string prefix)
{
IDatabase raw = null;
var prefixed = raw.WithKeyPrefix(prefix);
}
[Test]
public void BasicSmokeTest()
{
......@@ -15,13 +63,6 @@ public void BasicSmokeTest()
{
var raw = conn.GetDatabase(1);
var vanilla = raw.WithKeyPrefix("");
Assert.AreSame(raw, vanilla);
vanilla = raw.WithKeyPrefix((byte[])null);
Assert.AreSame(raw, vanilla);
vanilla = raw.WithKeyPrefix((string)null);
Assert.AreSame(raw, vanilla);
var foo = raw.WithKeyPrefix("foo");
var foobar = foo.WithKeyPrefix("bar");
......
......@@ -44,7 +44,12 @@ public static IDatabase WithKeyPrefix(this IDatabase database, RedisKey keyPrefi
throw new ArgumentNullException("database");
}
if (keyPrefix.IsNull || keyPrefix.Value.Length == 0)
if (keyPrefix.IsNull)
{
throw new ArgumentNullException("keyPrefix");
}
if (keyPrefix.Value.Length == 0)
{
return database; // fine - you can keep using the original, then
}
......
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