package nc.api.gl.testcase.base;
import java.util.Map;
import nc.bs.logging.Logger;
import nccloud.api.testcase.base.AbstractAPITestCase;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONTokener;
public abstract class GLBaseApiTestCase extends AbstractAPITestCase {
private boolean compareFlag = true;
public GLBaseApiTestCase(Map token) {
super(token);
}
public StringBuilder compare(String preJson, String rtnJson) {
StringBuilder sbmsg = null;
try {
Object e = (new JSONTokener(preJson)).nextValue();
Object outData = (new JSONTokener(rtnJson)).nextValue();
sbmsg = this.compareObject("ResultVO", (Object)e, (Object)outData);
} catch (JSONException var6) {
this.compareFlag = false;
Logger.error(var6.getMessage(), var6);
}
super.setCompareFlag(this.compareFlag);
return sbmsg;
}
public String getModule() {
return "gl";
}
private void setRowInfo(StringBuilder sbmsg, String key, Object prevalue, Object rtnvalue) {
sbmsg.append("
").append(key).append(" | ").append(prevalue).append(" | ").append(rtnvalue).append(" | ").append(prevalue.equals(rtnvalue)?"相等":"不相等").append(" |
");
}
private StringBuilder compareArray(String title, JSONArray preData, JSONArray outputData) throws JSONException {
StringBuilder msg = new StringBuilder();
int length = preData.length();
for(int i = 0; i < length; ++i) {
Object preObj = preData.get(i);
Object outObj = outputData.get(i);
StringBuilder subMsg = this.compareObject(title + i, (Object)preObj, (Object)outObj);
msg.append(subMsg);
}
return msg;
}
private StringBuilder compareObject(String title, JSONObject preObj, JSONObject outObj) throws JSONException {
StringBuilder msg = new StringBuilder();
msg.append("比较实体:").append(title).append("
");
msg.append("比较属性名称 | 期望值 | 目的值 | 是否相等 |
");
String[] keys = JSONObject.getNames(preObj);
if(keys != null && keys.length > 0) {
String[] var6 = keys;
int var7 = keys.length;
int var8;
String key;
Object preKeyObj;
StringBuilder subMsg;
for(var8 = 0; var8 < var7; ++var8) {
key = var6[var8];
if(!key.equals("ts")) {
preKeyObj = preObj.get(key);
if(!(preKeyObj instanceof JSONArray) && !(preKeyObj instanceof JSONObject)) {
subMsg = this.compareObject(key, (Object)preObj.get(key), (Object)outObj.get(key));
msg.append(subMsg);
}
}
}
msg.append("
");
var6 = keys;
var7 = keys.length;
for(var8 = 0; var8 < var7; ++var8) {
key = var6[var8];
if(!key.equals("ts")) {
preKeyObj = preObj.get(key);
if(preKeyObj instanceof JSONArray || preKeyObj instanceof JSONObject) {
subMsg = this.compareObject(key, (Object)preObj.get(key), (Object)outObj.get(key));
msg.append(subMsg);
}
}
}
}
return msg;
}
private StringBuilder compareObject(String title, Object preObj, Object outObj) throws JSONException {
StringBuilder msg = new StringBuilder();
StringBuilder subMsg;
if(preObj instanceof JSONArray) {
subMsg = this.compareArray(title, (JSONArray)preObj, (JSONArray)outObj);
msg.append(subMsg);
} else if(preObj instanceof JSONObject) {
subMsg = this.compareObject(title, (JSONObject)((JSONObject)preObj), (JSONObject)((JSONObject)outObj));
msg.append(subMsg);
} else {
this.setRowInfo(msg, title, preObj, outObj);
}
return msg;
}
}