package io.dropwizard.metrics; import org.junit.Test; import io.dropwizard.metrics.RatioGauge; import static org.assertj.core.api.Assertions.assertThat; public class RatioGaugeTest { @Test public void ratiosAreHumanReadable() throws Exception { final RatioGauge.Ratio ratio = RatioGauge.Ratio.of(100, 200); assertThat(ratio.toString()) .isEqualTo("100.0:200.0"); } @Test public void calculatesTheRatioOfTheNumeratorToTheDenominator() throws Exception { final RatioGauge regular = new RatioGauge() { @Override protected Ratio getRatio() { return RatioGauge.Ratio.of(2, 4); } }; assertThat(regular.getValue()) .isEqualTo(0.5); } @Test public void handlesDivideByZeroIssues() throws Exception { final RatioGauge divByZero = new RatioGauge() { @Override protected Ratio getRatio() { return Ratio.of(100, 0); } }; assertThat(divByZero.getValue()) .isNaN(); } @Test public void handlesInfiniteDenominators() throws Exception { final RatioGauge infinite = new RatioGauge() { @Override protected Ratio getRatio() { return Ratio.of(10, Double.POSITIVE_INFINITY); } }; assertThat(infinite.getValue()) .isNaN(); } @Test public void handlesNaNDenominators() throws Exception { final RatioGauge nan = new RatioGauge() { @Override protected Ratio getRatio() { return Ratio.of(10, Double.NaN); } }; assertThat(nan.getValue()) .isNaN(); } }