How to check if the collection contains items in the order given using Hamcrest

advertisements

How to check using Hamcrest if given collection is containing given items in given order? I tried hasItems but it simply ignores the order.

    List<String> list = Arrays.asList("foo", "bar", "boo");

    assertThat(list, hasItems("foo", "boo"));

   //I want this to fail, because the order is different than in "list"
    assertThat(list, hasItems("boo", "foo"));


You can use contains matcher instead, but you probably need to use latest version of Hamcrest. That method checks the order.

assertThat(list, contains("foo", "boo"));

You can also try using containsInAnyOrder if order does not matter to you.

That's the code for contains matcher:

  public static <E> Matcher<Iterable<? extends E>> contains(List<Matcher<? super E>> itemMatchers)
  {
    return IsIterableContainingInOrder.contains(itemMatchers);
  }