package org.jboss.resteasy.test.request; import org.jboss.resteasy.core.request.AcceptHeaders; import org.jboss.resteasy.core.request.QualityValue; import org.junit.Test; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Locale; import java.util.Map; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; /** * @tpSubChapter Requests * @tpChapter Unit tests * @tpTestCaseDetails Test for AcceptHeaders and QualityValue classes, local value. * @tpSince RESTEasy 3.0.16 */ public class LocaleQualityValueTest { private static void assertList(String header, Locale[] fields, QualityValue[] qualities) { Map<Locale, QualityValue> map = AcceptHeaders.getLocaleQualityValues(header); List<Locale> expectedKeys = Arrays.asList(fields); List<QualityValue> expectedValues = Arrays.asList(qualities); assertEquals("Wrong keys in map", expectedKeys, new ArrayList<>(map.keySet())); assertEquals("Wrong values in map", expectedValues, new ArrayList<>(map.values())); } /** * @tpTestDetails Test for simple values. * @tpSince RESTEasy 3.0.16 */ @Test public void simple() { String header = "da, en-gb;q=0.8, en;q=0.7"; Locale[] locales = { new Locale("da"), Locale.UK, Locale.ENGLISH }; QualityValue[] fields = { QualityValue.DEFAULT, QualityValue.valueOf("0.8"), QualityValue.valueOf("0.7"), }; assertList(header, locales, fields); } /** * @tpTestDetails Test for chinese localization. * @tpSince RESTEasy 3.0.16 */ @Test public void chineseLocalization() { String header = "zh, *"; Locale[] fields = {Locale.CHINESE, null}; QualityValue[] qualities = { QualityValue.DEFAULT, QualityValue.DEFAULT }; assertList(header, fields, qualities); } /** * @tpTestDetails Test for english localization and default value. * @tpSince RESTEasy 3.0.16 */ @Test public void undefined() { String header = "en, en-US, en-cockney, i-cherokee, x-pig-latin"; Locale[] fields = {Locale.ENGLISH, Locale.US}; QualityValue[] qualities = { QualityValue.DEFAULT, QualityValue.DEFAULT }; assertList(header, fields, qualities); } /** * @tpTestDetails Test empty quality values. * @tpSince RESTEasy 3.0.16 */ @Test public void empty() { final String ERROR_MSG = "Local quality values should not be null"; assertNull(ERROR_MSG, AcceptHeaders.getLocaleQualityValues(null)); assertNull(ERROR_MSG, AcceptHeaders.getLocaleQualityValues("")); assertNull(ERROR_MSG, AcceptHeaders.getLocaleQualityValues(" ")); } }