-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathComparisionOperator.cs
54 lines (50 loc) · 1.79 KB
/
ComparisionOperator.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using System;
using Microsoft.TeamFoundation.WorkItemTracking.Client;
namespace TFSAggregator
{
public enum ComparisionOperator
{
LessThan,
GreaterThan,
LessThanOrEqualTo,
GreaterThanOrEqualTo,
EqualTo,
NotEqualTo
}
public static class ComparisonHelper
{
// Only equal is supported for strings.
public static bool Compare(this ComparisionOperator oper, string leftSide, string rightSide)
{
switch (oper)
{
case ComparisionOperator.EqualTo:
return leftSide == rightSide;
case ComparisionOperator.NotEqualTo:
return leftSide != rightSide;
default:
return leftSide == rightSide;
}
}
public static bool Compare<T>(this ComparisionOperator oper, T leftSide, T rightSide) where T : IComparable<T>
{
switch (oper)
{
case ComparisionOperator.LessThan:
return leftSide.CompareTo(rightSide) < 0;
case ComparisionOperator.GreaterThan:
return leftSide.CompareTo(rightSide) > 0;
case ComparisionOperator.LessThanOrEqualTo:
return leftSide.CompareTo(rightSide) <= 0;
case ComparisionOperator.GreaterThanOrEqualTo:
return leftSide.CompareTo(rightSide) >= 0;
case ComparisionOperator.EqualTo:
return leftSide.CompareTo(rightSide) == 0;
case ComparisionOperator.NotEqualTo:
return leftSide.CompareTo(rightSide) != 0;
default:
throw new ArgumentOutOfRangeException("oper");
}
}
}
}