package io.dropwizard.metrics; import static org.assertj.core.api.Assertions.assertThat; import org.junit.Test; import io.dropwizard.metrics.MetricName; import java.util.HashMap; import java.util.Map; public class MetricNameTest { @Test public void testEmpty() throws Exception { assertThat(MetricName.EMPTY.getTags()).isEqualTo(MetricName.EMPTY_TAGS); assertThat(MetricName.EMPTY.getKey()).isEqualTo(null); assertThat(new MetricName().getTags()).isEqualTo(MetricName.EMPTY_TAGS); assertThat(MetricName.EMPTY).isEqualTo(new MetricName()); assertThat(MetricName.build()).isEqualTo(MetricName.EMPTY); assertThat(MetricName.EMPTY.resolve(null)).isEqualTo(MetricName.EMPTY); } @Test public void testEmptyResolve() throws Exception { final MetricName name = new MetricName(); assertThat(name.resolve("foo")).isEqualTo(new MetricName("foo")); } @Test public void testResolveToEmpty() throws Exception { final MetricName name = new MetricName("foo"); assertThat(name.resolve(null)).isEqualTo(new MetricName("foo")); } @Test public void testResolve() throws Exception { final MetricName name = new MetricName("foo"); assertThat(name.resolve("bar")).isEqualTo(new MetricName("foo.bar")); } @Test public void testResolveBothEmpty() throws Exception { final MetricName name = new MetricName(null); assertThat(name.resolve(null)).isEqualTo(new MetricName()); } @Test public void testAddTagsVarious() { final Map<String, String> refTags = new HashMap<>(); refTags.put("foo", "bar"); final MetricName test = MetricName.EMPTY.tagged("foo", "bar"); final MetricName test2 = MetricName.EMPTY.tagged(refTags); assertThat(test).isEqualTo(new MetricName(null, refTags)); assertThat(test.getTags()).isEqualTo(refTags); assertThat(test2).isEqualTo(new MetricName(null, refTags)); assertThat(test2.getTags()).isEqualTo(refTags); } @Test public void testTaggedMoreArguments() { final Map<String, String> refTags = new HashMap<>(); refTags.put("foo", "bar"); refTags.put("baz", "biz"); assertThat(MetricName.EMPTY.tagged("foo", "bar", "baz", "biz").getTags()).isEqualTo(refTags); } @Test(expected=IllegalArgumentException.class) public void testTaggedNotPairs() { MetricName.EMPTY.tagged("foo"); } @Test(expected=IllegalArgumentException.class) public void testTaggedNotPairs2() { MetricName.EMPTY.tagged("foo", "bar", "baz"); } @Test public void testCompareTo() { final MetricName a = MetricName.EMPTY.tagged("foo", "bar"); final MetricName b = MetricName.EMPTY.tagged("foo", "baz"); assertThat(a.compareTo(b)).isLessThan(0); assertThat(b.compareTo(a)).isGreaterThan(0); assertThat(b.resolve("key").compareTo(b)).isLessThan(0); assertThat(b.compareTo(b.resolve("key"))).isGreaterThan(0); } }