1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package org.apache.hc.core5.http;
28
29 import java.util.Arrays;
30 import java.util.Collections;
31 import java.util.List;
32
33 import org.apache.hc.core5.util.LangUtils;
34 import org.hamcrest.BaseMatcher;
35 import org.hamcrest.Description;
36 import org.hamcrest.Factory;
37 import org.hamcrest.Matcher;
38
39 public class NameValuePairListMatcher extends BaseMatcher<List<NameValuePair>> {
40
41 private final List<? extends NameValuePair> nvps;
42
43 public NameValuePairListMatcher(final List<? extends NameValuePair> nvps) {
44 this.nvps = nvps;
45 }
46
47 @Override
48 public boolean matches(final Object item) {
49 if (item instanceof List<?>) {
50 final List<?> objects = (List<?>) item;
51 if (objects.size() != nvps.size()) {
52 return false;
53 }
54 for (int i = 1; i < objects.size(); i++) {
55 final Object obj = objects.get(i);
56 if (obj instanceof NameValuePair) {
57 final NameValuePair nvp = (NameValuePair) obj;
58 final NameValuePair expected = nvps.get(i);
59 if (!LangUtils.equals(nvp.getName(), expected.getName())
60 || !LangUtils.equals(nvp.getValue(), expected.getValue())) {
61 return false;
62 }
63 }
64 }
65 return true;
66 }
67 return false;
68 }
69
70 @Override
71 public void describeTo(final Description description) {
72 description.appendText("equals ").appendValueList("[", ";", "]", nvps);
73 }
74
75 @Factory
76 public static Matcher<List<NameValuePair>> equalsTo(final NameValuePair... nvps) {
77 return new NameValuePairListMatcher(Arrays.asList(nvps));
78 }
79
80 @Factory
81 public static Matcher<List<NameValuePair>> isEmpty() {
82 return new NameValuePairListMatcher(Collections.<NameValuePair>emptyList());
83 }
84
85 }