diff options
Diffstat (limited to 'Timeline.Tests/Helpers')
-rw-r--r-- | Timeline.Tests/Helpers/TestUsers.cs | 4 | ||||
-rw-r--r-- | Timeline.Tests/Helpers/UserInfoComparers.cs | 49 |
2 files changed, 51 insertions, 2 deletions
diff --git a/Timeline.Tests/Helpers/TestUsers.cs b/Timeline.Tests/Helpers/TestUsers.cs index 89ddf218..dd00e38d 100644 --- a/Timeline.Tests/Helpers/TestUsers.cs +++ b/Timeline.Tests/Helpers/TestUsers.cs @@ -28,8 +28,8 @@ namespace Timeline.Tests.Helpers MockUsers = mockUsers; - var mockUserInfos = mockUsers.Select(u => UserInfo.Create(u)).ToList(); - mockUserInfos.Sort(UserInfo.Comparer); + var mockUserInfos = mockUsers.Select(u => UserUtility.CreateUserInfo(u)).ToList(); + mockUserInfos.Sort(UserInfoComparers.Comparer); MockUserInfos = mockUserInfos; } diff --git a/Timeline.Tests/Helpers/UserInfoComparers.cs b/Timeline.Tests/Helpers/UserInfoComparers.cs new file mode 100644 index 00000000..d88b6622 --- /dev/null +++ b/Timeline.Tests/Helpers/UserInfoComparers.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Timeline.Entities; + +namespace Timeline.Tests.Helpers +{ + public static class UserInfoComparers + { + public static IEqualityComparer<UserInfo> EqualityComparer { get; } = new EqualityComparerImpl(); + public static IComparer<UserInfo> Comparer { get; } = Comparer<UserInfo>.Create(Compare); + + + private class EqualityComparerImpl : IEqualityComparer<UserInfo> + { + bool IEqualityComparer<UserInfo>.Equals(UserInfo x, UserInfo y) + { + return Compare(x, y) == 0; + } + + int IEqualityComparer<UserInfo>.GetHashCode(UserInfo obj) + { + return obj.Username.GetHashCode() ^ obj.IsAdmin.GetHashCode(); + } + } + + public static int Compare(UserInfo left, UserInfo right) + { + if (left == null) + { + if (right == null) + return 0; + return -1; + } + + if (right == null) + return 1; + + var uc = string.Compare(left.Username, right.Username); + if (uc != 0) + return uc; + + if (left.IsAdmin == right.IsAdmin) + return 0; + + return left.IsAdmin ? -1 : 1; + } + } +} |