public EvaluationResult evaluate(Condition condition, Measure measure) {
    checkArgument(SUPPORTED_METRIC_TYPE.contains(condition.getMetric().getType()), "Conditions on MetricType %s are not supported", condition.getMetric().getType());

    Comparable measureComparable = parseMeasure(measure);
    if (measureComparable == null) {
      return new EvaluationResult(Measure.Level.OK, null);
    }

    return evaluateCondition(condition, measureComparable)
      .orElseGet(() -> new EvaluationResult(Measure.Level.OK, measureComparable));
  }
@Test
  @UseDataProvider("unsupportedMetricTypes")
  public void fail_when_metric_is_not_supported(MetricType metricType) {
    Metric metric = createMetric(metricType);
    Measure measure = newMeasureBuilder().create("3.14159265358");

    assertThatThrownBy(() -> underTest.evaluate(createCondition(metric, LESS_THAN, "1.60217657"), measure))
      .isInstanceOf(IllegalArgumentException.class)
      .hasMessage(String.format("Conditions on MetricType %s are not supported", metricType));
  }