@Test
public void testEntityTag() throws Exception {
String[] tags = {"hello", "\"hello\"", "W/\"hello\"", "*"};
EntityTag[] etags = new EntityTag[tags.length];
for (int n = 0; n < tags.length; n++) {
etags[n] = new EntityTag(tags[n]);
}
assertFalse(etags[0].isWeak());
assertFalse(etags[0].isWild());
assertFalse(etags[1].isWeak());
assertFalse(etags[1].isWild());
assertTrue(etags[2].isWeak());
assertFalse(etags[2].isWild());
assertFalse(etags[3].isWeak());
assertTrue(etags[3].isWild());
assertEquals("hello", etags[0].getTag());
assertEquals("hello", etags[1].getTag());
assertEquals("hello", etags[2].getTag());
assertEquals("*", etags[3].getTag());
assertEquals(tags[1], etags[0].toString());
assertEquals(tags[1], etags[1].toString());
assertEquals(tags[2], etags[2].toString());
assertEquals(tags[3], etags[3].toString());
assertTrue(EntityTag.matches(etags[3], etags[0]));
assertTrue(EntityTag.matches(etags[3], etags[1]));
assertTrue(EntityTag.matches(etags[3], etags[2]));
assertTrue(EntityTag.matches(etags[3], etags[3]));
assertTrue(EntityTag.matches(etags[0], etags[1]));
assertFalse(EntityTag.matches(etags[0], etags[2]));
assertTrue(EntityTag.matchesAny(etags[3], new EntityTag[] {etags[0], etags[1], etags[2]}));
assertTrue(EntityTag.matchesAny(etags[0], new EntityTag[] {etags[3], etags[1], etags[2]}));
assertTrue(EntityTag.matchesAny(etags[1], new EntityTag[] {etags[0], etags[3], etags[2]}));
assertTrue(EntityTag.matchesAny(etags[2], new EntityTag[] {etags[0], etags[1], etags[3]}));
java.util.Arrays.sort(etags);
assertEquals(tags[3], etags[0].toString());
assertEquals(tags[1], etags[1].toString());
assertEquals(tags[1], etags[2].toString());
assertEquals(tags[2], etags[3].toString());
EntityTag etag = EntityTag.generate("a", "b", "c", "d");
assertEquals("\"e2fc714c4727ee9395f324cd2e7f331f\"", etag.toString());
}