var matches = obj.constructor.toString().match(attributeDef);
if(matches != null)
{
for (var i = 0; i < matches.length; i++)
{
var part = matches[i].split(/[\s\n]/);
var attrLists = part[0].split(",");
var methodObj = eval(part[part.length-1]);
methodObj.__attributes = new Array();
methodObj.__attributes.__all = new Array();
for (var j = 0; j < attrLists.length; j++)
{
if(!/^.+\(.*\)$/.test(attrLists[j].slice(1,-1)))
{
attrLists[j] = "[" + attrLists[j].slice(1,-1) + "()" + "]"; //处理省略括号的情况
}
if(!/^.+Attribute$/.test(attrLists[j].split("(")[0]))
{
attrLists[j] = attrLists[j].split("(")[0] + "Attribute" + "(" + attrLists[j].split("(")[1];
}
var attrObj = eval(eval(attrLists[j])[0]);
methodObj.__attributes.__all.push(attrObj);
methodObj.__attributes[attrLists[j].split("(")[0].replace(/[\[\]]/g,"").replace(/Attribute$/g,"")] = attrObj;
methodObj.__attributes[attrLists[j].split("(")[0].replace(/[\[\]]/g,"")] = attrObj;
}
}
}
}
function UnitTest() //单元测试框架,被赋予[TestMethod]特性的方法会被作为Case执行测试
{
this.errors = 0;
this.passed = 0;
//声明TestMethod特性,testString方法将被runCase方法执行,同时声明了DebugOutput特性,将返回的信息输出到调试窗口
//特性的声明必须放在被指定特性的方法之前,而且要独占一行,如果有多个特性可以以逗号分隔