@Test
public void testMatching()
{
MediaTypeMap<String> map = new MediaTypeMap<String>();
String defaultPlainText = "defaultPlainText";
map.add(new MediaType("text", "plain"), defaultPlainText);
String jaxb = "jaxb";
map.add(new MediaType("text", "xml"), jaxb);
String wildcard = "wildcard";
map.add(new MediaType("*", "*"), wildcard);
String allText = "allText";
map.add(new MediaType("text", "*"), allText);
String allXML = "allXML";
map.add(new MediaType("text", "*+xml"), allXML);
String app = "app";
map.add(new MediaType("application", "*"), app);
List<String> list = map.getPossible(new MediaType("text", "plain"));
Assert.assertNotNull(list);
Assert.assertEquals(3, list.size());
Assert.assertTrue(list.get(0) == defaultPlainText);
Assert.assertTrue(list.get(1) == allText);
Assert.assertTrue(list.get(2) == wildcard);
list = map.getPossible(new MediaType("*", "*"));
Assert.assertNotNull(list);
Assert.assertEquals(6, list.size());
Assert.assertTrue(list.get(0), list.get(0) == defaultPlainText || list.get(0) == jaxb);
Assert.assertTrue(list.get(1), list.get(1) == defaultPlainText || list.get(1) == jaxb);
Assert.assertTrue(list.get(2), list.get(2) == allXML);
Assert.assertTrue(list.get(3), list.get(3) == allText || list.get(3) == app);
Assert.assertTrue(list.get(4), list.get(4) == allText || list.get(4) == app);
Assert.assertTrue(list.get(5), list.get(5) == wildcard);
list = map.getPossible(new MediaType("text", "*"));
Assert.assertNotNull(list);
Assert.assertEquals(5, list.size());
Assert.assertTrue(list.get(0), list.get(0) == defaultPlainText || list.get(0) == jaxb);
Assert.assertTrue(list.get(1), list.get(1) == defaultPlainText || list.get(1) == jaxb);
Assert.assertTrue(list.get(2), list.get(2) == allXML);
Assert.assertTrue(list.get(3), list.get(3) == allText);
Assert.assertTrue(list.get(4), list.get(4) == wildcard);
list = map.getPossible(new MediaType("text", "xml"));
Assert.assertNotNull(list);
Assert.assertEquals(4, list.size());
Assert.assertTrue(list.get(0) == jaxb);
Assert.assertTrue(list.get(1) == allXML);
Assert.assertTrue(list.get(2) == allText);