package net.opentsdb.query.filter; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.HashMap; import java.util.Map; import org.junit.Before; import org.junit.Test; public class TestTagVLiteralOrFilter { private static final String TAGK = "host"; private Map<String, String> tags; @Before public void before() throws Exception { tags = new HashMap<String, String>(1); tags.put(TAGK, "CMTDibbler"); } @Test public void matchMiddle() throws Exception { TagVFilter filter = new TagVLiteralOrFilter(TAGK, "LutZe|CMTDibbler|Slant"); assertTrue(filter.match(tags).join()); assertFalse(((TagVLiteralOrFilter)filter).isCaseInsensitive()); } @Test public void matchStart() throws Exception { TagVFilter filter = new TagVLiteralOrFilter(TAGK, "CMTDibbler|LutZe|Slant"); assertTrue(filter.match(tags).join()); } @Test public void matchEnd() throws Exception { TagVFilter filter = new TagVLiteralOrFilter(TAGK, "LutZe|Slant|CMTDibbler"); assertTrue(filter.match(tags).join()); } @Test public void matchNoPipes() throws Exception { TagVFilter filter = new TagVLiteralOrFilter(TAGK, "CMTDibbler"); assertTrue(filter.match(tags).join()); } @Test public void matchPipeNoValueAfter() throws Exception { TagVFilter filter = new TagVLiteralOrFilter(TAGK, "CMTDibbler|"); assertTrue(filter.match(tags).join()); } @Test public void matchPipeNoValueBefore() throws Exception { TagVFilter filter = new TagVLiteralOrFilter(TAGK, "|CMTDibbler"); assertTrue(filter.match(tags).join()); } @Test public void matchFail() throws Exception { TagVFilter filter = new TagVLiteralOrFilter(TAGK, "LutZe|Keli|Slant"); assertFalse(filter.match(tags).join()); } @Test public void matchFailCase() throws Exception { TagVFilter filter = new TagVLiteralOrFilter(TAGK, "LutZe|CMtDibbler|Slant"); assertFalse(filter.match(tags).join()); } @Test public void matchCaseInsensitive() throws Exception { TagVFilter filter = new TagVLiteralOrFilter(TAGK, "LutZe|CMtDibbler|Slant", true); assertTrue(filter.match(tags).join()); assertTrue(((TagVLiteralOrFilter)filter).isCaseInsensitive()); } @Test public void matchCaseInsensitiveValue() throws Exception { tags.put(TAGK, "CMTDIBBLER"); TagVFilter filter = new TagVLiteralOrFilter(TAGK, "LutZe|CMtDibbler|Slant", true); assertTrue(filter.match(tags).join()); assertTrue(((TagVLiteralOrFilter)filter).isCaseInsensitive()); } @Test public void matchCaseInsensitiveFail() throws Exception { TagVFilter filter = new TagVLiteralOrFilter(TAGK, "LutZe|CMtDibble|Slant", true); assertFalse(filter.match(tags).join()); assertTrue(((TagVLiteralOrFilter)filter).isCaseInsensitive()); } @Test public void matchNoSuchTagk() throws Exception { TagVFilter filter = new TagVLiteralOrFilter(TAGK, "LutZe|Keli|Slant"); tags.clear(); tags.put("colo", "lga"); assertFalse(filter.match(tags).join()); } @Test public void matchNoSuchTagkCaseInsensitive() throws Exception { TagVFilter filter = new TagVLiteralOrFilter(TAGK, "LutZe|Keli|Slant", true); tags.clear(); tags.put("colo", "lga"); assertFalse(filter.match(tags).join()); } @Test public void matchSingle() throws Exception { TagVFilter filter = new TagVLiteralOrFilter(TAGK, "CMTDibbler"); assertTrue(filter.match(tags).join()); assertFalse(((TagVLiteralOrFilter)filter).isCaseInsensitive()); } @Test public void matchSingleCaseInsensitive() throws Exception { TagVFilter filter = new TagVLiteralOrFilter(TAGK, "cmtDibbler", true); assertTrue(filter.match(tags).join()); assertTrue(((TagVLiteralOrFilter)filter).isCaseInsensitive()); } @Test (expected = IllegalArgumentException.class) public void ctorNullTagk() throws Exception { new TagVLiteralOrFilter(null, "LutZe|Keli|Slant"); } @Test (expected = IllegalArgumentException.class) public void ctorEmptyTagk() throws Exception { new TagVLiteralOrFilter("", "LutZe|Keli|Slant"); } @Test (expected = IllegalArgumentException.class) public void ctorNullFilter() throws Exception { new TagVLiteralOrFilter(TAGK, null); } @Test (expected = IllegalArgumentException.class) public void ctorEmptyFilter() throws Exception { new TagVLiteralOrFilter(TAGK, ""); } @Test (expected = IllegalArgumentException.class) public void ctorJustAPipe() throws Exception { new TagVLiteralOrFilter(TAGK, "|"); } @Test public void toStringTest() throws Exception { TagVFilter filter = new TagVLiteralOrFilter(TAGK, "LutZe|CMTDibbler|Slant"); assertTrue(filter.toString().contains("literal_or")); } @Test public void hashCodeAndEqualsTest() throws Exception { TagVFilter filter_a = new TagVLiteralOrFilter(TAGK, "LutZe|CMTDibbler|Slant"); TagVFilter filter_b = new TagVLiteralOrFilter(TAGK, "LutZe|CMTDibbler|Slant"); TagVFilter filter_c = new TagVLiteralOrFilter(TAGK, "LutZe|Slant"); TagVFilter filter_d = new TagVLiteralOrFilter(TAGK, "LutZe|cmtdibbler|Slant"); assertEquals(filter_a.hashCode(), filter_b.hashCode()); assertFalse(filter_a.hashCode() == filter_c.hashCode()); assertFalse(filter_a.hashCode() == filter_d.hashCode()); assertEquals(filter_a, filter_b); assertFalse(filter_a.equals(filter_c)); assertFalse(filter_a.equals(filter_d)); } }