Fixes to ByteString's equality handling.
This commit is contained in:
parent
b2ac868493
commit
8d47ec4f3e
2 changed files with 41 additions and 20 deletions
|
@ -38,6 +38,32 @@ namespace Google.Protobuf
|
|||
{
|
||||
public class ByteStringTest
|
||||
{
|
||||
[Test]
|
||||
public void Equality()
|
||||
{
|
||||
ByteString b1 = ByteString.CopyFrom(1, 2, 3);
|
||||
ByteString b2 = ByteString.CopyFrom(1, 2, 3);
|
||||
ByteString b3 = ByteString.CopyFrom(1, 2, 4);
|
||||
ByteString b4 = ByteString.CopyFrom(1, 2, 3, 4);
|
||||
EqualityTester.AssertEquality(b1, b1);
|
||||
EqualityTester.AssertEquality(b1, b2);
|
||||
EqualityTester.AssertInequality(b1, b3);
|
||||
EqualityTester.AssertInequality(b1, b4);
|
||||
EqualityTester.AssertInequality(b1, null);
|
||||
Assert.IsTrue(b1 == b1);
|
||||
Assert.IsTrue(b1 == b2);
|
||||
Assert.IsFalse(b1 == b3);
|
||||
Assert.IsFalse(b1 == b4);
|
||||
Assert.IsFalse(b1 == null);
|
||||
Assert.IsTrue((ByteString) null == null);
|
||||
Assert.IsFalse(b1 != b1);
|
||||
Assert.IsFalse(b1 != b2);
|
||||
Assert.IsTrue(b1 != b3);
|
||||
Assert.IsTrue(b1 != b4);
|
||||
Assert.IsTrue(b1 != null);
|
||||
Assert.IsFalse((ByteString) null != null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void EmptyByteStringHasZeroSize()
|
||||
{
|
||||
|
|
|
@ -212,11 +212,22 @@ namespace Google.Protobuf
|
|||
{
|
||||
return true;
|
||||
}
|
||||
if (ReferenceEquals(lhs, null))
|
||||
if (ReferenceEquals(lhs, null) || ReferenceEquals(rhs, null))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return lhs.Equals(rhs);
|
||||
if (lhs.bytes.Length != rhs.bytes.Length)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
for (int i = 0; i < lhs.Length; i++)
|
||||
{
|
||||
if (rhs.bytes[i] != lhs.bytes[i])
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static bool operator !=(ByteString lhs, ByteString rhs)
|
||||
|
@ -228,12 +239,7 @@ namespace Google.Protobuf
|
|||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
ByteString other = obj as ByteString;
|
||||
if (obj == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return Equals(other);
|
||||
return this == (obj as ByteString);
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
|
@ -248,18 +254,7 @@ namespace Google.Protobuf
|
|||
|
||||
public bool Equals(ByteString other)
|
||||
{
|
||||
if (other.bytes.Length != bytes.Length)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
for (int i = 0; i < bytes.Length; i++)
|
||||
{
|
||||
if (other.bytes[i] != bytes[i])
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
return this == other;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
Loading…
Add table
Reference in a new issue