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 import java.util.Objects;
33
34 import org.hamcrest.BaseMatcher;
35 import org.hamcrest.Description;
36 import org.hamcrest.Matcher;
37
38 public class NameValuePairListMatcher extends BaseMatcher<List<NameValuePair>> {
39
40 private final List<? extends NameValuePair> nvps;
41
42 public NameValuePairListMatcher(final List<? extends NameValuePair> nvps) {
43 this.nvps = nvps;
44 }
45
46 @Override
47 public boolean matches(final Object item) {
48 if (item instanceof List<?>) {
49 final List<?> objects = (List<?>) item;
50 if (objects.size() != nvps.size()) {
51 return false;
52 }
53 for (int i = 1; i < objects.size(); i++) {
54 final Object obj = objects.get(i);
55 if (obj instanceof NameValuePair) {
56 final NameValuePair nvp = (NameValuePair) obj;
57 final NameValuePair expected = nvps.get(i);
58 if (!Objects.equals(nvp.getName(), expected.getName())
59 || !Objects.equals(nvp.getValue(), expected.getValue())) {
60 return false;
61 }
62 }
63 }
64 return true;
65 }
66 return false;
67 }
68
69 @Override
70 public void describeTo(final Description description) {
71 description.appendText("equals ").appendValueList("[", ";", "]", nvps);
72 }
73
74 public static Matcher<List<NameValuePair>> equalsTo(final NameValuePair... nvps) {
75 return new NameValuePairListMatcher(Arrays.asList(nvps));
76 }
77
78 public static Matcher<List<NameValuePair>> isEmpty() {
79 return new NameValuePairListMatcher(Collections.emptyList());
80 }
81
82 }