using DTS.Common.Enums.TestSetups.TestSetupList; using DTS.Common.Interface.TestSetups.TestSetupsList; using System; using System.Collections.Generic; namespace TestSetupsList.Model { public class TestSetupComparer : IComparer { public TestSetupFields SortField { get; set; } = TestSetupFields.Name; public bool SortAscending { get; set; } = true; public int Compare(ITestSetup left, ITestSetup right) { if (left == right) { return 0; } var a = left; var b = right; if (!SortAscending) { a = right; b = left; } if (a == b) { return 0; } if (null == a) { return -1; } if (null == b) { return 1; } switch (SortField) { case TestSetupFields.Name: return string.Compare(a.Name, b.Name, StringComparison.OrdinalIgnoreCase); case TestSetupFields.Description: return string.Compare(a.Description, b.Description, StringComparison.OrdinalIgnoreCase); case TestSetupFields.RecordingMode: return a.RecordingMode.CompareTo(b.RecordingMode); case TestSetupFields.PreTriggerSeconds: return a.PreTriggerSeconds.CompareTo(b.PreTriggerSeconds); case TestSetupFields.PostTriggerSeconds: return a.PostTriggerSeconds.CompareTo(b.PostTriggerSeconds); case TestSetupFields.LastModified: return a.LastModified.CompareTo(b.LastModified); case TestSetupFields.LastModifiedBy: return string.Compare(a.LastModifiedBy, b.LastModifiedBy, StringComparison.OrdinalIgnoreCase); case TestSetupFields.IsComplete: return a.IsComplete.CompareTo(b.IsComplete); } return a.GetHashCode().CompareTo(b.GetHashCode()); } } }