129 lines
2.7 KiB
C#
129 lines
2.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
using ExtensionMethods;
|
|
|
|
using Xunit;
|
|
|
|
namespace ExtensionsTests {
|
|
public class IEquatableExtensionsTests {
|
|
|
|
private class DummyClass : IEquatable<DummyClass> {
|
|
public string? Test { get; set; }
|
|
|
|
public bool Equals(DummyClass? other) {
|
|
if (other == null)
|
|
return false;
|
|
|
|
return other.Test == Test;
|
|
}
|
|
|
|
public override int GetHashCode() {
|
|
unchecked {
|
|
int hash = 17;
|
|
|
|
if (Test != null)
|
|
hash = hash * 23 + Test.GetHashCode();
|
|
|
|
return hash;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
[Fact]
|
|
public void Eq() {
|
|
Assert.True(
|
|
!new DummyClass { Test = "test" }.Eq(new DummyClass { Test = "Test" })
|
|
&& new DummyClass { Test = "Test" }.Eq(new DummyClass { Test = "Test" })
|
|
&& !new DummyClass().Eq(new DummyClass { Test = "Test" })
|
|
);
|
|
}
|
|
|
|
[Fact]
|
|
public void EnumerableEq() {
|
|
|
|
var emptyList = new List<DummyClass>();
|
|
|
|
var list1 = new List<DummyClass> {
|
|
new DummyClass {
|
|
Test = "12345"
|
|
},
|
|
new DummyClass {
|
|
Test = "67890"
|
|
}
|
|
};
|
|
|
|
var list2 = new List<DummyClass> {
|
|
new DummyClass {
|
|
Test = "67890"
|
|
},
|
|
new DummyClass {
|
|
Test = "12345"
|
|
}
|
|
};
|
|
|
|
var list3 = new List<DummyClass> {
|
|
new DummyClass {
|
|
Test = "12345"
|
|
},
|
|
new DummyClass {
|
|
Test = "ABCDE"
|
|
}
|
|
};
|
|
|
|
var list4 = new List<DummyClass> {
|
|
new DummyClass {
|
|
Test = "12345"
|
|
},
|
|
new DummyClass {
|
|
Test = "67890"
|
|
},
|
|
new DummyClass {
|
|
Test = "67890"
|
|
}
|
|
};
|
|
|
|
var list5 = new List<DummyClass> {
|
|
new DummyClass {
|
|
Test = "12345"
|
|
},
|
|
new DummyClass {
|
|
Test = "12345"
|
|
},
|
|
new DummyClass {
|
|
Test = "67890"
|
|
}
|
|
};
|
|
|
|
|
|
// compare between two empty lists (true)
|
|
var result1 = emptyList.EnumerableEq(emptyList);
|
|
|
|
// compare between empty and full list (false)
|
|
var result2 = emptyList.EnumerableEq(list1);
|
|
|
|
// compare between same but unordered lists (true)
|
|
var result3 = list1.EnumerableEq(list2);
|
|
|
|
// compare beween two different lists of the same lenght (false)
|
|
var result4 = list1.EnumerableEq(list3);
|
|
|
|
// compare between two different lenght lists containing same elements (false)
|
|
var result5 = list1.EnumerableEq(list4);
|
|
|
|
// compare between different lists with same lenght and same elements but different proportions (false)
|
|
var result6 = list4.EnumerableEq(list5);
|
|
|
|
Assert.True(
|
|
result1
|
|
&& !result2
|
|
&& result3
|
|
&& !result4
|
|
&& !result5
|
|
&& !result6
|
|
);
|
|
}
|
|
}
|
|
}
|