@Test public void sortBySpecificityRelated() { MediaType audioBasic = new MediaType("audio", "basic"); MediaType audio = new MediaType("audio"); MediaType audio03 = new MediaType("audio", "*", 0.3); MediaType audio07 = new MediaType("audio", "*", 0.7); MediaType audioBasicLevel = new MediaType("audio", "basic", Collections.singletonMap("level", "1")); MediaType all = MediaType.ALL; List<MediaType> expected = new ArrayList<MediaType>(); expected.add(audioBasicLevel); expected.add(audioBasic); expected.add(audio); expected.add(audio07); expected.add(audio03); expected.add(all); List<MediaType> result = new ArrayList<MediaType>(expected); Random rnd = new Random(); // shuffle & sort 10 times for (int i = 0; i < 10; i++) { Collections.shuffle(result, rnd); MediaType.sortBySpecificity(result); for (int j = 0; j < result.size(); j++) { assertSame("Invalid media type at " + j, expected.get(j), result.get(j)); } } }
@Test public void sortByQualityUnrelated() { MediaType audioBasic = new MediaType("audio", "basic"); MediaType audioWave = new MediaType("audio", "wave"); MediaType textHtml = new MediaType("text", "html"); List<MediaType> expected = new ArrayList<MediaType>(); expected.add(textHtml); expected.add(audioBasic); expected.add(audioWave); List<MediaType> result = new ArrayList<MediaType>(expected); MediaType.sortBySpecificity(result); for (int i = 0; i < result.size(); i++) { assertSame("Invalid media type at " + i, expected.get(i), result.get(i)); } }