package com.vtence.molecule.http; import org.junit.Test; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.equalTo; public class HeaderTest { @SuppressWarnings("unchecked") @Test public void parsesAndSortsValuesInQualityOrder() { Header header = new Header("foo; q=0.5, bar, baz; q=0.9, qux, *; q=0"); assertThat("header", header.toString(), equalTo("bar, qux, baz; q=0.9, foo; q=0.5, *; q=0")); } @Test public void parsesParametersAsAttributeValuePairs() { Header header = new Header("foo; q=0.5; bar; baz= ; qux"); assertThat("header", header.toString(), equalTo("foo; q=0.5; bar; baz; qux")); } @SuppressWarnings("unchecked") @Test public void ignoresLeadingAndTrailingWhitespace() { Header header = new Header(" foo, bar ; q = 0.9 "); assertThat("header", header.toString(), equalTo("foo, bar; q=0.9")); } @SuppressWarnings("unchecked") @Test public void recognizesQuotedStringsInValues() { Header header = new Header("\"foo, bar\"; q=0.8, baz, \"qux; q=0.6\"; q=0.6"); assertThat("header", header.toString(), equalTo("baz, \"foo, bar\"; q=0.8, \"qux; q=0.6\"; q=0.6")); } @SuppressWarnings("unchecked") @Test public void recognizesQuotedStringsInParameters() { Header header = new Header("foo; q=0.8, bar; \"q=0.5\"; \", baz; q=0.8\""); assertThat("header", header.toString(), equalTo("bar; \"q=0.5\"; \", baz; q=0.8\", foo; q=0.8")); } @SuppressWarnings("unchecked") @Test public void listAcceptableValues() { Header header = new Header("foo, bar; q=0.8, baz, qux; q=0"); assertThat("acceptable values", header.values(), contains("foo", "baz", "bar")); } @SuppressWarnings("unchecked") @Test public void ignoresQualityIfNotFirstParameterOrNotANumber() { Header header = new Header("foo; bar; q=0, baz; q=0.8, qux; q=_"); assertThat("acceptable values", header.values(), contains("foo", "qux", "baz")); } }