blob: 0825ec159a1afabeb6214d9503968845e642b9b6 [file] [log] [blame]
// ***************************************************************************************************************************
// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file *
// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file *
// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance *
// * with the License. You may obtain a copy of the License at *
// * *
// * http://www.apache.org/licenses/LICENSE-2.0 *
// * *
// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an *
// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the *
// * specific language governing permissions and limitations under the License. *
// ***************************************************************************************************************************
package org.apache.juneau.http;
import static org.apache.juneau.assertions.Assertions.*;
import static org.junit.Assert.*;
import static org.junit.runners.MethodSorters.*;
import java.util.*;
import java.util.function.*;
import org.apache.http.*;
import org.apache.juneau.collections.*;
import org.apache.juneau.utils.*;
import org.junit.*;
@FixMethodOrder(NAME_ASCENDING)
public class BasicHeader_Test {
@Test
public void a01_ofPair() {
BasicHeader x = BasicHeader.ofPair("Foo:bar");
assertEquals("Foo", x.getName());
assertEquals("bar", x.getValue());
x = BasicHeader.ofPair(" Foo : bar ");
assertEquals("Foo", x.getName());
assertEquals("bar", x.getValue());
x = BasicHeader.ofPair(" Foo : bar : baz ");
assertEquals("Foo", x.getName());
assertEquals("bar : baz", x.getValue());
x = BasicHeader.ofPair("Foo");
assertEquals("Foo", x.getName());
assertEquals("", x.getValue());
assertNull(BasicHeader.ofPair((String)null));
}
@Test
public void a02_of() {
BasicHeader x;
x = header("Foo","bar");
assertObject(x).json().is("'Foo: bar'");
x = header("Foo",()->"bar");
assertObject(x).json().is("'Foo: bar'");
}
@Test
public void a03_cast() {
BasicNameValuePair x1 = pair("X1","1");
SerializedNameValuePair x2 = SerializedNameValuePair.of("X2","2");
Header x3 = header("X3","3");
SerializedHeader x4 = SerializedHeader.of("X4","4");
Map.Entry<String,Object> x5 = AMap.of("X5",(Object)"5").entrySet().iterator().next();
org.apache.http.message.BasicNameValuePair x6 = new org.apache.http.message.BasicNameValuePair("X6","6");
NameValuePairable x7 = new NameValuePairable() {
@Override
public NameValuePair asNameValuePair() {
return pair("X7","7");
}
};
Headerable x8 = new Headerable() {
@Override
public Header asHeader() {
return header("X8","8");
}
};
SerializedNameValuePair x9 = SerializedNameValuePair.of("X9",()->"9");
assertObject(BasicHeader.cast(x1)).isType(Header.class).json().is("'X1: 1'");
assertObject(BasicHeader.cast(x2)).isType(Header.class).json().is("'X2: 2'");
assertObject(BasicHeader.cast(x3)).isType(Header.class).json().is("'X3: 3'");
assertObject(BasicHeader.cast(x4)).isType(Header.class).json().is("'X4: 4'");
assertObject(BasicHeader.cast(x5)).isType(Header.class).json().is("'X5: 5'");
assertObject(BasicHeader.cast(x6)).isType(Header.class).json().is("'X6: 6'");
assertObject(BasicHeader.cast(x7)).isType(Header.class).json().is("'X7: 7'");
assertObject(BasicHeader.cast(x8)).isType(Header.class).json().is("'X8: 8'");
assertObject(BasicHeader.cast(x9)).isType(Header.class).json().is("'X9: 9'");
assertThrown(()->BasicHeader.cast("X")).is("Object of type java.lang.String could not be converted to a Header.");
assertThrown(()->BasicHeader.cast(null)).is("Object of type null could not be converted to a Header.");
assertTrue(BasicHeader.canCast(x1));
assertTrue(BasicHeader.canCast(x2));
assertTrue(BasicHeader.canCast(x3));
assertTrue(BasicHeader.canCast(x4));
assertTrue(BasicHeader.canCast(x5));
assertTrue(BasicHeader.canCast(x6));
assertTrue(BasicHeader.canCast(x7));
assertTrue(BasicHeader.canCast(x8));
assertTrue(BasicHeader.canCast(x9));
assertFalse(BasicHeader.canCast("X"));
assertFalse(BasicHeader.canCast(null));
}
@Test
public void a05_assertions() {
BasicHeader x = header("X1","1");
x.assertName().is("X1").assertValue().is("1");
}
@Test
public void a07_eqIC() {
BasicHeader x = header("X1","1");
assertTrue(x.eqIC("1"));
assertFalse(x.eqIC("2"));
assertFalse(x.eqIC(null));
}
@Test
public void a08_getElements() {
Mutable<Integer> m = Mutable.of(1);
Header h1 = header("X1","1");
Header h2 = header("X2",()->m);
Header h3 = header("X3",null);
HeaderElement[] x;
x = h1.getElements();
assertEquals(1, x.length);
assertEquals("1", x[0].getName());
x = h1.getElements();
assertEquals(1, x.length);
assertEquals("1", x[0].getName());
x = h2.getElements();
assertEquals(1, x.length);
assertEquals("1", x[0].getName());
m.set(2);
x = h2.getElements();
assertEquals(1, x.length);
assertEquals("2", x[0].getName());
x = h3.getElements();
assertEquals(0, x.length);
}
@SuppressWarnings("unlikely-arg-type")
@Test
public void a09_equals() {
BasicHeader h1 = header("Foo","bar"), h2 = header("Foo","bar"), h3 = header("Bar","bar"), h4 = header("Foo","baz");
assertInteger(h1.hashCode()).exists();
assertBoolean(h1.equals(h2)).isTrue();
assertBoolean(h1.equals(h3)).isFalse();
assertBoolean(h1.equals(h4)).isFalse();
assertBoolean(h1.equals("foo")).isFalse();
}
//------------------------------------------------------------------------------------------------------------------
// Utility methods
//------------------------------------------------------------------------------------------------------------------
private BasicHeader header(String name, Object val) {
return BasicHeader.of(name, val);
}
private BasicHeader header(String name, Supplier<?> val) {
return BasicHeader.of(name, val);
}
private BasicNameValuePair pair(String name, Object val) {
return BasicNameValuePair.of(name, val);
}
}