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.client5.http;
28
29 import java.util.ArrayList;
30 import java.util.Arrays;
31 import java.util.Collection;
32 import java.util.List;
33
34 import org.apache.hc.core5.http.NameValuePair;
35 import org.apache.hc.core5.util.LangUtils;
36 import org.hamcrest.BaseMatcher;
37 import org.hamcrest.Description;
38 import org.hamcrest.Factory;
39 import org.hamcrest.Matcher;
40
41 public class NameValuePairsMatcher extends BaseMatcher<Collection<? extends NameValuePair>> {
42
43 private final List<? extends NameValuePair> expectedNameValuePairList;
44
45 public NameValuePairsMatcher(final List<? extends NameValuePair> nameValuePairList) {
46 this.expectedNameValuePairList = nameValuePairList;
47 }
48
49 @Override
50 public boolean matches(final Object item) {
51 if (item instanceof Collection<?>) {
52 final Collection<?> collection = (Collection<?>) item;
53 if (collection.size() == collection.size()) {
54 int i = 0;
55 for (final Object obj : collection) {
56 if (obj instanceof NameValuePair) {
57 final NameValuePair nvp1 = (NameValuePair) obj;
58 final NameValuePair nvp2 = expectedNameValuePairList.get(i);
59 if (!nvp1.getName().equalsIgnoreCase(nvp2.getName())
60 || !LangUtils.equals(nvp1.getValue(), nvp2.getValue())) {
61 return false;
62 }
63 } else {
64 return false;
65 }
66 i++;
67 }
68 return true;
69 }
70 }
71 return false;
72 }
73
74 @Override
75 public void describeTo(final Description description) {
76 description.appendText("same name/value pairs as ").appendValueList("[", ", ", "]", expectedNameValuePairList);
77 }
78
79 @Factory
80 public static Matcher<Collection<? extends NameValuePair>> same(final Collection<? extends NameValuePair> nameValuePairs) {
81 return new NameValuePairsMatcher(new ArrayList<>(nameValuePairs));
82 }
83
84 @Factory
85 public static Matcher<Collection<? extends NameValuePair>> same(final NameValuePair... nameValuePairs) {
86 return new NameValuePairsMatcher(Arrays.asList(nameValuePairs));
87 }
88
89 }