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