1package org.hamcrest;
2
3public class Matchers {
4
5  /**
6   * Creates a matcher that matches if the examined object matches <b>ALL</b> of the specified matchers.
7   * For example:
8   * <pre>assertThat("myValue", allOf(startsWith("my"), containsString("Val")))</pre>
9   */
10  public static <T> org.hamcrest.Matcher<T> allOf(java.lang.Iterable<org.hamcrest.Matcher<? super T>> matchers) {
11    return org.hamcrest.core.AllOf.<T>allOf(matchers);
12  }
13
14  /**
15   * Creates a matcher that matches if the examined object matches <b>ALL</b> of the specified matchers.
16   * For example:
17   * <pre>assertThat("myValue", allOf(startsWith("my"), containsString("Val")))</pre>
18   */
19  public static <T> org.hamcrest.Matcher<T> allOf(org.hamcrest.Matcher<? super T>... matchers) {
20    return org.hamcrest.core.AllOf.<T>allOf(matchers);
21  }
22
23  /**
24   * Creates a matcher that matches if the examined object matches <b>ALL</b> of the specified matchers.
25   * For example:
26   * <pre>assertThat("myValue", allOf(startsWith("my"), containsString("Val")))</pre>
27   */
28  public static <T> org.hamcrest.Matcher<T> allOf(org.hamcrest.Matcher<? super T> first, org.hamcrest.Matcher<? super T> second) {
29    return org.hamcrest.core.AllOf.<T>allOf(first, second);
30  }
31
32  /**
33   * Creates a matcher that matches if the examined object matches <b>ALL</b> of the specified matchers.
34   * For example:
35   * <pre>assertThat("myValue", allOf(startsWith("my"), containsString("Val")))</pre>
36   */
37  public static <T> org.hamcrest.Matcher<T> allOf(org.hamcrest.Matcher<? super T> first, org.hamcrest.Matcher<? super T> second, org.hamcrest.Matcher<? super T> third) {
38    return org.hamcrest.core.AllOf.<T>allOf(first, second, third);
39  }
40
41  /**
42   * Creates a matcher that matches if the examined object matches <b>ALL</b> of the specified matchers.
43   * For example:
44   * <pre>assertThat("myValue", allOf(startsWith("my"), containsString("Val")))</pre>
45   */
46  public static <T> org.hamcrest.Matcher<T> allOf(org.hamcrest.Matcher<? super T> first, org.hamcrest.Matcher<? super T> second, org.hamcrest.Matcher<? super T> third, org.hamcrest.Matcher<? super T> fourth) {
47    return org.hamcrest.core.AllOf.<T>allOf(first, second, third, fourth);
48  }
49
50  /**
51   * Creates a matcher that matches if the examined object matches <b>ALL</b> of the specified matchers.
52   * For example:
53   * <pre>assertThat("myValue", allOf(startsWith("my"), containsString("Val")))</pre>
54   */
55  public static <T> org.hamcrest.Matcher<T> allOf(org.hamcrest.Matcher<? super T> first, org.hamcrest.Matcher<? super T> second, org.hamcrest.Matcher<? super T> third, org.hamcrest.Matcher<? super T> fourth, org.hamcrest.Matcher<? super T> fifth) {
56    return org.hamcrest.core.AllOf.<T>allOf(first, second, third, fourth, fifth);
57  }
58
59  /**
60   * Creates a matcher that matches if the examined object matches <b>ALL</b> of the specified matchers.
61   * For example:
62   * <pre>assertThat("myValue", allOf(startsWith("my"), containsString("Val")))</pre>
63   */
64  public static <T> org.hamcrest.Matcher<T> allOf(org.hamcrest.Matcher<? super T> first, org.hamcrest.Matcher<? super T> second, org.hamcrest.Matcher<? super T> third, org.hamcrest.Matcher<? super T> fourth, org.hamcrest.Matcher<? super T> fifth, org.hamcrest.Matcher<? super T> sixth) {
65    return org.hamcrest.core.AllOf.<T>allOf(first, second, third, fourth, fifth, sixth);
66  }
67
68  /**
69   * Creates a matcher that matches if the examined object matches <b>ANY</b> of the specified matchers.
70   * For example:
71   * <pre>assertThat("myValue", anyOf(startsWith("foo"), containsString("Val")))</pre>
72   */
73  public static <T> org.hamcrest.core.AnyOf<T> anyOf(java.lang.Iterable<org.hamcrest.Matcher<? super T>> matchers) {
74    return org.hamcrest.core.AnyOf.<T>anyOf(matchers);
75  }
76
77  /**
78   * Creates a matcher that matches if the examined object matches <b>ANY</b> of the specified matchers.
79   * For example:
80   * <pre>assertThat("myValue", anyOf(startsWith("foo"), containsString("Val")))</pre>
81   */
82  public static <T> org.hamcrest.core.AnyOf<T> anyOf(org.hamcrest.Matcher<? super T>... matchers) {
83    return org.hamcrest.core.AnyOf.<T>anyOf(matchers);
84  }
85
86  /**
87   * Creates a matcher that matches if the examined object matches <b>ANY</b> of the specified matchers.
88   * For example:
89   * <pre>assertThat("myValue", anyOf(startsWith("foo"), containsString("Val")))</pre>
90   */
91  public static <T> org.hamcrest.core.AnyOf<T> anyOf(org.hamcrest.Matcher<T> first, org.hamcrest.Matcher<? super T> second) {
92    return org.hamcrest.core.AnyOf.<T>anyOf(first, second);
93  }
94
95  /**
96   * Creates a matcher that matches if the examined object matches <b>ANY</b> of the specified matchers.
97   * For example:
98   * <pre>assertThat("myValue", anyOf(startsWith("foo"), containsString("Val")))</pre>
99   */
100  public static <T> org.hamcrest.core.AnyOf<T> anyOf(org.hamcrest.Matcher<T> first, org.hamcrest.Matcher<? super T> second, org.hamcrest.Matcher<? super T> third) {
101    return org.hamcrest.core.AnyOf.<T>anyOf(first, second, third);
102  }
103
104  /**
105   * Creates a matcher that matches if the examined object matches <b>ANY</b> of the specified matchers.
106   * For example:
107   * <pre>assertThat("myValue", anyOf(startsWith("foo"), containsString("Val")))</pre>
108   */
109  public static <T> org.hamcrest.core.AnyOf<T> anyOf(org.hamcrest.Matcher<T> first, org.hamcrest.Matcher<? super T> second, org.hamcrest.Matcher<? super T> third, org.hamcrest.Matcher<? super T> fourth) {
110    return org.hamcrest.core.AnyOf.<T>anyOf(first, second, third, fourth);
111  }
112
113  /**
114   * Creates a matcher that matches if the examined object matches <b>ANY</b> of the specified matchers.
115   * For example:
116   * <pre>assertThat("myValue", anyOf(startsWith("foo"), containsString("Val")))</pre>
117   */
118  public static <T> org.hamcrest.core.AnyOf<T> anyOf(org.hamcrest.Matcher<T> first, org.hamcrest.Matcher<? super T> second, org.hamcrest.Matcher<? super T> third, org.hamcrest.Matcher<? super T> fourth, org.hamcrest.Matcher<? super T> fifth) {
119    return org.hamcrest.core.AnyOf.<T>anyOf(first, second, third, fourth, fifth);
120  }
121
122  /**
123   * Creates a matcher that matches if the examined object matches <b>ANY</b> of the specified matchers.
124   * For example:
125   * <pre>assertThat("myValue", anyOf(startsWith("foo"), containsString("Val")))</pre>
126   */
127  public static <T> org.hamcrest.core.AnyOf<T> anyOf(org.hamcrest.Matcher<T> first, org.hamcrest.Matcher<? super T> second, org.hamcrest.Matcher<? super T> third, org.hamcrest.Matcher<? super T> fourth, org.hamcrest.Matcher<? super T> fifth, org.hamcrest.Matcher<? super T> sixth) {
128    return org.hamcrest.core.AnyOf.<T>anyOf(first, second, third, fourth, fifth, sixth);
129  }
130
131  /**
132   * Creates a matcher that matches when both of the specified matchers match the examined object.
133   * For example:
134   * <pre>assertThat("fab", both(containsString("a")).and(containsString("b")))</pre>
135   */
136  public static <LHS> org.hamcrest.core.CombinableMatcher.CombinableBothMatcher<LHS> both(org.hamcrest.Matcher<? super LHS> matcher) {
137    return org.hamcrest.core.CombinableMatcher.<LHS>both(matcher);
138  }
139
140  /**
141   * Creates a matcher that matches when either of the specified matchers match the examined object.
142   * For example:
143   * <pre>assertThat("fan", either(containsString("a")).or(containsString("b")))</pre>
144   */
145  public static <LHS> org.hamcrest.core.CombinableMatcher.CombinableEitherMatcher<LHS> either(org.hamcrest.Matcher<? super LHS> matcher) {
146    return org.hamcrest.core.CombinableMatcher.<LHS>either(matcher);
147  }
148
149  /**
150   * Wraps an existing matcher, overriding its description with that specified.  All other functions are
151   * delegated to the decorated matcher, including its mismatch description.
152   * For example:
153   * <pre>describedAs("a big decimal equal to %0", equalTo(myBigDecimal), myBigDecimal.toPlainString())</pre>
154   *
155   * @param description
156   *     the new description for the wrapped matcher
157   * @param matcher
158   *     the matcher to wrap
159   * @param values
160   *     optional values to insert into the tokenised description
161   */
162  public static <T> org.hamcrest.Matcher<T> describedAs(java.lang.String description, org.hamcrest.Matcher<T> matcher, java.lang.Object... values) {
163    return org.hamcrest.core.DescribedAs.<T>describedAs(description, matcher, values);
164  }
165
166  /**
167   * Creates a matcher for {@link Iterable}s that only matches when a single pass over the
168   * examined {@link Iterable} yields items that are all matched by the specified
169   * <code>itemMatcher</code>.
170   * For example:
171   * <pre>assertThat(Arrays.asList("bar", "baz"), everyItem(startsWith("ba")))</pre>
172   *
173   * @param itemMatcher
174   *     the matcher to apply to every item provided by the examined {@link Iterable}
175   */
176  public static <U> org.hamcrest.Matcher<java.lang.Iterable<? extends U>> everyItem(org.hamcrest.Matcher<U> itemMatcher) {
177    return org.hamcrest.core.Every.<U>everyItem(itemMatcher);
178  }
179
180  /**
181   * Decorates another Matcher, retaining its behaviour, but allowing tests
182   * to be slightly more expressive.
183   * For example:
184   * <pre>assertThat(cheese, is(equalTo(smelly)))</pre>
185   * instead of:
186   * <pre>assertThat(cheese, equalTo(smelly))</pre>
187   */
188  public static <T> org.hamcrest.Matcher<T> is(org.hamcrest.Matcher<T> matcher) {
189    return org.hamcrest.core.Is.<T>is(matcher);
190  }
191
192  /**
193   * A shortcut to the frequently used <code>is(equalTo(x))</code>.
194   * For example:
195   * <pre>assertThat(cheese, is(smelly))</pre>
196   * instead of:
197   * <pre>assertThat(cheese, is(equalTo(smelly)))</pre>
198   */
199  public static <T> org.hamcrest.Matcher<T> is(T value) {
200    return org.hamcrest.core.Is.<T>is(value);
201  }
202
203  /**
204   * Provided to cause compile time error when used in preference to a possible runtime error if
205   * this was not here.
206   *
207   * <p>This method was removed upstream between Hamcrest 1.1 and 1.3 in favour of the
208   * instanceOf(Class) method. Unfortunately, existing usages of it could still compile against the
209   * {@link #is(Object)} method instead. Although not every existing usage would compile
210   * successfully it is possible that some could and that would result in a change in the runtime
211   * behavior that could be difficult to detect and fix. This change aims to turn any significant
212   * usage of this method into a compile time error.
213   *
214   * @deprecated Use instanceOf(SomeClass.class) instead.
215   */
216  public static void is(java.lang.Class<?> type) {
217  }
218
219  /**
220   * A shortcut to the frequently used <code>is(instanceOf(SomeClass.class))</code>.
221   * For example:
222   * <pre>assertThat(cheese, isA(Cheddar.class))</pre>
223   * instead of:
224   * <pre>assertThat(cheese, is(instanceOf(Cheddar.class)))</pre>
225   */
226  public static <T> org.hamcrest.Matcher<T> isA(java.lang.Class<T> type) {
227    return org.hamcrest.core.Is.<T>isA(type);
228  }
229
230  /**
231   * Creates a matcher that always matches, regardless of the examined object.
232   */
233  public static org.hamcrest.Matcher<java.lang.Object> anything() {
234    return org.hamcrest.core.IsAnything.anything();
235  }
236
237  /**
238   * Creates a matcher that always matches, regardless of the examined object, but describes
239   * itself with the specified {@link String}.
240   *
241   * @param description
242   *     a meaningful {@link String} used when describing itself
243   */
244  public static org.hamcrest.Matcher<java.lang.Object> anything(java.lang.String description) {
245    return org.hamcrest.core.IsAnything.anything(description);
246  }
247
248  /**
249   * Creates a matcher for {@link Iterable}s that only matches when a single pass over the
250   * examined {@link Iterable} yields at least one item that is matched by the specified
251   * <code>itemMatcher</code>.  Whilst matching, the traversal of the examined {@link Iterable}
252   * will stop as soon as a matching item is found.
253   * For example:
254   * <pre>assertThat(Arrays.asList("foo", "bar"), hasItem(startsWith("ba")))</pre>
255   *
256   * @param itemMatcher
257   *     the matcher to apply to items provided by the examined {@link Iterable}
258   */
259  public static <T> org.hamcrest.Matcher<java.lang.Iterable<? super T>> hasItem(org.hamcrest.Matcher<? super T> itemMatcher) {
260    return org.hamcrest.core.IsCollectionContaining.<T>hasItem(itemMatcher);
261  }
262
263  /**
264   * Creates a matcher for {@link Iterable}s that only matches when a single pass over the
265   * examined {@link Iterable} yields at least one item that is equal to the specified
266   * <code>item</code>.  Whilst matching, the traversal of the examined {@link Iterable}
267   * will stop as soon as a matching item is found.
268   * For example:
269   * <pre>assertThat(Arrays.asList("foo", "bar"), hasItem("bar"))</pre>
270   *
271   * @param item
272   *     the item to compare against the items provided by the examined {@link Iterable}
273   */
274  public static <T> org.hamcrest.Matcher<java.lang.Iterable<? super T>> hasItem(T item) {
275    return org.hamcrest.core.IsCollectionContaining.<T>hasItem(item);
276  }
277
278  /**
279   * Creates a matcher for {@link Iterable}s that matches when consecutive passes over the
280   * examined {@link Iterable} yield at least one item that is matched by the corresponding
281   * matcher from the specified <code>itemMatchers</code>.  Whilst matching, each traversal of
282   * the examined {@link Iterable} will stop as soon as a matching item is found.
283   * For example:
284   * <pre>assertThat(Arrays.asList("foo", "bar", "baz"), hasItems(endsWith("z"), endsWith("o")))</pre>
285   *
286   * @param itemMatchers
287   *     the matchers to apply to items provided by the examined {@link Iterable}
288   */
289  public static <T> org.hamcrest.Matcher<java.lang.Iterable<T>> hasItems(org.hamcrest.Matcher<? super T>... itemMatchers) {
290    return org.hamcrest.core.IsCollectionContaining.<T>hasItems(itemMatchers);
291  }
292
293  /**
294   * Creates a matcher for {@link Iterable}s that matches when consecutive passes over the
295   * examined {@link Iterable} yield at least one item that is equal to the corresponding
296   * item from the specified <code>items</code>.  Whilst matching, each traversal of the
297   * examined {@link Iterable} will stop as soon as a matching item is found.
298   * For example:
299   * <pre>assertThat(Arrays.asList("foo", "bar", "baz"), hasItems("baz", "foo"))</pre>
300   *
301   * @param items
302   *     the items to compare against the items provided by the examined {@link Iterable}
303   */
304  public static <T> org.hamcrest.Matcher<java.lang.Iterable<T>> hasItems(T... items) {
305    return org.hamcrest.core.IsCollectionContaining.<T>hasItems(items);
306  }
307
308  /**
309   * Creates a matcher that matches when the examined object is logically equal to the specified
310   * <code>operand</code>, as determined by calling the {@link java.lang.Object#equals} method on
311   * the <b>examined</b> object.
312   *
313   * <p>If the specified operand is <code>null</code> then the created matcher will only match if
314   * the examined object's <code>equals</code> method returns <code>true</code> when passed a
315   * <code>null</code> (which would be a violation of the <code>equals</code> contract), unless the
316   * examined object itself is <code>null</code>, in which case the matcher will return a positive
317   * match.</p>
318   *
319   * <p>The created matcher provides a special behaviour when examining <code>Array</code>s, whereby
320   * it will match if both the operand and the examined object are arrays of the same length and
321   * contain items that are equal to each other (according to the above rules) <b>in the same
322   * indexes</b>.</p>
323   * For example:
324   * <pre>
325   * assertThat("foo", equalTo("foo"));
326   * assertThat(new String[] {"foo", "bar"}, equalTo(new String[] {"foo", "bar"}));
327   * </pre>
328   */
329  public static <T> org.hamcrest.Matcher<T> equalTo(T operand) {
330    return org.hamcrest.core.IsEqual.<T>equalTo(operand);
331  }
332
333  /**
334   * Creates an {@link org.hamcrest.core.IsEqual} matcher that does not enforce the values being
335   * compared to be of the same static type.
336   */
337  public static org.hamcrest.Matcher<java.lang.Object> equalToObject(java.lang.Object operand) {
338    return org.hamcrest.core.IsEqual.equalToObject(operand);
339  }
340
341  /**
342   * Creates a matcher that matches when the examined object is an instance of the specified <code>type</code>,
343   * as determined by calling the {@link java.lang.Class#isInstance(Object)} method on that type, passing the
344   * the examined object.
345   *
346   * <p>The created matcher forces a relationship between specified type and the examined object, and should be
347   * used when it is necessary to make generics conform, for example in the JMock clause
348   * <code>with(any(Thing.class))</code></p>
349   * For example:
350   * <pre>assertThat(new Canoe(), instanceOf(Canoe.class));</pre>
351   */
352  public static <T> org.hamcrest.Matcher<T> any(java.lang.Class<T> type) {
353    return org.hamcrest.core.IsInstanceOf.<T>any(type);
354  }
355
356  /**
357   * Creates a matcher that matches when the examined object is an instance of the specified <code>type</code>,
358   * as determined by calling the {@link java.lang.Class#isInstance(Object)} method on that type, passing the
359   * the examined object.
360   *
361   * <p>The created matcher assumes no relationship between specified type and the examined object.</p>
362   * For example:
363   * <pre>assertThat(new Canoe(), instanceOf(Paddlable.class));</pre>
364   */
365  public static <T> org.hamcrest.Matcher<T> instanceOf(java.lang.Class<?> type) {
366    return org.hamcrest.core.IsInstanceOf.<T>instanceOf(type);
367  }
368
369  /**
370   * Creates a matcher that wraps an existing matcher, but inverts the logic by which
371   * it will match.
372   * For example:
373   * <pre>assertThat(cheese, is(not(equalTo(smelly))))</pre>
374   *
375   * @param matcher
376   *     the matcher whose sense should be inverted
377   */
378  public static <T> org.hamcrest.Matcher<T> not(org.hamcrest.Matcher<T> matcher) {
379    return org.hamcrest.core.IsNot.<T>not(matcher);
380  }
381
382  /**
383   * A shortcut to the frequently used <code>not(equalTo(x))</code>.
384   * For example:
385   * <pre>assertThat(cheese, is(not(smelly)))</pre>
386   * instead of:
387   * <pre>assertThat(cheese, is(not(equalTo(smelly))))</pre>
388   *
389   * @param value
390   *     the value that any examined object should <b>not</b> equal
391   */
392  public static <T> org.hamcrest.Matcher<T> not(T value) {
393    return org.hamcrest.core.IsNot.<T>not(value);
394  }
395
396  /**
397   * A shortcut to the frequently used <code>not(nullValue())</code>.
398   * For example:
399   * <pre>assertThat(cheese, is(notNullValue()))</pre>
400   * instead of:
401   * <pre>assertThat(cheese, is(not(nullValue())))</pre>
402   */
403  public static org.hamcrest.Matcher<java.lang.Object> notNullValue() {
404    return org.hamcrest.core.IsNull.notNullValue();
405  }
406
407  /**
408   * A shortcut to the frequently used <code>not(nullValue(X.class)). Accepts a
409   * single dummy argument to facilitate type inference.</code>.
410   * For example:
411   * <pre>assertThat(cheese, is(notNullValue(X.class)))</pre>
412   * instead of:
413   * <pre>assertThat(cheese, is(not(nullValue(X.class))))</pre>
414   *
415   * @param type
416   *     dummy parameter used to infer the generic type of the returned matcher
417   */
418  public static <T> org.hamcrest.Matcher<T> notNullValue(java.lang.Class<T> type) {
419    return org.hamcrest.core.IsNull.<T>notNullValue(type);
420  }
421
422  /**
423   * Creates a matcher that matches if examined object is <code>null</code>.
424   * For example:
425   * <pre>assertThat(cheese, is(nullValue())</pre>
426   */
427  public static org.hamcrest.Matcher<java.lang.Object> nullValue() {
428    return org.hamcrest.core.IsNull.nullValue();
429  }
430
431  /**
432   * Creates a matcher that matches if examined object is <code>null</code>. Accepts a
433   * single dummy argument to facilitate type inference.
434   * For example:
435   * <pre>assertThat(cheese, is(nullValue(Cheese.class))</pre>
436   *
437   * @param type
438   *     dummy parameter used to infer the generic type of the returned matcher
439   */
440  public static <T> org.hamcrest.Matcher<T> nullValue(java.lang.Class<T> type) {
441    return org.hamcrest.core.IsNull.<T>nullValue(type);
442  }
443
444  /**
445   * Creates a matcher that matches only when the examined object is the same instance as
446   * the specified target object.
447   *
448   * @param target
449   *     the target instance against which others should be assessed
450   */
451  public static <T> org.hamcrest.Matcher<T> sameInstance(T target) {
452    return org.hamcrest.core.IsSame.<T>sameInstance(target);
453  }
454
455  /**
456   * Creates a matcher that matches only when the examined object is the same instance as
457   * the specified target object.
458   *
459   * @param target
460   *     the target instance against which others should be assessed
461   */
462  public static <T> org.hamcrest.Matcher<T> theInstance(T target) {
463    return org.hamcrest.core.IsSame.<T>theInstance(target);
464  }
465
466  /**
467   * Creates a matcher that matches if the examined {@link String} contains the specified
468   * {@link String} anywhere.
469   * For example:
470   * <pre>assertThat("myStringOfNote", containsString("ring"))</pre>
471   *
472   * @param substring
473   *     the substring that the returned matcher will expect to find within any examined string
474   */
475  public static org.hamcrest.Matcher<java.lang.String> containsString(java.lang.String substring) {
476    return org.hamcrest.core.StringContains.containsString(substring);
477  }
478
479  /**
480   * Creates a matcher that matches if the examined {@link String} contains the specified
481   * {@link String} anywhere, ignoring case.
482   * For example:
483   * <pre>assertThat("myStringOfNote", containsString("ring"))</pre>
484   *
485   * @param substring
486   *     the substring that the returned matcher will expect to find within any examined string
487   */
488  public static org.hamcrest.Matcher<java.lang.String> containsStringIgnoringCase(java.lang.String substring) {
489    return org.hamcrest.core.StringContains.containsStringIgnoringCase(substring);
490  }
491
492  /**
493   * <p>
494   * Creates a matcher that matches if the examined {@link String} starts with the specified
495   * {@link String}.
496   * </p>
497   * For example:
498   * <pre>assertThat("myStringOfNote", startsWith("my"))</pre>
499   *
500   * @param prefix
501   *      the substring that the returned matcher will expect at the start of any examined string
502   */
503  public static org.hamcrest.Matcher<java.lang.String> startsWith(java.lang.String prefix) {
504    return org.hamcrest.core.StringStartsWith.startsWith(prefix);
505  }
506
507  /**
508   * <p>
509   * Creates a matcher that matches if the examined {@link String} starts with the specified
510   * {@link String}, ignoring case
511   * </p>
512   * For example:
513   * <pre>assertThat("myStringOfNote", startsWith("my"))</pre>
514   *
515   * @param prefix
516   *      the substring that the returned matcher will expect at the start of any examined string
517   */
518  public static org.hamcrest.Matcher<java.lang.String> startsWithIgnoringCase(java.lang.String prefix) {
519    return org.hamcrest.core.StringStartsWith.startsWithIgnoringCase(prefix);
520  }
521
522  /**
523   * Creates a matcher that matches if the examined {@link String} ends with the specified
524   * {@link String}.
525   * For example:
526   * <pre>assertThat("myStringOfNote", endsWith("Note"))</pre>
527   *
528   * @param suffix
529   *      the substring that the returned matcher will expect at the end of any examined string
530   */
531  public static org.hamcrest.Matcher<java.lang.String> endsWith(java.lang.String suffix) {
532    return org.hamcrest.core.StringEndsWith.endsWith(suffix);
533  }
534
535  /**
536   * Creates a matcher that matches if the examined {@link String} ends with the specified
537   * {@link String}, ignoring case.
538   * For example:
539   * <pre>assertThat("myStringOfNote", endsWith("Note"))</pre>
540   *
541   * @param suffix
542   *      the substring that the returned matcher will expect at the end of any examined string
543   */
544  public static org.hamcrest.Matcher<java.lang.String> endsWithIgnoringCase(java.lang.String suffix) {
545    return org.hamcrest.core.StringEndsWith.endsWithIgnoringCase(suffix);
546  }
547
548  /**
549   * Creates a matcher that matches arrays whose elements are satisfied by the specified matchers.  Matches
550   * positively only if the number of matchers specified is equal to the length of the examined array and
551   * each matcher[i] is satisfied by array[i].
552   * For example:
553   * <pre>assertThat(new Integer[]{1,2,3}, is(array(equalTo(1), equalTo(2), equalTo(3))))</pre>
554   *
555   * @param elementMatchers
556   *     the matchers that the elements of examined arrays should satisfy
557   */
558  public static <T> org.hamcrest.collection.IsArray<T> array(org.hamcrest.Matcher<? super T>... elementMatchers) {
559    return org.hamcrest.collection.IsArray.<T>array(elementMatchers);
560  }
561
562  /**
563   * Creates a matcher for arrays that matches when the examined array contains at least one item
564   * that is matched by the specified <code>elementMatcher</code>.  Whilst matching, the traversal
565   * of the examined array will stop as soon as a matching element is found.
566   * For example:
567   * <pre>assertThat(new String[] {"foo", "bar"}, hasItemInArray(startsWith("ba")))</pre>
568   *
569   * @param elementMatcher
570   *     the matcher to apply to elements in examined arrays
571   */
572  public static <T> org.hamcrest.Matcher<T[]> hasItemInArray(org.hamcrest.Matcher<? super T> elementMatcher) {
573    return org.hamcrest.collection.IsArrayContaining.<T>hasItemInArray(elementMatcher);
574  }
575
576  /**
577   * A shortcut to the frequently used <code>hasItemInArray(equalTo(x))</code>.
578   * For example:
579   * <pre>assertThat(hasItemInArray(x))</pre>
580   * instead of:
581   * <pre>assertThat(hasItemInArray(equalTo(x)))</pre>
582   *
583   * @param element
584   *     the element that should be present in examined arrays
585   */
586  public static <T> org.hamcrest.Matcher<T[]> hasItemInArray(T element) {
587    return org.hamcrest.collection.IsArrayContaining.<T>hasItemInArray(element);
588  }
589
590  /**
591   * Creates a matcher for arrays that matches when each item in the examined array is
592   * logically equal to the corresponding item in the specified items.  For a positive match,
593   * the examined array must be of the same length as the number of specified items.
594   * For example:
595   * <pre>assertThat(new String[]{"foo", "bar"}, contains("foo", "bar"))</pre>
596   *
597   * @param items
598   *     the items that must equal the items within an examined array
599   */
600  public static <E> org.hamcrest.Matcher<E[]> arrayContaining(E... items) {
601    return org.hamcrest.collection.IsArrayContainingInOrder.<E>arrayContaining(items);
602  }
603
604  /**
605   * Creates a matcher for arrays that matches when each item in the examined array satisfies the
606   * corresponding matcher in the specified matchers.  For a positive match, the examined array
607   * must be of the same length as the number of specified matchers.
608   * For example:
609   * <pre>assertThat(new String[]{"foo", "bar"}, contains(equalTo("foo"), equalTo("bar")))</pre>
610   *
611   * @param itemMatchers
612   *     the matchers that must be satisfied by the items in the examined array
613   */
614  public static <E> org.hamcrest.Matcher<E[]> arrayContaining(org.hamcrest.Matcher<? super E>... itemMatchers) {
615    return org.hamcrest.collection.IsArrayContainingInOrder.<E>arrayContaining(itemMatchers);
616  }
617
618  /**
619   * Creates a matcher for arrays that matches when each item in the examined array satisfies the
620   * corresponding matcher in the specified list of matchers.  For a positive match, the examined array
621   * must be of the same length as the specified list of matchers.
622   * For example:
623   * <pre>assertThat(new String[]{"foo", "bar"}, contains(Arrays.asList(equalTo("foo"), equalTo("bar"))))</pre>
624   *
625   * @param itemMatchers
626   *     a list of matchers, each of which must be satisfied by the corresponding item in an examined array
627   */
628  public static <E> org.hamcrest.Matcher<E[]> arrayContaining(java.util.List<org.hamcrest.Matcher<? super E>> itemMatchers) {
629    return org.hamcrest.collection.IsArrayContainingInOrder.<E>arrayContaining(itemMatchers);
630  }
631
632  /**
633   * <p>
634   * Creates an order agnostic matcher for arrays that matches when each item in the
635   * examined array satisfies one matcher anywhere in the specified matchers.
636   * For a positive match, the examined array must be of the same length as the number of
637   * specified matchers.
638   * </p>
639   * <p>
640   * N.B. each of the specified matchers will only be used once during a given examination, so be
641   * careful when specifying matchers that may be satisfied by more than one entry in an examined
642   * array.
643   * </p>
644   * <p>
645   * For example:
646   * </p>
647   * <pre>assertThat(new String[]{"foo", "bar"}, arrayContainingInAnyOrder(equalTo("bar"), equalTo("foo")))</pre>
648   *
649   * @param itemMatchers
650   *     a list of matchers, each of which must be satisfied by an entry in an examined array
651   */
652  public static <E> org.hamcrest.Matcher<E[]> arrayContainingInAnyOrder(org.hamcrest.Matcher<? super E>... itemMatchers) {
653    return org.hamcrest.collection.IsArrayContainingInAnyOrder.<E>arrayContainingInAnyOrder(itemMatchers);
654  }
655
656  /**
657   * <p>
658   * Creates an order agnostic matcher for arrays that matches when each item in the
659   * examined array satisfies one matcher anywhere in the specified collection of matchers.
660   * For a positive match, the examined array must be of the same length as the specified collection
661   * of matchers.
662   * </p>
663   * <p>
664   * N.B. each matcher in the specified collection will only be used once during a given
665   * examination, so be careful when specifying matchers that may be satisfied by more than
666   * one entry in an examined array.
667   * </p>
668   * <p>
669   * For example:
670   * </p>
671   * <pre>assertThat(new String[]{"foo", "bar"}, arrayContainingInAnyOrder(Arrays.asList(equalTo("bar"), equalTo("foo"))))</pre>
672   *
673   * @param itemMatchers
674   *     a list of matchers, each of which must be satisfied by an item provided by an examined array
675   */
676  public static <E> org.hamcrest.Matcher<E[]> arrayContainingInAnyOrder(java.util.Collection<org.hamcrest.Matcher<? super E>> itemMatchers) {
677    return org.hamcrest.collection.IsArrayContainingInAnyOrder.<E>arrayContainingInAnyOrder(itemMatchers);
678  }
679
680  /**
681   * <p>Creates an order agnostic matcher for arrays that matches when each item in the
682   * examined array is logically equal to one item anywhere in the specified items.
683   * For a positive match, the examined array must be of the same length as the number of
684   * specified items.
685   * </p>
686   * <p>N.B. each of the specified items will only be used once during a given examination, so be
687   * careful when specifying items that may be equal to more than one entry in an examined
688   * array.
689   * </p>
690   * <p>
691   * For example:
692   * </p>
693   * <pre>assertThat(new String[]{"foo", "bar"}, containsInAnyOrder("bar", "foo"))</pre>
694   *
695   * @param items
696   *     the items that must equal the entries of an examined array, in any order
697   */
698  public static <E> org.hamcrest.Matcher<E[]> arrayContainingInAnyOrder(E... items) {
699    return org.hamcrest.collection.IsArrayContainingInAnyOrder.<E>arrayContainingInAnyOrder(items);
700  }
701
702  /**
703   * Creates a matcher for arrays that matches when the <code>length</code> of the array
704   * satisfies the specified matcher.
705   * For example:
706   * <pre>assertThat(new String[]{"foo", "bar"}, arrayWithSize(equalTo(2)))</pre>
707   *
708   * @param sizeMatcher
709   *     a matcher for the length of an examined array
710   */
711  public static <E> org.hamcrest.Matcher<E[]> arrayWithSize(org.hamcrest.Matcher<? super java.lang.Integer> sizeMatcher) {
712    return org.hamcrest.collection.IsArrayWithSize.<E>arrayWithSize(sizeMatcher);
713  }
714
715  /**
716   * Creates a matcher for arrays that matches when the <code>length</code> of the array
717   * equals the specified <code>size</code>.
718   * For example:
719   * <pre>assertThat(new String[]{"foo", "bar"}, arrayWithSize(2))</pre>
720   *
721   * @param size
722   *     the length that an examined array must have for a positive match
723   */
724  public static <E> org.hamcrest.Matcher<E[]> arrayWithSize(int size) {
725    return org.hamcrest.collection.IsArrayWithSize.<E>arrayWithSize(size);
726  }
727
728  /**
729   * Creates a matcher for arrays that matches when the <code>length</code> of the array
730   * is zero.
731   * For example:
732   * <pre>assertThat(new String[0], emptyArray())</pre>
733   */
734  public static <E> org.hamcrest.Matcher<E[]> emptyArray() {
735    return org.hamcrest.collection.IsArrayWithSize.<E>emptyArray();
736  }
737
738  /**
739   * Creates a matcher for {@link java.util.Map}s that matches when the <code>size()</code> method returns
740   * a value that satisfies the specified matcher.
741   * For example:
742   * <pre>assertThat(myMap, is(aMapWithSize(equalTo(2))))</pre>
743   *
744   * @param sizeMatcher
745   *     a matcher for the size of an examined {@link java.util.Map}
746   */
747  public static <K, V> org.hamcrest.Matcher<java.util.Map<? extends K,? extends V>> aMapWithSize(org.hamcrest.Matcher<? super java.lang.Integer> sizeMatcher) {
748    return org.hamcrest.collection.IsMapWithSize.<K,V>aMapWithSize(sizeMatcher);
749  }
750
751  /**
752   * Creates a matcher for {@link java.util.Map}s that matches when the <code>size()</code> method returns
753   * a value equal to the specified <code>size</code>.
754   * For example:
755   * <pre>assertThat(myMap, is(aMapWithSize(2)))</pre>
756   *
757   * @param size
758   *     the expected size of an examined {@link java.util.Map}
759   */
760  public static <K, V> org.hamcrest.Matcher<java.util.Map<? extends K,? extends V>> aMapWithSize(int size) {
761    return org.hamcrest.collection.IsMapWithSize.<K,V>aMapWithSize(size);
762  }
763
764  /**
765   * Creates a matcher for {@link java.util.Map}s that matches when the <code>size()</code> method returns
766   * zero.
767   * For example:
768   * <pre>assertThat(myMap, is(anEmptyMap()))</pre>
769   */
770  public static <K, V> org.hamcrest.Matcher<java.util.Map<? extends K,? extends V>> anEmptyMap() {
771    return org.hamcrest.collection.IsMapWithSize.<K,V>anEmptyMap();
772  }
773
774  /**
775   * Creates a matcher for {@link java.util.Collection}s that matches when the <code>size()</code> method returns
776   * a value that satisfies the specified matcher.
777   * For example:
778   * <pre>assertThat(Arrays.asList("foo", "bar"), hasSize(equalTo(2)))</pre>
779   *
780   * @param sizeMatcher
781   *     a matcher for the size of an examined {@link java.util.Collection}
782   */
783  public static <E> org.hamcrest.Matcher<java.util.Collection<? extends E>> hasSize(org.hamcrest.Matcher<? super java.lang.Integer> sizeMatcher) {
784    return org.hamcrest.collection.IsCollectionWithSize.<E>hasSize(sizeMatcher);
785  }
786
787  /**
788   * Creates a matcher for {@link java.util.Collection}s that matches when the <code>size()</code> method returns
789   * a value equal to the specified <code>size</code>.
790   * For example:
791   * <pre>assertThat(Arrays.asList("foo", "bar"), hasSize(2))</pre>
792   *
793   * @param size
794   *     the expected size of an examined {@link java.util.Collection}
795   */
796  public static <E> org.hamcrest.Matcher<java.util.Collection<? extends E>> hasSize(int size) {
797    return org.hamcrest.collection.IsCollectionWithSize.<E>hasSize(size);
798  }
799
800  /**
801   * Creates a matcher for {@link java.util.Collection}s matching examined collections whose <code>isEmpty</code>
802   * method returns <code>true</code>.
803   * For example:
804   * <pre>assertThat(new ArrayList&lt;String&gt;(), is(empty()))</pre>
805   */
806  public static <E> org.hamcrest.Matcher<java.util.Collection<? extends E>> empty() {
807    return org.hamcrest.collection.IsEmptyCollection.<E>empty();
808  }
809
810  /**
811   * Creates a matcher for {@link java.util.Collection}s matching examined collections whose <code>isEmpty</code>
812   * method returns <code>true</code>.
813   * For example:
814   * <pre>assertThat(new ArrayList&lt;String&gt;(), is(emptyCollectionOf(String.class)))</pre>
815   *
816   * @param unusedToForceReturnType
817   *     the type of the collection's content
818   */
819  public static <E> org.hamcrest.Matcher<java.util.Collection<E>> emptyCollectionOf(java.lang.Class<E> unusedToForceReturnType) {
820    return org.hamcrest.collection.IsEmptyCollection.<E>emptyCollectionOf(unusedToForceReturnType);
821  }
822
823  /**
824   * Creates a matcher for {@link Iterable}s matching examined iterables that yield no items.
825   * For example:
826   * <pre>assertThat(new ArrayList&lt;String&gt;(), is(emptyIterable()))</pre>
827   */
828  public static <E> org.hamcrest.Matcher<java.lang.Iterable<? extends E>> emptyIterable() {
829    return org.hamcrest.collection.IsEmptyIterable.<E>emptyIterable();
830  }
831
832  /**
833   * Creates a matcher for {@link Iterable}s matching examined iterables that yield no items.
834   * For example:
835   * <pre>assertThat(new ArrayList&lt;String&gt;(), is(emptyIterableOf(String.class)))</pre>
836   *
837   * @param unusedToForceReturnType
838   *     the type of the iterable's content
839   */
840  public static <E> org.hamcrest.Matcher<java.lang.Iterable<E>> emptyIterableOf(java.lang.Class<E> unusedToForceReturnType) {
841    return org.hamcrest.collection.IsEmptyIterable.<E>emptyIterableOf(unusedToForceReturnType);
842  }
843
844  /**
845   * Creates a matcher for {@link Iterable}s that matches when a single pass over the
846   * examined {@link Iterable} yields a series of items, each logically equal to the
847   * corresponding item in the specified items.  For a positive match, the examined iterable
848   * must be of the same length as the number of specified items.
849   * For example:
850   * <pre>assertThat(Arrays.asList("foo", "bar"), contains("foo", "bar"))</pre>
851   *
852   * @param items
853   *     the items that must equal the items provided by an examined {@link Iterable}
854   */
855  public static <E> org.hamcrest.Matcher<java.lang.Iterable<? extends E>> contains(E... items) {
856    return org.hamcrest.collection.IsIterableContainingInOrder.<E>contains(items);
857  }
858
859  /**
860   * Creates a matcher for {@link Iterable}s that matches when a single pass over the
861   * examined {@link Iterable} yields a single item that satisfies the specified matcher.
862   * For a positive match, the examined iterable must only yield one item.
863   * For example:
864   * <pre>assertThat(Arrays.asList("foo"), contains(equalTo("foo")))</pre>
865   *
866   * @param itemMatcher
867   *     the matcher that must be satisfied by the single item provided by an
868   *     examined {@link Iterable}
869   */
870  public static <E> org.hamcrest.Matcher<java.lang.Iterable<? extends E>> contains(org.hamcrest.Matcher<? super E> itemMatcher) {
871    return org.hamcrest.collection.IsIterableContainingInOrder.<E>contains(itemMatcher);
872  }
873
874  /**
875   * Creates a matcher for {@link Iterable}s that matches when a single pass over the
876   * examined {@link Iterable} yields a series of items, each satisfying the corresponding
877   * matcher in the specified matchers.  For a positive match, the examined iterable
878   * must be of the same length as the number of specified matchers.
879   * For example:
880   * <pre>assertThat(Arrays.asList("foo", "bar"), contains(equalTo("foo"), equalTo("bar")))</pre>
881   *
882   * @param itemMatchers
883   *     the matchers that must be satisfied by the items provided by an examined {@link Iterable}
884   */
885  public static <E> org.hamcrest.Matcher<java.lang.Iterable<? extends E>> contains(org.hamcrest.Matcher<? super E>... itemMatchers) {
886    return org.hamcrest.collection.IsIterableContainingInOrder.<E>contains(itemMatchers);
887  }
888
889  /**
890   * Creates a matcher for {@link Iterable}s that matches when a single pass over the
891   * examined {@link Iterable} yields a series of items, each satisfying the corresponding
892   * matcher in the specified list of matchers.  For a positive match, the examined iterable
893   * must be of the same length as the specified list of matchers.
894   * For example:
895   * <pre>assertThat(Arrays.asList("foo", "bar"), contains(Arrays.asList(equalTo("foo"), equalTo("bar"))))</pre>
896   *
897   * @param itemMatchers
898   *     a list of matchers, each of which must be satisfied by the corresponding item provided by
899   *     an examined {@link Iterable}
900   */
901  public static <E> org.hamcrest.Matcher<java.lang.Iterable<? extends E>> contains(java.util.List<org.hamcrest.Matcher<? super E>> itemMatchers) {
902    return org.hamcrest.collection.IsIterableContainingInOrder.<E>contains(itemMatchers);
903  }
904
905  /**
906   * <p>
907   * Creates an order agnostic matcher for {@link Iterable}s that matches when a single pass over
908   * the examined {@link Iterable} yields a series of items, each satisfying one matcher anywhere
909   * in the specified matchers.  For a positive match, the examined iterable must be of the same
910   * length as the number of specified matchers.
911   * </p>
912   * <p>
913   * N.B. each of the specified matchers will only be used once during a given examination, so be
914   * careful when specifying matchers that may be satisfied by more than one entry in an examined
915   * iterable.
916   * </p>
917   * <p>
918   * For example:
919   * </p>
920   * <pre>assertThat(Arrays.asList("foo", "bar"), containsInAnyOrder(equalTo("bar"), equalTo("foo")))</pre>
921   *
922   * @param itemMatchers
923   *     a list of matchers, each of which must be satisfied by an item provided by an examined {@link Iterable}
924   */
925  public static <T> org.hamcrest.Matcher<java.lang.Iterable<? extends T>> containsInAnyOrder(org.hamcrest.Matcher<? super T>... itemMatchers) {
926    return org.hamcrest.collection.IsIterableContainingInAnyOrder.<T>containsInAnyOrder(itemMatchers);
927  }
928
929  /**
930   * <p>
931   * Creates an order agnostic matcher for {@link Iterable}s that matches when a single pass over
932   * the examined {@link Iterable} yields a series of items, each logically equal to one item
933   * anywhere in the specified items. For a positive match, the examined iterable
934   * must be of the same length as the number of specified items.
935   * </p>
936   * <p>
937   * N.B. each of the specified items will only be used once during a given examination, so be
938   * careful when specifying items that may be equal to more than one entry in an examined
939   * iterable.
940   * </p>
941   * <p>
942   * For example:
943   * </p>
944   * <pre>assertThat(Arrays.asList("foo", "bar"), containsInAnyOrder("bar", "foo"))</pre>
945   *
946   * @param items
947   *     the items that must equal the items provided by an examined {@link Iterable} in any order
948   */
949  public static <T> org.hamcrest.Matcher<java.lang.Iterable<? extends T>> containsInAnyOrder(T... items) {
950    return org.hamcrest.collection.IsIterableContainingInAnyOrder.<T>containsInAnyOrder(items);
951  }
952
953  /**
954   * <p>
955   * Creates an order agnostic matcher for {@link Iterable}s that matches when a single pass over
956   * the examined {@link Iterable} yields a series of items, each satisfying one matcher anywhere
957   * in the specified collection of matchers.  For a positive match, the examined iterable
958   * must be of the same length as the specified collection of matchers.
959   * </p>
960   * <p>
961   * N.B. each matcher in the specified collection will only be used once during a given
962   * examination, so be careful when specifying matchers that may be satisfied by more than
963   * one entry in an examined iterable.
964   * </p>
965   * <p>For example:</p>
966   * <pre>assertThat(Arrays.asList("foo", "bar"), containsInAnyOrder(Arrays.asList(equalTo("bar"), equalTo("foo"))))</pre>
967   *
968   * @param itemMatchers
969   *     a list of matchers, each of which must be satisfied by an item provided by an examined {@link Iterable}
970   */
971  public static <T> org.hamcrest.Matcher<java.lang.Iterable<? extends T>> containsInAnyOrder(java.util.Collection<org.hamcrest.Matcher<? super T>> itemMatchers) {
972    return org.hamcrest.collection.IsIterableContainingInAnyOrder.<T>containsInAnyOrder(itemMatchers);
973  }
974
975  /**
976   * Creates a matcher for {@link Iterable}s that matches when a single pass over the
977   * examined {@link Iterable} yields a series of items, that contains items logically equal to the
978   * corresponding item in the specified items, in the same relative order
979   * For example:
980   * <pre>assertThat(Arrays.asList("a", "b", "c", "d", "e"), containsInRelativeOrder("b", "d"))</pre>
981   *
982   * @param items
983   *     the items that must be contained within items provided by an examined {@link Iterable} in the same relative order
984   */
985  public static <E> org.hamcrest.Matcher<java.lang.Iterable<? extends E>> containsInRelativeOrder(E... items) {
986    return org.hamcrest.collection.IsIterableContainingInRelativeOrder.<E>containsInRelativeOrder(items);
987  }
988
989  /**
990   * Creates a matcher for {@link Iterable}s that matches when a single pass over the
991   * examined {@link Iterable} yields a series of items, that each satisfying the corresponding
992   * matcher in the specified matchers, in the same relative order.
993   * For example:
994   * <pre>assertThat(Arrays.asList("a", "b", "c", "d", "e"), containsInRelativeOrder(equalTo("b"), equalTo("d")))</pre>
995   *
996   * @param itemMatchers
997   *     the matchers that must be satisfied by the items provided by an examined {@link Iterable} in the same relative order
998   */
999  public static <E> org.hamcrest.Matcher<java.lang.Iterable<? extends E>> containsInRelativeOrder(org.hamcrest.Matcher<? super E>... itemMatchers) {
1000    return org.hamcrest.collection.IsIterableContainingInRelativeOrder.<E>containsInRelativeOrder(itemMatchers);
1001  }
1002
1003  /**
1004   * Creates a matcher for {@link Iterable}s that matches when a single pass over the
1005   * examined {@link Iterable} yields a series of items, that contains items satisfying the corresponding
1006   * matcher in the specified list of matchers, in the same relative order.
1007   * For example:
1008   * <pre>assertThat(Arrays.asList("a", "b", "c", "d", "e"), contains(Arrays.asList(equalTo("b"), equalTo("d"))))</pre>
1009   *
1010   * @param itemMatchers
1011   *     a list of matchers, each of which must be satisfied by the items provided by
1012   *     an examined {@link Iterable} in the same relative order
1013   */
1014  public static <E> org.hamcrest.Matcher<java.lang.Iterable<? extends E>> containsInRelativeOrder(java.util.List<org.hamcrest.Matcher<? super E>> itemMatchers) {
1015    return org.hamcrest.collection.IsIterableContainingInRelativeOrder.<E>containsInRelativeOrder(itemMatchers);
1016  }
1017
1018  /**
1019   * Creates a matcher for {@link Iterable}s that matches when a single pass over the
1020   * examined {@link Iterable} yields an item count that satisfies the specified
1021   * matcher.
1022   * For example:
1023   * <pre>assertThat(Arrays.asList("foo", "bar"), iterableWithSize(equalTo(2)))</pre>
1024   *
1025   * @param sizeMatcher
1026   *     a matcher for the number of items that should be yielded by an examined {@link Iterable}
1027   */
1028  public static <E> org.hamcrest.Matcher<java.lang.Iterable<E>> iterableWithSize(org.hamcrest.Matcher<? super java.lang.Integer> sizeMatcher) {
1029    return org.hamcrest.collection.IsIterableWithSize.<E>iterableWithSize(sizeMatcher);
1030  }
1031
1032  /**
1033   * Creates a matcher for {@link Iterable}s that matches when a single pass over the
1034   * examined {@link Iterable} yields an item count that is equal to the specified
1035   * <code>size</code> argument.
1036   * For example:
1037   * <pre>assertThat(Arrays.asList("foo", "bar"), iterableWithSize(2))</pre>
1038   *
1039   * @param size
1040   *     the number of items that should be yielded by an examined {@link Iterable}
1041   */
1042  public static <E> org.hamcrest.Matcher<java.lang.Iterable<E>> iterableWithSize(int size) {
1043    return org.hamcrest.collection.IsIterableWithSize.<E>iterableWithSize(size);
1044  }
1045
1046  /**
1047   * Creates a matcher for {@link java.util.Map}s matching when the examined {@link java.util.Map} contains
1048   * at least one entry whose key satisfies the specified <code>keyMatcher</code> <b>and</b> whose
1049   * value satisfies the specified <code>valueMatcher</code>.
1050   * For example:
1051   * <pre>assertThat(myMap, hasEntry(equalTo("bar"), equalTo("foo")))</pre>
1052   *
1053   * @param keyMatcher
1054   *     the key matcher that, in combination with the valueMatcher, must be satisfied by at least one entry
1055   * @param valueMatcher
1056   *     the value matcher that, in combination with the keyMatcher, must be satisfied by at least one entry
1057   */
1058  public static <K, V> org.hamcrest.Matcher<java.util.Map<? extends K,? extends V>> hasEntry(org.hamcrest.Matcher<? super K> keyMatcher, org.hamcrest.Matcher<? super V> valueMatcher) {
1059    return org.hamcrest.collection.IsMapContaining.<K,V>hasEntry(keyMatcher, valueMatcher);
1060  }
1061
1062  /**
1063   * Creates a matcher for {@link java.util.Map}s matching when the examined {@link java.util.Map} contains
1064   * at least one entry whose key equals the specified <code>key</code> <b>and</b> whose value equals the
1065   * specified <code>value</code>.
1066   * For example:
1067   * <pre>assertThat(myMap, hasEntry("bar", "foo"))</pre>
1068   *
1069   * @param key
1070   *     the key that, in combination with the value, must be describe at least one entry
1071   * @param value
1072   *     the value that, in combination with the key, must be describe at least one entry
1073   */
1074  public static <K, V> org.hamcrest.Matcher<java.util.Map<? extends K,? extends V>> hasEntry(K key, V value) {
1075    return org.hamcrest.collection.IsMapContaining.<K,V>hasEntry(key, value);
1076  }
1077
1078  /**
1079   * Creates a matcher for {@link java.util.Map}s matching when the examined {@link java.util.Map} contains
1080   * at least one key that satisfies the specified matcher.
1081   * For example:
1082   * <pre>assertThat(myMap, hasKey(equalTo("bar")))</pre>
1083   *
1084   * @param keyMatcher
1085   *     the matcher that must be satisfied by at least one key
1086   */
1087  public static <K> org.hamcrest.Matcher<java.util.Map<? extends K,?>> hasKey(org.hamcrest.Matcher<? super K> keyMatcher) {
1088    return org.hamcrest.collection.IsMapContaining.<K>hasKey(keyMatcher);
1089  }
1090
1091  /**
1092   * Creates a matcher for {@link java.util.Map}s matching when the examined {@link java.util.Map} contains
1093   * at least one key that is equal to the specified key.
1094   * For example:
1095   * <pre>assertThat(myMap, hasKey("bar"))</pre>
1096   *
1097   * @param key
1098   *     the key that satisfying maps must contain
1099   */
1100  public static <K> org.hamcrest.Matcher<java.util.Map<? extends K,?>> hasKey(K key) {
1101    return org.hamcrest.collection.IsMapContaining.<K>hasKey(key);
1102  }
1103
1104  /**
1105   * Creates a matcher for {@link java.util.Map}s matching when the examined {@link java.util.Map} contains
1106   * at least one value that satisfies the specified valueMatcher.
1107   * For example:
1108   * <pre>assertThat(myMap, hasValue(equalTo("foo")))</pre>
1109   *
1110   * @param valueMatcher
1111   *     the matcher that must be satisfied by at least one value
1112   */
1113  public static <V> org.hamcrest.Matcher<java.util.Map<?,? extends V>> hasValue(org.hamcrest.Matcher<? super V> valueMatcher) {
1114    return org.hamcrest.collection.IsMapContaining.<V>hasValue(valueMatcher);
1115  }
1116
1117  /**
1118   * Creates a matcher for {@link java.util.Map}s matching when the examined {@link java.util.Map} contains
1119   * at least one value that is equal to the specified value.
1120   * For example:
1121   * <pre>assertThat(myMap, hasValue("foo"))</pre>
1122   *
1123   * @param value
1124   *     the value that satisfying maps must contain
1125   */
1126  public static <V> org.hamcrest.Matcher<java.util.Map<?,? extends V>> hasValue(V value) {
1127    return org.hamcrest.collection.IsMapContaining.<V>hasValue(value);
1128  }
1129
1130  /**
1131   * Creates a matcher that matches when the examined object is found within the
1132   * specified collection.
1133   * For example:
1134   * <pre>assertThat("foo", is(in(Arrays.asList("bar", "foo"))))</pre>
1135   *
1136   * @param collection
1137   *     the collection in which matching items must be found
1138   */
1139  public static <T> org.hamcrest.Matcher<T> in(java.util.Collection<T> collection) {
1140    return org.hamcrest.collection.IsIn.<T>in(collection);
1141  }
1142
1143  /**
1144   * Creates a matcher that matches when the examined object is found within the
1145   * specified array.
1146   * For example:
1147   * <pre>assertThat("foo", is(in(new String[]{"bar", "foo"})))</pre>
1148   *
1149   * @param elements
1150   *     the array in which matching items must be found
1151   */
1152  public static <T> org.hamcrest.Matcher<T> in(T[] elements) {
1153    return org.hamcrest.collection.IsIn.<T>in(elements);
1154  }
1155
1156  /**
1157   * Creates a matcher that matches when the examined object is found within the
1158   * specified collection.
1159   * For example:
1160   * <pre>assertThat("foo", isIn(Arrays.asList("bar", "foo")))</pre>
1161   *
1162   * @deprecated use is(in(...)) instead
1163   * @param collection
1164   *     the collection in which matching items must be found
1165   */
1166  public static <T> org.hamcrest.Matcher<T> isIn(java.util.Collection<T> collection) {
1167    return org.hamcrest.collection.IsIn.<T>isIn(collection);
1168  }
1169
1170  /**
1171   * Creates a matcher that matches when the examined object is found within the
1172   * specified array.
1173   * For example:
1174   * <pre>assertThat("foo", isIn(new String[]{"bar", "foo"}))</pre>
1175   *
1176   * @deprecated use is(in(...)) instead
1177   * @param elements
1178   *     the array in which matching items must be found
1179   */
1180  public static <T> org.hamcrest.Matcher<T> isIn(T[] elements) {
1181    return org.hamcrest.collection.IsIn.<T>isIn(elements);
1182  }
1183
1184  /**
1185   * Creates a matcher that matches when the examined object is equal to one of the
1186   * specified elements.
1187   * For example:
1188   * <pre>assertThat("foo", isOneOf("bar", "foo"))</pre>
1189   *
1190   * @deprecated use is(oneOf(...)) instead
1191   * @param elements
1192   *     the elements amongst which matching items will be found
1193   */
1194  public static <T> org.hamcrest.Matcher<T> isOneOf(T... elements) {
1195    return org.hamcrest.collection.IsIn.<T>isOneOf(elements);
1196  }
1197
1198  /**
1199   * Creates a matcher that matches when the examined object is equal to one of the
1200   * specified elements.
1201   * For example:
1202   * <pre>assertThat("foo", is(oneOf("bar", "foo")))</pre>
1203   *
1204   * @param elements
1205   *     the elements amongst which matching items will be found
1206   */
1207  public static <T> org.hamcrest.Matcher<T> oneOf(T... elements) {
1208    return org.hamcrest.collection.IsIn.<T>oneOf(elements);
1209  }
1210
1211  /**
1212   * Creates a matcher of {@link Double}s that matches when an examined double is equal
1213   * to the specified <code>operand</code>, within a range of +/- <code>error</code>.
1214   * For example:
1215   * <pre>assertThat(1.03, is(closeTo(1.0, 0.03)))</pre>
1216   *
1217   * @param operand
1218   *     the expected value of matching doubles
1219   * @param error
1220   *     the delta (+/-) within which matches will be allowed
1221   */
1222  public static org.hamcrest.Matcher<java.lang.Double> closeTo(double operand, double error) {
1223    return org.hamcrest.number.IsCloseTo.closeTo(operand, error);
1224  }
1225
1226  /**
1227   * Creates a matcher of {@link Double}s that matches when an examined double is not a number.
1228   * For example:
1229   * <pre>assertThat(Double.NaN, is(notANumber()))</pre>
1230   */
1231  public static org.hamcrest.Matcher<java.lang.Double> notANumber() {
1232    return org.hamcrest.number.IsNaN.notANumber();
1233  }
1234
1235  /**
1236   * Creates a matcher of {@link java.math.BigDecimal}s that matches when an examined BigDecimal is equal
1237   * to the specified <code>operand</code>, within a range of +/- <code>error</code>. The comparison for equality
1238   * is done by BigDecimals {@link java.math.BigDecimal#compareTo(java.math.BigDecimal)} method.
1239   * For example:
1240   * <pre>assertThat(new BigDecimal("1.03"), is(closeTo(new BigDecimal("1.0"), new BigDecimal("0.03"))))</pre>
1241   *
1242   * @param operand
1243   *     the expected value of matching BigDecimals
1244   * @param error
1245   *     the delta (+/-) within which matches will be allowed
1246   */
1247  public static org.hamcrest.Matcher<java.math.BigDecimal> closeTo(java.math.BigDecimal operand, java.math.BigDecimal error) {
1248    return org.hamcrest.number.BigDecimalCloseTo.closeTo(operand, error);
1249  }
1250
1251  /**
1252   * Creates a matcher of {@link Comparable} object that matches when the examined object is
1253   * equal to the specified value, as reported by the <code>compareTo</code> method of the
1254   * <b>examined</b> object.
1255   * For example:
1256   * <pre>assertThat(1, comparesEqualTo(1))</pre>
1257   *
1258   * @param value the value which, when passed to the compareTo method of the examined object, should return zero
1259   */
1260  public static <T extends java.lang.Comparable<T>> org.hamcrest.Matcher<T> comparesEqualTo(T value) {
1261    return org.hamcrest.number.OrderingComparison.<T>comparesEqualTo(value);
1262  }
1263
1264  /**
1265   * Creates a matcher of {@link Comparable} object that matches when the examined object is
1266   * greater than the specified value, as reported by the <code>compareTo</code> method of the
1267   * <b>examined</b> object.
1268   * For example:
1269   * <pre>assertThat(2, greaterThan(1))</pre>
1270   *
1271   * @param value the value which, when passed to the compareTo method of the examined object, should return greater
1272   *              than zero
1273   */
1274  public static <T extends java.lang.Comparable<T>> org.hamcrest.Matcher<T> greaterThan(T value) {
1275    return org.hamcrest.number.OrderingComparison.<T>greaterThan(value);
1276  }
1277
1278  /**
1279   * Creates a matcher of {@link Comparable} object that matches when the examined object is
1280   * greater than or equal to the specified value, as reported by the <code>compareTo</code> method
1281   * of the <b>examined</b> object.
1282   * For example:
1283   * <pre>assertThat(1, greaterThanOrEqualTo(1))</pre>
1284   *
1285   * @param value the value which, when passed to the compareTo method of the examined object, should return greater
1286   *              than or equal to zero
1287   */
1288  public static <T extends java.lang.Comparable<T>> org.hamcrest.Matcher<T> greaterThanOrEqualTo(T value) {
1289    return org.hamcrest.number.OrderingComparison.<T>greaterThanOrEqualTo(value);
1290  }
1291
1292  /**
1293   * Creates a matcher of {@link Comparable} object that matches when the examined object is
1294   * less than the specified value, as reported by the <code>compareTo</code> method of the
1295   * <b>examined</b> object.
1296   * For example:
1297   * <pre>assertThat(1, lessThan(2))</pre>
1298   *
1299   * @param value the value which, when passed to the compareTo method of the examined object, should return less
1300   *              than zero
1301   */
1302  public static <T extends java.lang.Comparable<T>> org.hamcrest.Matcher<T> lessThan(T value) {
1303    return org.hamcrest.number.OrderingComparison.<T>lessThan(value);
1304  }
1305
1306  /**
1307   * Creates a matcher of {@link Comparable} object that matches when the examined object is
1308   * less than or equal to the specified value, as reported by the <code>compareTo</code> method
1309   * of the <b>examined</b> object.
1310   * For example:
1311   * <pre>assertThat(1, lessThanOrEqualTo(1))</pre>
1312   *
1313   * @param value the value which, when passed to the compareTo method of the examined object, should return less
1314   *              than or equal to zero
1315   */
1316  public static <T extends java.lang.Comparable<T>> org.hamcrest.Matcher<T> lessThanOrEqualTo(T value) {
1317    return org.hamcrest.number.OrderingComparison.<T>lessThanOrEqualTo(value);
1318  }
1319
1320  /**
1321   * Creates a matcher of {@link String} that matches when the examined string is equal to
1322   * the specified expectedString, ignoring case.
1323   * For example:
1324   * <pre>assertThat("Foo", equalToIgnoringCase("FOO"))</pre>
1325   *
1326   * @param expectedString
1327   *     the expected value of matched strings
1328   */
1329  public static org.hamcrest.Matcher<java.lang.String> equalToIgnoringCase(java.lang.String expectedString) {
1330    return org.hamcrest.text.IsEqualIgnoringCase.equalToIgnoringCase(expectedString);
1331  }
1332
1333  /**
1334   * Creates a matcher of {@link String} that matches when the examined string is equal to
1335   * the specified expectedString, when whitespace differences are (mostly) ignored.  To be
1336   * exact, the following whitespace rules are applied:
1337   * <ul>
1338   *   <li>all leading and trailing whitespace of both the expectedString and the examined string are ignored</li>
1339   *   <li>any remaining whitespace, appearing within either string, is collapsed to a single space before comparison</li>
1340   * </ul>
1341   * For example:
1342   * <pre>assertThat("   my\tfoo  bar ", equalToIgnoringWhiteSpace(" my  foo bar"))</pre>
1343   *
1344   * @param expectedString
1345   *     the expected value of matched strings
1346   */
1347  public static org.hamcrest.Matcher<java.lang.String> equalToIgnoringWhiteSpace(java.lang.String expectedString) {
1348    return org.hamcrest.text.IsEqualIgnoringWhiteSpace.equalToIgnoringWhiteSpace(expectedString);
1349  }
1350
1351  /**
1352   * Creates a matcher of {@link String} that matches when the examined string is <code>null</code>, or
1353   * has zero length.
1354   * For example:
1355   * <pre>assertThat(((String)null), is(emptyOrNullString()))</pre>
1356   */
1357  public static org.hamcrest.Matcher<java.lang.String> emptyOrNullString() {
1358    return org.hamcrest.text.IsEmptyString.emptyOrNullString();
1359  }
1360
1361  /**
1362   * Creates a matcher of {@link String} that matches when the examined string has zero length.
1363   * For example:
1364   * <pre>assertThat("", is(emptyString()))</pre>
1365   */
1366  public static org.hamcrest.Matcher<java.lang.String> emptyString() {
1367    return org.hamcrest.text.IsEmptyString.emptyString();
1368  }
1369
1370  /**
1371   * Creates a matcher of {@link String} that matches when the examined string is <code>null</code>, or
1372   * has zero length.
1373   * For example:
1374   * <pre>assertThat(((String)null), isEmptyOrNullString())</pre>
1375   *
1376   * @deprecated use is(emptyOrNullString()) instead
1377   */
1378  public static org.hamcrest.Matcher<java.lang.String> isEmptyOrNullString() {
1379    return org.hamcrest.text.IsEmptyString.isEmptyOrNullString();
1380  }
1381
1382  /**
1383   * Creates a matcher of {@link String} that matches when the examined string has zero length.
1384   * For example:
1385   * <pre>assertThat("", isEmptyString())</pre>
1386   *
1387   * @deprecated use is(emptyString()) instead
1388   */
1389  public static org.hamcrest.Matcher<java.lang.String> isEmptyString() {
1390    return org.hamcrest.text.IsEmptyString.isEmptyString();
1391  }
1392
1393  /**
1394   * Creates a matcher of {@link String} that matches when the examined string is <code>null</code>, or
1395   * contains zero or more whitespace characters and nothing else.
1396   * For example:
1397   * <pre>assertThat(((String)null), is(blankOrNullString()))</pre>
1398   */
1399  public static org.hamcrest.Matcher<java.lang.String> blankOrNullString() {
1400    return org.hamcrest.text.IsBlankString.blankOrNullString();
1401  }
1402
1403  /**
1404   * Creates a matcher of {@link String} that matches when the examined string contains
1405   * zero or more whitespace characters and nothing else.
1406   * For example:
1407   * <pre>assertThat("  ", is(blankString()))</pre>
1408   */
1409  public static org.hamcrest.Matcher<java.lang.String> blankString() {
1410    return org.hamcrest.text.IsBlankString.blankString();
1411  }
1412
1413  /**
1414   * Creates a matcher of {@link java.lang.String} that matches when the examined string
1415   * exactly matches the given {@link java.util.regex.Pattern}.
1416   */
1417  public static org.hamcrest.Matcher<java.lang.String> matchesPattern(java.util.regex.Pattern pattern) {
1418    return org.hamcrest.text.MatchesPattern.matchesPattern(pattern);
1419  }
1420
1421  /**
1422   * Creates a matcher of {@link java.lang.String} that matches when the examined string
1423   * exactly matches the given regular expression, treated as a {@link java.util.regex.Pattern}.
1424   */
1425  public static org.hamcrest.Matcher<java.lang.String> matchesPattern(java.lang.String regex) {
1426    return org.hamcrest.text.MatchesPattern.matchesPattern(regex);
1427  }
1428
1429  /**
1430   * Creates a matcher of {@link String} that matches when the examined string contains all of
1431   * the specified substrings, considering the order of their appearance.
1432   * For example:
1433   * <pre>assertThat("myfoobarbaz", stringContainsInOrder(Arrays.asList("bar", "foo")))</pre>
1434   * fails as "foo" occurs before "bar" in the string "myfoobarbaz"
1435   *
1436   * @param substrings
1437   *     the substrings that must be contained within matching strings
1438   */
1439  public static org.hamcrest.Matcher<java.lang.String> stringContainsInOrder(java.lang.Iterable<java.lang.String> substrings) {
1440    return org.hamcrest.text.StringContainsInOrder.stringContainsInOrder(substrings);
1441  }
1442
1443  /**
1444   * Creates a matcher of {@link String} that matches when the examined string contains all of
1445   * the specified substrings, considering the order of their appearance.
1446   * For example:
1447   * <pre>assertThat("myfoobarbaz", stringContainsInOrder("bar", "foo"))</pre>
1448   * fails as "foo" occurs before "bar" in the string "myfoobarbaz"
1449   *
1450   * @param substrings
1451   *     the substrings that must be contained within matching strings
1452   */
1453  public static org.hamcrest.Matcher<java.lang.String> stringContainsInOrder(java.lang.String... substrings) {
1454    return org.hamcrest.text.StringContainsInOrder.stringContainsInOrder(substrings);
1455  }
1456
1457  /**
1458   * Creates a matcher that matches any examined object whose <code>toString</code> method
1459   * returns a value that satisfies the specified matcher.
1460   * For example:
1461   * <pre>assertThat(true, hasToString(equalTo("TRUE")))</pre>
1462   *
1463   * @param toStringMatcher
1464   *     the matcher used to verify the toString result
1465   */
1466  public static <T> org.hamcrest.Matcher<T> hasToString(org.hamcrest.Matcher<? super java.lang.String> toStringMatcher) {
1467    return org.hamcrest.object.HasToString.<T>hasToString(toStringMatcher);
1468  }
1469
1470  /**
1471   * Creates a matcher that matches any examined object whose <code>toString</code> method
1472   * returns a value equalTo the specified string.
1473   * For example:
1474   * <pre>assertThat(true, hasToString("TRUE"))</pre>
1475   *
1476   * @param expectedToString
1477   *     the expected toString result
1478   */
1479  public static <T> org.hamcrest.Matcher<T> hasToString(java.lang.String expectedToString) {
1480    return org.hamcrest.object.HasToString.<T>hasToString(expectedToString);
1481  }
1482
1483  /**
1484   * Creates a matcher of {@link Class} that matches when the specified baseType is
1485   * assignable from the examined class.
1486   * For example:
1487   * <pre>assertThat(Integer.class, typeCompatibleWith(Number.class))</pre>
1488   *
1489   * @param baseType
1490   *     the base class to examine classes against
1491   */
1492  public static <T> org.hamcrest.Matcher<java.lang.Class<?>> typeCompatibleWith(java.lang.Class<T> baseType) {
1493    return org.hamcrest.object.IsCompatibleType.<T>typeCompatibleWith(baseType);
1494  }
1495
1496  /**
1497   * Creates a matcher of {@link java.util.EventObject} that matches any object
1498   * derived from <var>eventClass</var> announced by <var>source</var>.
1499   * For example:
1500   * <pre>assertThat(myEvent, is(eventFrom(PropertyChangeEvent.class, myBean)))</pre>
1501   *
1502   * @param eventClass
1503   *     the class of the event to match on
1504   * @param source
1505   *     the source of the event
1506   */
1507  public static org.hamcrest.Matcher<java.util.EventObject> eventFrom(java.lang.Class<? extends java.util.EventObject> eventClass, java.lang.Object source) {
1508    return org.hamcrest.object.IsEventFrom.eventFrom(eventClass, source);
1509  }
1510
1511  /**
1512   * Creates a matcher of {@link java.util.EventObject} that matches any EventObject
1513   * announced by <var>source</var>.
1514   * For example:
1515   * <pre>assertThat(myEvent, is(eventFrom(myBean)))</pre>
1516   *
1517   * @param source
1518   *     the source of the event
1519   */
1520  public static org.hamcrest.Matcher<java.util.EventObject> eventFrom(java.lang.Object source) {
1521    return org.hamcrest.object.IsEventFrom.eventFrom(source);
1522  }
1523
1524  /**
1525   * Creates a matcher of {@link org.w3c.dom.Node}s that matches when the examined node has a value at the
1526   * specified <code>xPath</code> that satisfies the specified <code>valueMatcher</code>.
1527   * For example:
1528   * <pre>assertThat(xml, hasXPath("/root/something[2]/cheese", equalTo("Cheddar")))</pre>
1529   *
1530   * @param xPath
1531   *     the target xpath
1532   * @param valueMatcher
1533   *     matcher for the value at the specified xpath
1534   */
1535  public static org.hamcrest.Matcher<org.w3c.dom.Node> hasXPath(java.lang.String xPath, org.hamcrest.Matcher<java.lang.String> valueMatcher) {
1536    return org.hamcrest.xml.HasXPath.hasXPath(xPath, valueMatcher);
1537  }
1538
1539  /**
1540   * Creates a matcher of {@link org.w3c.dom.Node}s that matches when the examined node has a value at the
1541   * specified <code>xPath</code>, within the specified <code>namespaceContext</code>, that satisfies
1542   * the specified <code>valueMatcher</code>.
1543   * For example:
1544   * <pre>assertThat(xml, hasXPath("/root/something[2]/cheese", myNs, equalTo("Cheddar")))</pre>
1545   *
1546   * @param xPath
1547   *     the target xpath
1548   * @param namespaceContext
1549   *     the namespace for matching nodes
1550   * @param valueMatcher
1551   *     matcher for the value at the specified xpath
1552   */
1553  public static org.hamcrest.Matcher<org.w3c.dom.Node> hasXPath(java.lang.String xPath, javax.xml.namespace.NamespaceContext namespaceContext, org.hamcrest.Matcher<java.lang.String> valueMatcher) {
1554    return org.hamcrest.xml.HasXPath.hasXPath(xPath, namespaceContext, valueMatcher);
1555  }
1556
1557  /**
1558   * Creates a matcher of {@link org.w3c.dom.Node}s that matches when the examined node contains a node
1559   * at the specified <code>xPath</code>, with any content.
1560   * For example:
1561   * <pre>assertThat(xml, hasXPath("/root/something[2]/cheese"))</pre>
1562   *
1563   * @param xPath
1564   *     the target xpath
1565   */
1566  public static org.hamcrest.Matcher<org.w3c.dom.Node> hasXPath(java.lang.String xPath) {
1567    return org.hamcrest.xml.HasXPath.hasXPath(xPath);
1568  }
1569
1570  /**
1571   * Creates a matcher of {@link org.w3c.dom.Node}s that matches when the examined node contains a node
1572   * at the specified <code>xPath</code> within the specified namespace context, with any content.
1573   * For example:
1574   * <pre>assertThat(xml, hasXPath("/root/something[2]/cheese", myNs))</pre>
1575   *
1576   * @param xPath
1577   *     the target xpath
1578   * @param namespaceContext
1579   *     the namespace for matching nodes
1580   */
1581  public static org.hamcrest.Matcher<org.w3c.dom.Node> hasXPath(java.lang.String xPath, javax.xml.namespace.NamespaceContext namespaceContext) {
1582    return org.hamcrest.xml.HasXPath.hasXPath(xPath, namespaceContext);
1583  }
1584
1585}
1586