Package org.jtester.hamcrest.iassert.common.impl

Source Code of org.jtester.hamcrest.iassert.common.impl.ListHasItemsAssert

package org.jtester.hamcrest.iassert.common.impl;

import java.util.ArrayList;
import java.util.List;

import org.jtester.hamcrest.iassert.common.intf.IAssert;
import org.jtester.hamcrest.iassert.common.intf.IListHasItemsAssert;
import org.jtester.hamcrest.matcher.array.ListEveryItemMatcher;
import org.jtester.hamcrest.matcher.modes.ItemsMode;
import org.jtester.hamcrest.matcher.modes.MatchMode;

import ext.jtester.hamcrest.Matcher;
import ext.jtester.hamcrest.collection.IsArrayContaining;
import ext.jtester.hamcrest.core.AllOf;
import ext.jtester.hamcrest.core.AnyOf;
import ext.jtester.hamcrest.core.IsCollectionContaining;

@SuppressWarnings({ "rawtypes" })
public class ListHasItemsAssert<T, E extends IAssert> extends BaseAssert<T, E> implements IListHasItemsAssert<E> {

  public ListHasItemsAssert(Class<? extends IAssert> clazE) {
    super(clazE);
  }

  public ListHasItemsAssert(T value, Class<? extends IAssert> clazE) {
    super(value, clazE);
  }

  public E hasItems(Object item) {
    assert valueClaz != null : "the value asserted must not be null";
    if (this.valueClaz == Object[].class) {
      return this.assertThat(IsArrayContaining.hasItemInArray(item));
    } else {
      return this.assertThat(IsCollectionContaining.hasItem(item));
    }
  }

  public E hasAllItems(Object item, Object... items) {
    List<Matcher> list = this.getHasItemMatchers(item, items);
    Matcher matcher = AllOf.allOf(list);
    return this.assertThat(matcher);
  }

  public E hasAnyItems(Object item, Object... items) {
    List<Matcher> list = this.getHasItemMatchers(item, items);
    Matcher matcher = AnyOf.anyOf(list);
    return this.assertThat(matcher);
  }

  private List<Matcher> getHasItemMatchers(Object item, Object... items) {
    assert valueClaz != null : "the value asserted must not be null";
    List<Matcher> list = new ArrayList<Matcher>();

    if (this.valueClaz == Object[].class) {
      list.add(IsArrayContaining.hasItemInArray(item));
    } else {
      list.add(IsCollectionContaining.hasItem(item));
    }
    if (items == null || items.length == 0) {
      return list;
    }
    for (Object temp : items) {
      if (this.valueClaz == Object[].class) {
        list.add(IsArrayContaining.hasItemInArray(temp));
      } else {
        list.add(IsCollectionContaining.hasItem(temp));
      }
    }
    return list;
  }

  public E match(ItemsMode itemsMode, MatchMode matchMode, Matcher matcher, Matcher... matchers) {
    if (itemsMode == ItemsMode.AllItems && matchMode == MatchMode.MatchAll) {
      return this.allItemsMatchAll(matcher, matchers);
    } else if (itemsMode == ItemsMode.AllItems && matchMode == MatchMode.MatchAny) {
      return this.allItemsMatchAny(matcher, matchers);
    } else if (itemsMode == ItemsMode.AnyItems && matchMode == MatchMode.MatchAll) {
      return this.anyItemsMatchAll(matcher, matchers);
    } else if (itemsMode == ItemsMode.AnyItems && matchMode == MatchMode.MatchAny) {
      return this.anyItemsMatchAny(matcher, matchers);
    } else {
      throw new RuntimeException("the arguments[ItmesMode and MatchMode] of items match API can't be null.");
    }
  }

  private Matcher getAnyItemsMatchAll(Matcher matcher, Matcher... matchers) {
    List<Matcher> list = new ArrayList<Matcher>();
    list.add(matcher);
    for (Matcher m : matchers) {
      list.add(m);
    }
    Matcher allItems = AllOf.allOf(list);
    return new ListEveryItemMatcher(allItems, ItemsMode.AnyItems);
  }

  private List<Matcher> getItemsMatchers(ItemsMode itemsMode, Matcher matcher, Matcher... matchers) {
    List<Matcher> list = new ArrayList<Matcher>();

    ListEveryItemMatcher m1 = new ListEveryItemMatcher(matcher, itemsMode);
    list.add(m1);
    if (matchers == null || matchers.length == 0) {
      return list;
    }
    for (Matcher m : matchers) {
      ListEveryItemMatcher m2 = new ListEveryItemMatcher(m, itemsMode);
      list.add(m2);
    }
    return list;
  }

  public E allItemsMatchAll(Matcher matcher, Matcher... matchers) {
    List<Matcher> list = this.getItemsMatchers(ItemsMode.AllItems, matcher, matchers);
    return this.assertThat(AllOf.allOf(list));
  }

  public E allItemsMatchAny(Matcher matcher, Matcher... matchers) {
    List<Matcher> list = this.getItemsMatchers(ItemsMode.AllItems, matcher, matchers);
    return this.assertThat(AnyOf.anyOf(list));
  }

  public E anyItemsMatchAll(Matcher matcher, Matcher... matchers) {
    Matcher m = this.getAnyItemsMatchAll(matcher, matchers);
    return this.assertThat(m);
  }

  public E anyItemsMatchAny(Matcher matcher, Matcher... matchers) {
    List<Matcher> list = this.getItemsMatchers(ItemsMode.AnyItems, matcher, matchers);
    return this.assertThat(AnyOf.anyOf(list));
  }

//  public E matchAllRegex(String regular, String... regulars) {
//    return this.matchRegex(ItemsMode.AllItems, MatchMode.MatchAll, regular, regulars);
//  }
//
//  public E matchAnyRegex(String regular, String... regulars) {
//    return this.matchRegex(ItemsMode.AllItems, MatchMode.MatchAny, regular, regulars);
//  }
//  private List<Matcher> getItemsMatchers(ItemsMode itemsMode, String regex, String... regexs) {
//    List<Matcher> list = new ArrayList<Matcher>();
//
//    ListEveryItemMatcher matcher1 = new ListEveryItemMatcher(new Matches(regex), itemsMode);
//    list.add(matcher1);
//    if (regexs == null || regexs.length == 0) {
//      return list;
//    }
//    for (String temp : regexs) {
//      ListEveryItemMatcher matcher2 = new ListEveryItemMatcher(new Matches(temp), itemsMode);
//      list.add(matcher2);
//    }
//    return list;
//  }
//  public E matchRegex(ItemsMode itemsMode, MatchMode matchMode, String regular, String... regulars) {
//    if (itemsMode == null) {
//      throw new RuntimeException("the argument[ItemsMode] of items match API can't be null.");
//    }
//    List<Matcher> matchers = null;
//    switch (matchMode) {
//    case MatchAll:
//      switch (itemsMode) {
//      case AllItems:
//        matchers = this.getItemsMatchers(itemsMode, regular, regulars);
//        return this.assertThat(AllOf.allOf(matchers));
//      case AnyItems:
//        Matcher m = this.getAnyItemsMatchAllRegular(regular, regulars);
//        return this.assertThat(m);
//      default:
//        throw new RuntimeException("the argument[ItmesMode] of items match API can't be null.");
//      }
//    case MatchAny:
//      matchers = this.getItemsMatchers(itemsMode, regular, regulars);
//      return this.assertThat(AnyOf.anyOf(matchers));
//    default:
//      throw new RuntimeException("the argument[MatchMode] of items match API can't be null.");
//    }
//  }
//
//  private Matcher getAnyItemsMatchAllRegular(String regular, String... regulars) {
//    List<Matcher> list = new ArrayList<Matcher>();
//    list.add(new Matches(regular));
//    for (String temp : regulars) {
//      list.add(new Matches(temp));
//    }
//    Matcher allItems = AllOf.allOf(list);
//    return new ListEveryItemMatcher(allItems, ItemsMode.AnyItems);
//  }
}
TOP

Related Classes of org.jtester.hamcrest.iassert.common.impl.ListHasItemsAssert

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.