package org.test4j.hamcrest.iassert.common.intf; import org.test4j.hamcrest.matcher.property.reflection.EqMode; import org.test4j.hamcrest.matcher.string.StringMode; import org.test4j.module.ICore.DataMap; import ext.test4j.hamcrest.Matcher; /** * 针对对象属性进行断言 * * @author darui.wudr * @param <E> */ @SuppressWarnings("rawtypes") public interface IReflectionAssert<E extends IAssert> { /** * 断言对象指定的属性(property)值等于期望值<br> * same as "eqByProperty(String, Object)" * * @param property 对象属性名称 * @param expected 期望值 * @return */ E propertyEq(String property, Object expected, EqMode... modes); /** * 断言对象指定的属性(property)值等于期望值字符串 * * @param property * @param expected * @param modes * @return */ E propertyEq(String property, String expected, StringMode mode, StringMode... more); /** * 断言对象的多个属性相等<br> * same as "eqByProperties(String[],Object)" * * @param properties * @param expected * @return */ E propertyEq(String[] properties, Object expected, EqMode... modes); /** * 对象的属性值符合指定的断言器要求 * * @param property * @param expected * @return */ E propertyMatch(String property, Matcher matcher); /** * Same as eqByReflect, will be @Deprecated in the future. * * @See {@link #eqByReflect(Object, EqMode...)} */ E reflectionEq(Object expected, EqMode... modes); /** * 通过反射比较实际值和期望值的属性时,二者的属性是相同的<br> * 属性如果是复杂对象,递归反射比较 * * @param expected 期望对象 * @param modes * 比较模式,详见org.test4j.hamcrest.matcher.property.reflection.EqMode * @return */ E eqByReflect(Object expected, EqMode... modes); /** * 在忽略期望值是null或默认值的情况下二者是相等的 * * @param expected * @return */ E eqIgnoreDefault(Object expected); /** * 在忽略顺序,默认值,日期的情况下二者是相等的 * * @param expected * @return */ E eqIgnoreAll(Object expected); /** * 在忽略元素顺序情况下二者是相等的 * * @param expected * @return */ E eqIgnoreOrder(Object expected); /** * Same as propertyEqMap, will be @deprecated in the future. * * @See {@link #propertyEqMap(DataMap, EqMode...)} * @param expected * @return */ E reflectionEqMap(DataMap expected, EqMode... modes); /** * 把实际对象按照Map中的key值取出来,进行反射比较<br> * 如果对象的属性不在Map中,则不进行比较<br> * 功能和 * "propertyEq(String[] properties, Object expected, EqMode... modes)"类似, * 无非这里是把属性写到了Map中,方便一一对应 * * @param expected * @return */ E propertyEqMap(DataMap expected, EqMode... modes); }