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 ...@@ -8,6 +8,54 @@ namespace StackExchange.Redis.Tests
[TestFixture] [TestFixture]
public class WithKeyPrefixTests : TestBase 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] [Test]
public void BasicSmokeTest() public void BasicSmokeTest()
{ {
...@@ -15,13 +63,6 @@ public void BasicSmokeTest() ...@@ -15,13 +63,6 @@ public void BasicSmokeTest()
{ {
var raw = conn.GetDatabase(1); 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 foo = raw.WithKeyPrefix("foo");
var foobar = foo.WithKeyPrefix("bar"); var foobar = foo.WithKeyPrefix("bar");
......
...@@ -44,7 +44,12 @@ public static IDatabase WithKeyPrefix(this IDatabase database, RedisKey keyPrefi ...@@ -44,7 +44,12 @@ public static IDatabase WithKeyPrefix(this IDatabase database, RedisKey keyPrefi
throw new ArgumentNullException("database"); 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 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