package io.pcp.parfait.dxm;
import org.junit.Test;
import static org.junit.Assert.*;
public class MetricNameTest {
@Test(expected = IllegalArgumentException.class)
public void testCannotParseWithTrailingDot() {
MetricName.parse("a..");
}
@Test(expected = IllegalArgumentException.class)
public void testCannotParseWithDoubleDot() {
MetricName.parse("a..b");
}
@Test(expected = IllegalArgumentException.class)
public void testCannotParseWithLeadingDot() {
MetricName.parse(".a");
}
@Test
public void testCanParseWithSingleSegment() {
assertMetricNameMatches(MetricName.parse("a"), "a", null, "a");
}
@Test
public void testCanParseWithMultipleSegments() {
assertMetricNameMatches(MetricName.parse("a.b"), "a.b", null, "a.b");
}
@Test
public void testCanParseWithInstance() {
assertMetricNameMatches(MetricName.parse("a[x].b"), "a.b", "x", "a");
}
@Test
public void testCanParseWithInstanceAtEnd() {
assertMetricNameMatches(MetricName.parse("a.b[x]"), "a.b", "x", "a.b");
}
@Test(expected = IllegalArgumentException.class)
public void testCannotParseWithTwoInstances() {
MetricName.parse("a[x].b[x]");
}
@Test(expected = IllegalArgumentException.class)
public void testCannotParseWithHalfAnInstance() {
MetricName.parse("a[x.b");
}
@Test
public void testCanParseWithUnderscores() {
assertMetricNameMatches(MetricName.parse("a._b_"), "a._b_", null, "a._b_");
}
private void assertMetricNameMatches(MetricName parsedName, String expectedMetric,
String expectedInstance, String expectedInstanceDomain) {
assertEquals(expectedMetric, parsedName.getMetric());
assertEquals(expectedInstance, parsedName.getInstance());
assertEquals(expectedInstanceDomain, parsedName.getInstanceDomainTag());
}
}