assert utils

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;

import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TreeSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpClientParams;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

public class AssertUtil {

/**
* 比较2个list是否相等:先对list排序,然后调用apache的反射机制对对象的每个字段进行比较
* @param list1
* @param list2
* @return
*/
public static boolean isListEquals(List<? extends Object> list1,
List<? extends Object> list2) {
if (list1.size() != list2.size()) {
return false;
}

sortList(list1);
sortList(list2);

for (int i = 0; i < list1.size(); i++) {
boolean isEqual = EqualsBuilder.reflectionEquals(list1.get(i),
list2.get(i));
if (!isEqual) {
return false;
}
}
return true;
}

/**
* 校验2个对象是否相等
* @param lhs
* @param rhs
* @return
*/
public static boolean isObjectEquals(Object lhs, Object rhs){
return EqualsBuilder.reflectionEquals(lhs, rhs);
}

/**
* 比较2个以逗号分割的字符串是否相等
* @param a
* @param b
* @return
*/
public static boolean compareStr2(String a, String b) {
if(a.length() != b.length()) {
return false;
}
String[] aa = a.split(",");
String[] bb = b.split(",");

if (aa.length != bb.length){
return false;
}

Arrays.sort(aa);
Arrays.sort(bb);

System.out.println(Arrays.toString(aa));
System.out.println(Arrays.toString(bb));

for (int i = 0; i < bb.length; i++) {
if (!aa[i].equals(bb[i])){
return false;
}
}
return true;
}
/**
* 把一个map的值copy到另一个map
* @param attributes
* @param paramsMap
* @return
*/
public static Map<String, String> copyMapData(Map<String,String> attributes, Map<String, String> paramsMap){
if (attributes != null){
for(String key : attributes.keySet()){
paramsMap.put(key, attributes.get(key));
}
}
return paramsMap;
}
/**
  * 在控制台打印输出对象
  * @param obj
  */
public static String toString(Object obj){
return ReflectionToStringBuilder.toString(obj,
ToStringStyle.SHORT_PREFIX_STYLE);
}

/**
* list列表排序
*
* @param list
*/
private static void sortList(List list) {
Collections.sort(list, new Comparator() {
public int compare(Object o1, Object o2) {
return (ReflectionToStringBuilder.toString(o1,
ToStringStyle.SHORT_PREFIX_STYLE))
.compareTo(ReflectionToStringBuilder.toString(o2,
ToStringStyle.SHORT_PREFIX_STYLE));
}
});
}

/**
* http get 请求返回response
* @param url
* @return
*/
public static String httpGetReq(String url){
String responseBody = null;

HttpClient httpClient = new HttpClient();
HttpClientParams params=httpClient.getParams();
params.setHttpElementCharset("UTF-8");
params.setContentCharset("UTF-8");

GetMethod getMethod = new GetMethod(url);
try {
httpClient.executeMethod(getMethod);
responseBody = getMethod.getResponseBodyAsString();
getMethod.releaseConnection();
System.out.println(responseBody);
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return responseBody;
}

public static String getStringNoBlank(String str) {     
        if(str!=null && !"".equals(str)) {     
            Pattern p = Pattern.compile("\\s*|\t|\r|\n");     
            Matcher m = p.matcher(str);     
            String strNoBlank = m.replaceAll("");     
            return strNoBlank;     
        }else {     
            return str;     
        }          
    }

/**
* 校验两个list中对象是否等,校验顺序
* 比较的对象需要实现hashCode方法,覆盖equals方法
* @param tList
* @param oList
*/
public static void assertListEquals2(List<? extends Object> tList, List<? extends Object> oList) {
if ((tList == null) || (oList == null)) {
fail("param not null...");
}

Iterator<? extends Object> tIterator = tList.iterator();
Iterator<? extends Object> oIterator = oList.iterator();

while((tIterator.hasNext() && oIterator.hasNext())) {
Object t = tIterator.next();
Object o = oIterator.next();

if(!t.equals(o)) {
fail(t + " not equals " + o);
}
}
}

/**
* 校验两个list中对象是否等,不校验顺序
* 比较的对象需要实现hashCode、compareTo方法,覆盖equals方法
* @param tList
* @param oList
*/
public static void assertListEquals(List<? extends Object> tList, List<? extends Object> oList) {
if ((tList == null) || (oList == null)) {
fail("param not null...");
}

assertEquals(tList.size(), oList.size());

TreeSet<Object> tSet = new TreeSet<Object>();
tSet.addAll(tList);

TreeSet<Object> oSet = new TreeSet<Object>();
oSet.addAll(oList);

Iterator<Object> tIterator = tSet.iterator();
Iterator<Object> oIterator = oSet.iterator();

while((tIterator.hasNext() && oIterator.hasNext())) {
Object t = tIterator.next();
Object o = oIterator.next();

if(!t.equals(o)) {
fail(t + " not equals " + o);
}
}
}

}

猜你喜欢

转载自zgq456.iteye.com/blog/1939848