package org.jboss.resteasy.test.util;
import org.junit.Assert;
import org.junit.Test;
import javax.ws.rs.core.MultivaluedHashMap;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
import java.util.List;
import java.util.Vector;
/**
* @tpSubChapter Util tests
* @tpChapter Unit tests
* @tpTestCaseDetails Test for javax.ws.rs.core.MultivaluedMap class
* and javax.ws.rs.core.MultivaluedHashMap.
* @tpSince RESTEasy 3.0.16
*/
public class MultivaluedMapTest {
/**
* @tpTestDetails Check map order, size and compare with other objects.
* @tpSince RESTEasy 3.0.16
*/
@Test
public void testEdge() {
String defaultErrMsg = "MultivaluedMap works incorrectly";
String hashErrMsg = "MultivaluedHashMap works incorrectly";
MultivaluedMap<String, Object> map;
Vector<Response> vec;
final String[] KEYS = {"key0", "key1", "key2"};
Response r = Response.ok().build();
map = r.getMetadata();
vec = new Vector<>();
vec.add(r);
map.add(KEYS[0], this);
map.add(null, vec);
map.add(null, this);
List<Object> objects = map.get(null);
Assert.assertTrue(defaultErrMsg, objects.size() == 2);
Assert.assertTrue(defaultErrMsg, map.size() == 2);
Assert.assertTrue(defaultErrMsg, map.getFirst(null).getClass() == Vector.class);
map = Response.ok().build().getMetadata();
Object o1 = new StringBuilder().append(KEYS[0]);
Object o2 = new StringBuffer().append(KEYS[1]);
Object o3 = new Object() {
@Override
public String toString() {
return KEYS[2];
}
};
map.add(KEYS[0], o1);
map.add(KEYS[0], o2);
map.add(KEYS[0], o3);
MultivaluedHashMap<String, Object> map2 = new MultivaluedHashMap<String, Object>();
map2.addAll(KEYS[0], o3, o1, o2);
Assert.assertTrue(hashErrMsg, map.equalsIgnoreValueOrder(map2));
Assert.assertFalse(hashErrMsg, map.equals(map2));
}
}