Browse Source
- #nullable enable - Make it a `readonly struct` - Most of the time it will only hold a single `int`, so optimize for the common case by having an `int _index` field - Make `_path` an array rather than a list as it will be fixed-size - Implement equality - Implement operatorspull/3469/head
4 changed files with 180 additions and 26 deletions
@ -0,0 +1,81 @@ |
|||
using Xunit; |
|||
|
|||
namespace Avalonia.Controls.UnitTests |
|||
{ |
|||
public class IndexPathTests |
|||
{ |
|||
[Fact] |
|||
public void Simple_Index() |
|||
{ |
|||
var a = new IndexPath(1); |
|||
|
|||
Assert.Equal(1, a.GetSize()); |
|||
Assert.Equal(1, a.GetAt(0)); |
|||
} |
|||
|
|||
[Fact] |
|||
public void Equal_Paths() |
|||
{ |
|||
var a = new IndexPath(1); |
|||
var b = new IndexPath(1); |
|||
|
|||
Assert.True(a == b); |
|||
Assert.False(a != b); |
|||
Assert.True(a.Equals(b)); |
|||
Assert.Equal(0, a.CompareTo(b)); |
|||
Assert.Equal(a.GetHashCode(), b.GetHashCode()); |
|||
} |
|||
|
|||
[Fact] |
|||
public void Unequal_Paths() |
|||
{ |
|||
var a = new IndexPath(1); |
|||
var b = new IndexPath(2); |
|||
|
|||
Assert.False(a == b); |
|||
Assert.True(a != b); |
|||
Assert.False(a.Equals(b)); |
|||
Assert.Equal(-1, a.CompareTo(b)); |
|||
Assert.NotEqual(a.GetHashCode(), b.GetHashCode()); |
|||
} |
|||
|
|||
[Fact] |
|||
public void Equal_Null_Path() |
|||
{ |
|||
var a = new IndexPath(null); |
|||
var b = new IndexPath(null); |
|||
|
|||
Assert.True(a == b); |
|||
Assert.False(a != b); |
|||
Assert.True(a.Equals(b)); |
|||
Assert.Equal(0, a.CompareTo(b)); |
|||
Assert.Equal(a.GetHashCode(), b.GetHashCode()); |
|||
} |
|||
|
|||
[Fact] |
|||
public void Unequal_Null_Path() |
|||
{ |
|||
var a = new IndexPath(null); |
|||
var b = new IndexPath(2); |
|||
|
|||
Assert.False(a == b); |
|||
Assert.True(a != b); |
|||
Assert.False(a.Equals(b)); |
|||
Assert.Equal(-1, a.CompareTo(b)); |
|||
Assert.NotEqual(a.GetHashCode(), b.GetHashCode()); |
|||
} |
|||
|
|||
[Fact] |
|||
public void Default_Is_Null_Path() |
|||
{ |
|||
var a = new IndexPath(null); |
|||
var b = default(IndexPath); |
|||
|
|||
Assert.True(a == b); |
|||
Assert.False(a != b); |
|||
Assert.True(a.Equals(b)); |
|||
Assert.Equal(0, a.CompareTo(b)); |
|||
Assert.Equal(a.GetHashCode(), b.GetHashCode()); |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue