protected bool TestCondition(ISemanticVersion reference) { var result = reference.CompareTo(Comparand); switch (Comparator) { case Comparator.Equal: return(result == 0); case Comparator.NotEqual: return(result != 0); case Comparator.GreaterThan: return(result > 0); case Comparator.GreaterThanOrEqual: return(result >= 0); case Comparator.LessThan: return(result < 0); case Comparator.LessThanOrEqual: return(result <= 0); default: throw new InvalidOperationException($"Unknown comparator: '{Comparator}'"); } }