/* automatically generated by JSCoverage - do not edit */
try {
  if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
    // this is a browser window that was opened from another window

    if (! top.opener._$jscoverage) {
      top.opener._$jscoverage = {};
    }
  }
}
catch (e) {}

try {
  if (typeof top === 'object' && top !== null) {
    // this is a browser window

    try {
      if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
        top._$jscoverage = top.opener._$jscoverage;
      }
    }
    catch (e) {}

    if (! top._$jscoverage) {
      top._$jscoverage = {};
    }
  }
}
catch (e) {}

try {
  if (typeof top === 'object' && top !== null && top._$jscoverage) {
    this._$jscoverage = top._$jscoverage;
  }
}
catch (e) {}
if (! this._$jscoverage) {
  this._$jscoverage = {};
}
if (! _$jscoverage['build/yuitest/yuitest.js']) {
  _$jscoverage['build/yuitest/yuitest.js'] = [];
  _$jscoverage['build/yuitest/yuitest.js'][7] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][12] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][15] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][25] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][32] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][35] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][36] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][40] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][44] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][50] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][60] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][74] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][75] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][76] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][78] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][79] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][115] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][122] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][129] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][134] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][149] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][156] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][162] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][165] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][166] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][167] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][168] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][172] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][173] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][178] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][187] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][188] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][213] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][229] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][239] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][246] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][253] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][260] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][267] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][274] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][281] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][289] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][290] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][291] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][292] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][293] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][294] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][299] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][308] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][309] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][310] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][312] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][313] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][315] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][316] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][327] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][330] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][339] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][348] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][357] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][360] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][371] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][372] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][377] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][456] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][459] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][460] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][461] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][479] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][482] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][483] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][484] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][485] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][486] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][502] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][503] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][506] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][507] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][508] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][509] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][510] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][530] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][531] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][532] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][533] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][534] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][535] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][537] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][538] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][539] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][540] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][541] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][559] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][560] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][561] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][562] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][564] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][565] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][566] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][569] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][570] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][571] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][572] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][573] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][574] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][576] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][577] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][581] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][595] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][598] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][600] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][601] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][604] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][605] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][606] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][607] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][608] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][609] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][613] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][614] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][615] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][618] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][621] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][630] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][631] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][632] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][635] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][636] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][637] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][641] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][642] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][645] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][646] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][649] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][652] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][655] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][656] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][657] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][658] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][659] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][660] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][664] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][665] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][666] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][667] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][669] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][671] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][672] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][675] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][676] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][677] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][680] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][685] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][689] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][690] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][691] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][694] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][697] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][698] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][699] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][701] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][704] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][705] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][706] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][709] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][712] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][714] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][715] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][726] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][727] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][729] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][733] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][736] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][743] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][744] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][746] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][748] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][751] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][752] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][753] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][756] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][772] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][773] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][774] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][777] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][780] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][783] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][790] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][791] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][793] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][796] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][797] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][798] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][801] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][807] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][810] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][830] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][831] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][832] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][847] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][857] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][869] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][881] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][884] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][887] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][890] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][893] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][897] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][900] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][915] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][932] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][933] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][934] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][936] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][951] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][968] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][969] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][984] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][985] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][999] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1000] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1014] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1015] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1032] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1033] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1046] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1047] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1064] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1065] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1077] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1078] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1091] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1092] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1105] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1106] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1119] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1120] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1133] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1134] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1150] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1151] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1163] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1164] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1176] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1177] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1192] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1193] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1205] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1206] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1218] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1219] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1231] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1232] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1245] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1246] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1266] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1276] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1283] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1287] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1296] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1305] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1323] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1326] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1333] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1340] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1347] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1352] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1361] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1380] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1383] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1390] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1397] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1402] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1411] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1426] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1429] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1436] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1441] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1453] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1456] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1463] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1468] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1482] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1485] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1492] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1499] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1506] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1511] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1525] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1539] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1540] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1543] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1544] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1545] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1549] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1550] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1568] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1569] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1586] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1587] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1590] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1591] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1594] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1595] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1596] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1600] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1601] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1617] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1618] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1621] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1622] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1623] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1627] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1628] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1645] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1646] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1664] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1665] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1668] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1669] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1672] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1673] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1674] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1678] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1679] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1696] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1697] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1698] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1699] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1703] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1706] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1724] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1725] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1728] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1729] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1752] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1753] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1757] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1760] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1761] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1762] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1775] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1776] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1777] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1789] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1790] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1791] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1810] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1811] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1814] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1815] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1833] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1836] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1837] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1838] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1839] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1844] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1848] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1863] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1876] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1879] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1880] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1881] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1885] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1886] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1901] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1902] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1903] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1916] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1917] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1918] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1935] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1946] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1947] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1948] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1949] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1950] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1952] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1965] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1966] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1967] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1968] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1969] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1971] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1976] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][1988] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2099] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2108] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2110] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2113] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2114] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2115] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2118] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2131] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2133] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2134] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2135] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2136] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2137] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2139] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2140] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2142] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2145] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2146] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2148] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2160] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2162] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2166] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2181] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2182] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2185] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2187] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2189] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2190] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2193] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2205] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2215] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2223] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2232] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2239] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2251] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2254] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2255] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2256] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2257] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2258] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2259] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2263] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2264] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2267] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2272] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2300] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2301] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2311] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2316] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2318] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2333] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2334] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2335] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2338] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2352] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2353] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2355] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2370] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2371] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2375] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2376] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2379] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2380] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2381] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2384] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2394] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2395] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2396] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2408] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2409] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2412] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2415] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2416] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2417] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2418] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2419] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2420] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2421] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2422] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2423] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2439] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2442] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2443] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2445] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2447] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2448] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2449] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2452] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2454] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2455] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2458] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2459] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2460] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2463] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2464] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2465] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2468] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2469] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2470] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2473] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2474] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2475] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2478] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2480] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2481] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2484] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2485] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2486] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2489] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2491] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2492] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2494] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2495] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2498] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2502] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2512] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2513] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2524] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2526] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2527] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2529] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2530] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2533] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2534] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2536] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2537] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2538] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2539] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2544] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2546] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2549] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2560] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2567] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2574] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2582] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2590] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2598] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2601] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2615] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2617] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2620] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2637] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2646] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2656] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2657] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2658] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2660] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2661] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2662] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2664] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2676] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2677] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2678] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2679] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2680] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2681] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2682] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2685] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2686] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2688] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2689] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2692] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2693] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2694] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2695] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2696] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2698] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2702] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2705] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2706] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2710] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2711] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2712] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2715] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2716] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2717] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2718] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2720] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2721] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2723] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2724] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2725] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2730] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2731] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2732] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2734] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2735] = 0;
  _$jscoverage['build/yuitest/yuitest.js'][2741] = 0;
}
_$jscoverage['build/yuitest/yuitest.js'].source = ["<span class=\"c\">/*</span>","<span class=\"c\">Copyright (c) 2009, Yahoo! Inc. All rights reserved.</span>","<span class=\"c\">Code licensed under the BSD License:</span>","<span class=\"c\">http://developer.yahoo.net/yui/license.txt</span>","<span class=\"c\">version: 2.8.0r4</span>","<span class=\"c\">*/</span>","YAHOO<span class=\"k\">.</span>namespace<span class=\"k\">(</span><span class=\"s\">\"tool\"</span><span class=\"k\">);</span>","","<span class=\"c\">//-----------------------------------------------------------------------------</span>","<span class=\"c\">// TestCase object</span>","<span class=\"c\">//-----------------------------------------------------------------------------</span>","<span class=\"k\">(</span><span class=\"k\">function</span><span class=\"k\">()</span><span class=\"k\">{</span>","    ","    <span class=\"c\">//used for autogenerating test case names</span>","    <span class=\"k\">var</span> tempId <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Test case containing various tests to run.</span>","<span class=\"c\">     * @param template An object containing any number of test methods, other methods,</span>","<span class=\"c\">     *                 an optional name, and anything else the test case needs.</span>","<span class=\"c\">     * @class TestCase</span>","<span class=\"c\">     * @namespace YAHOO.tool</span>","<span class=\"c\">     * @constructor</span>","<span class=\"c\">     */</span>","    YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestCase <span class=\"k\">=</span> <span class=\"k\">function</span> <span class=\"k\">(</span>template <span class=\"c\">/*:Object*/</span><span class=\"k\">)</span> <span class=\"k\">{</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Special rules for the test case. Possible subobjects</span>","<span class=\"c\">         * are fail, for tests that should fail, and error, for</span>","<span class=\"c\">         * tests that should throw an error.</span>","<span class=\"c\">         */</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>_should <span class=\"c\">/*:Object*/</span> <span class=\"k\">=</span> <span class=\"k\">{}</span><span class=\"k\">;</span>","        ","        <span class=\"c\">//copy over all properties from the template to this object</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> prop <span class=\"k\">in</span> template<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">[</span>prop<span class=\"k\">]</span> <span class=\"k\">=</span> template<span class=\"k\">[</span>prop<span class=\"k\">];</span>","        <span class=\"k\">}</span>    ","        ","        <span class=\"c\">//check for a valid name</span>","        <span class=\"k\">if</span> <span class=\"k\">(!</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isString<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>name<span class=\"k\">))</span><span class=\"k\">{</span>","            <span class=\"c\">/**</span>","<span class=\"c\">             * Name for the test case.</span>","<span class=\"c\">             */</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>name <span class=\"c\">/*:String*/</span> <span class=\"k\">=</span> <span class=\"s\">\"testCase\"</span> <span class=\"k\">+</span> <span class=\"k\">(</span>tempId<span class=\"k\">++);</span>","        <span class=\"k\">}</span>","    ","    <span class=\"k\">}</span><span class=\"k\">;</span>","    ","    ","    YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestCase<span class=\"k\">.</span>prototype <span class=\"k\">=</span> <span class=\"k\">{</span>  ","    ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Resumes a paused test and runs the given function.</span>","<span class=\"c\">         * @param {Function} segment (Optional) The function to run.</span>","<span class=\"c\">         *      If omitted, the test automatically passes.</span>","<span class=\"c\">         * @return {Void}</span>","<span class=\"c\">         * @method resume</span>","<span class=\"c\">         */</span>","        resume <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>segment <span class=\"c\">/*:Function*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","            YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestRunner<span class=\"k\">.</span>resume<span class=\"k\">(</span>segment<span class=\"k\">);</span>","        <span class=\"k\">}</span><span class=\"k\">,</span>","    ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Causes the test case to wait a specified amount of time and then</span>","<span class=\"c\">         * continue executing the given code.</span>","<span class=\"c\">         * @param {Function} segment (Optional) The function to run after the delay.</span>","<span class=\"c\">         *      If omitted, the TestRunner will wait until resume() is called.</span>","<span class=\"c\">         * @param {int} delay (Optional) The number of milliseconds to wait before running</span>","<span class=\"c\">         *      the function. If omitted, defaults to zero.</span>","<span class=\"c\">         * @return {Void}</span>","<span class=\"c\">         * @method wait</span>","<span class=\"c\">         */</span>","        wait <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>segment <span class=\"c\">/*:Function*/</span><span class=\"k\">,</span> delay <span class=\"c\">/*:int*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span><span class=\"k\">{</span>","            <span class=\"k\">var</span> args <span class=\"k\">=</span> arguments<span class=\"k\">;</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isFunction<span class=\"k\">(</span>args<span class=\"k\">[</span><span class=\"s\">0</span><span class=\"k\">]))</span><span class=\"k\">{</span>","                <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestCase<span class=\"k\">.</span>Wait<span class=\"k\">(</span>args<span class=\"k\">[</span><span class=\"s\">0</span><span class=\"k\">],</span> args<span class=\"k\">[</span><span class=\"s\">1</span><span class=\"k\">]);</span>","            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestCase<span class=\"k\">.</span>Wait<span class=\"k\">(</span><span class=\"k\">function</span><span class=\"k\">()</span><span class=\"k\">{</span>","                    YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Assert<span class=\"k\">.</span>fail<span class=\"k\">(</span><span class=\"s\">\"Timeout: wait() called but resume() never called.\"</span><span class=\"k\">);</span>","                <span class=\"k\">}</span><span class=\"k\">,</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isNumber<span class=\"k\">(</span>args<span class=\"k\">[</span><span class=\"s\">0</span><span class=\"k\">])</span> <span class=\"k\">?</span> args<span class=\"k\">[</span><span class=\"s\">0</span><span class=\"k\">]</span> <span class=\"k\">:</span> <span class=\"s\">10000</span><span class=\"k\">));</span>","            <span class=\"k\">}</span>            ","        <span class=\"k\">}</span><span class=\"k\">,</span>","    ","        <span class=\"c\">//-------------------------------------------------------------------------</span>","        <span class=\"c\">// Stub Methods</span>","        <span class=\"c\">//-------------------------------------------------------------------------</span>","    ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Function to run before each test is executed.</span>","<span class=\"c\">         * @return {Void}</span>","<span class=\"c\">         * @method setUp</span>","<span class=\"c\">         */</span>","        setUp <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">()</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">}</span><span class=\"k\">,</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Function to run after each test is executed.</span>","<span class=\"c\">         * @return {Void}</span>","<span class=\"c\">         * @method tearDown</span>","<span class=\"c\">         */</span>","        tearDown<span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">()</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>    ","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">;</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Represents a stoppage in test execution to wait for an amount of time before</span>","<span class=\"c\">     * continuing.</span>","<span class=\"c\">     * @param {Function} segment A function to run when the wait is over.</span>","<span class=\"c\">     * @param {int} delay The number of milliseconds to wait before running the code.</span>","<span class=\"c\">     * @class Wait</span>","<span class=\"c\">     * @namespace YAHOO.tool.TestCase</span>","<span class=\"c\">     * @constructor</span>","<span class=\"c\">     *</span>","<span class=\"c\">     */</span>","    YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestCase<span class=\"k\">.</span>Wait <span class=\"k\">=</span> <span class=\"k\">function</span> <span class=\"k\">(</span>segment <span class=\"c\">/*:Function*/</span><span class=\"k\">,</span> delay <span class=\"c\">/*:int*/</span><span class=\"k\">)</span> <span class=\"k\">{</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * The segment of code to run when the wait is over.</span>","<span class=\"c\">         * @type Function</span>","<span class=\"c\">         * @property segment</span>","<span class=\"c\">         */</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>segment <span class=\"c\">/*:Function*/</span> <span class=\"k\">=</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isFunction<span class=\"k\">(</span>segment<span class=\"k\">)</span> <span class=\"k\">?</span> segment <span class=\"k\">:</span> <span class=\"k\">null</span><span class=\"k\">);</span>","    ","        <span class=\"c\">/**</span>","<span class=\"c\">         * The delay before running the segment of code.</span>","<span class=\"c\">         * @type int</span>","<span class=\"c\">         * @property delay</span>","<span class=\"c\">         */</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>delay <span class=\"c\">/*:int*/</span> <span class=\"k\">=</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isNumber<span class=\"k\">(</span>delay<span class=\"k\">)</span> <span class=\"k\">?</span> delay <span class=\"k\">:</span> <span class=\"s\">0</span><span class=\"k\">);</span>","    ","    <span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"k\">}</span><span class=\"k\">)();</span>","YAHOO<span class=\"k\">.</span>namespace<span class=\"k\">(</span><span class=\"s\">\"tool\"</span><span class=\"k\">);</span>","","","<span class=\"c\">//-----------------------------------------------------------------------------</span>","<span class=\"c\">// TestSuite object</span>","<span class=\"c\">//-----------------------------------------------------------------------------</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * A test suite that can contain a collection of TestCase and TestSuite objects.</span>","<span class=\"c\"> * @param {String||Object} data The name of the test suite or an object containing</span>","<span class=\"c\"> *      a name property as well as setUp and tearDown methods.</span>","<span class=\"c\"> * @namespace YAHOO.tool</span>","<span class=\"c\"> * @class TestSuite</span>","<span class=\"c\"> * @constructor</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestSuite <span class=\"k\">=</span> <span class=\"k\">function</span> <span class=\"k\">(</span>data <span class=\"c\">/*:String||Object*/</span><span class=\"k\">)</span> <span class=\"k\">{</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * The name of the test suite.</span>","<span class=\"c\">     * @type String</span>","<span class=\"c\">     * @property name</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>name <span class=\"c\">/*:String*/</span> <span class=\"k\">=</span> <span class=\"s\">\"\"</span><span class=\"k\">;</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Array of test suites and</span>","<span class=\"c\">     * @private</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>items <span class=\"c\">/*:Array*/</span> <span class=\"k\">=</span> <span class=\"k\">[];</span>","","    <span class=\"c\">//initialize the properties</span>","    <span class=\"k\">if</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isString<span class=\"k\">(</span>data<span class=\"k\">))</span><span class=\"k\">{</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>name <span class=\"k\">=</span> data<span class=\"k\">;</span>","    <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isObject<span class=\"k\">(</span>data<span class=\"k\">))</span><span class=\"k\">{</span>","        YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>augmentObject<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">,</span> data<span class=\"k\">,</span> <span class=\"k\">true</span><span class=\"k\">);</span>","    <span class=\"k\">}</span>","","    <span class=\"c\">//double-check name</span>","    <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>name <span class=\"k\">===</span> <span class=\"s\">\"\"</span><span class=\"k\">)</span><span class=\"k\">{</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>name <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Dom<span class=\"k\">.</span>generateId<span class=\"k\">(</span><span class=\"k\">null</span><span class=\"k\">,</span> <span class=\"s\">\"testSuite\"</span><span class=\"k\">);</span>","    <span class=\"k\">}</span>","","<span class=\"k\">}</span><span class=\"k\">;</span>","","YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestSuite<span class=\"k\">.</span>prototype <span class=\"k\">=</span> <span class=\"k\">{</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Adds a test suite or test case to the test suite.</span>","<span class=\"c\">     * @param {YAHOO.tool.TestSuite||YAHOO.tool.TestCase} testObject The test suite or test case to add.</span>","<span class=\"c\">     * @return {Void}</span>","<span class=\"c\">     * @method add</span>","<span class=\"c\">     */</span>","    add <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>testObject <span class=\"c\">/*:YAHOO.tool.TestSuite*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>testObject <span class=\"k\">instanceof</span> YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestSuite <span class=\"k\">||</span> testObject <span class=\"k\">instanceof</span> YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestCase<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>items<span class=\"k\">.</span>push<span class=\"k\">(</span>testObject<span class=\"k\">);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">//-------------------------------------------------------------------------</span>","    <span class=\"c\">// Stub Methods</span>","    <span class=\"c\">//-------------------------------------------------------------------------</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Function to run before each test is executed.</span>","<span class=\"c\">     * @return {Void}</span>","<span class=\"c\">     * @method setUp</span>","<span class=\"c\">     */</span>","    setUp <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">()</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Function to run after each test is executed.</span>","<span class=\"c\">     * @return {Void}</span>","<span class=\"c\">     * @method tearDown</span>","<span class=\"c\">     */</span>","    tearDown<span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">()</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","    <span class=\"k\">}</span>","    ","<span class=\"k\">}</span><span class=\"k\">;</span>","YAHOO<span class=\"k\">.</span>namespace<span class=\"k\">(</span><span class=\"s\">\"tool\"</span><span class=\"k\">);</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * The YUI test tool</span>","<span class=\"c\"> * @module yuitest</span>","<span class=\"c\"> * @namespace YAHOO.tool</span>","<span class=\"c\"> * @requires yahoo,dom,event,logger</span>","<span class=\"c\"> * @optional event-simulte</span>","<span class=\"c\"> */</span>","","","<span class=\"c\">//-----------------------------------------------------------------------------</span>","<span class=\"c\">// TestRunner object</span>","<span class=\"c\">//-----------------------------------------------------------------------------</span>","","","YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestRunner <span class=\"k\">=</span> <span class=\"k\">(</span><span class=\"k\">function</span><span class=\"k\">()</span><span class=\"k\">{</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * A node in the test tree structure. May represent a TestSuite, TestCase, or</span>","<span class=\"c\">     * test function.</span>","<span class=\"c\">     * @param {Variant} testObject A TestSuite, TestCase, or the name of a test function.</span>","<span class=\"c\">     * @class TestNode</span>","<span class=\"c\">     * @constructor</span>","<span class=\"c\">     * @private</span>","<span class=\"c\">     */</span>","    <span class=\"k\">function</span> TestNode<span class=\"k\">(</span>testObject <span class=\"c\">/*:Variant*/</span><span class=\"k\">)</span><span class=\"k\">{</span>","    ","        <span class=\"c\">/**</span>","<span class=\"c\">         * The TestSuite, TestCase, or test function represented by this node.</span>","<span class=\"c\">         * @type Variant</span>","<span class=\"c\">         * @property testObject</span>","<span class=\"c\">         */</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>testObject <span class=\"k\">=</span> testObject<span class=\"k\">;</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Pointer to this node's first child.</span>","<span class=\"c\">         * @type TestNode</span>","<span class=\"c\">         * @property firstChild</span>","<span class=\"c\">         */</span>        ","        <span class=\"k\">this</span><span class=\"k\">.</span>firstChild <span class=\"c\">/*:TestNode*/</span> <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Pointer to this node's last child.</span>","<span class=\"c\">         * @type TestNode</span>","<span class=\"c\">         * @property lastChild</span>","<span class=\"c\">         */</span>        ","        <span class=\"k\">this</span><span class=\"k\">.</span>lastChild <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Pointer to this node's parent.</span>","<span class=\"c\">         * @type TestNode</span>","<span class=\"c\">         * @property parent</span>","<span class=\"c\">         */</span>        ","        <span class=\"k\">this</span><span class=\"k\">.</span>parent <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span> ","   ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Pointer to this node's next sibling.</span>","<span class=\"c\">         * @type TestNode</span>","<span class=\"c\">         * @property next</span>","<span class=\"c\">         */</span>        ","        <span class=\"k\">this</span><span class=\"k\">.</span>next <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Test results for this test object.</span>","<span class=\"c\">         * @type object</span>","<span class=\"c\">         * @property results</span>","<span class=\"c\">         */</span>                ","        <span class=\"k\">this</span><span class=\"k\">.</span>results <span class=\"c\">/*:Object*/</span> <span class=\"k\">=</span> <span class=\"k\">{</span>","            passed <span class=\"k\">:</span> <span class=\"s\">0</span><span class=\"k\">,</span>","            failed <span class=\"k\">:</span> <span class=\"s\">0</span><span class=\"k\">,</span>","            total <span class=\"k\">:</span> <span class=\"s\">0</span><span class=\"k\">,</span>","            ignored <span class=\"k\">:</span> <span class=\"s\">0</span>","        <span class=\"k\">}</span><span class=\"k\">;</span>","        ","        <span class=\"c\">//initialize results</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>testObject <span class=\"k\">instanceof</span> YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestSuite<span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>results<span class=\"k\">.</span>type <span class=\"k\">=</span> <span class=\"s\">\"testsuite\"</span><span class=\"k\">;</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>results<span class=\"k\">.</span>name <span class=\"k\">=</span> testObject<span class=\"k\">.</span>name<span class=\"k\">;</span>","        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(</span>testObject <span class=\"k\">instanceof</span> YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestCase<span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>results<span class=\"k\">.</span>type <span class=\"k\">=</span> <span class=\"s\">\"testcase\"</span><span class=\"k\">;</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>results<span class=\"k\">.</span>name <span class=\"k\">=</span> testObject<span class=\"k\">.</span>name<span class=\"k\">;</span>","        <span class=\"k\">}</span>","       ","    <span class=\"k\">}</span>","    ","    TestNode<span class=\"k\">.</span>prototype <span class=\"k\">=</span> <span class=\"k\">{</span>","    ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Appends a new test object (TestSuite, TestCase, or test function name) as a child</span>","<span class=\"c\">         * of this node.</span>","<span class=\"c\">         * @param {Variant} testObject A TestSuite, TestCase, or the name of a test function.</span>","<span class=\"c\">         * @return {Void}</span>","<span class=\"c\">         */</span>","        appendChild <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>testObject <span class=\"c\">/*:Variant*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span><span class=\"k\">{</span>","            <span class=\"k\">var</span> node <span class=\"k\">=</span> <span class=\"k\">new</span> TestNode<span class=\"k\">(</span>testObject<span class=\"k\">);</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>firstChild <span class=\"k\">===</span> <span class=\"k\">null</span><span class=\"k\">)</span><span class=\"k\">{</span>","                <span class=\"k\">this</span><span class=\"k\">.</span>firstChild <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>lastChild <span class=\"k\">=</span> node<span class=\"k\">;</span>","            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                <span class=\"k\">this</span><span class=\"k\">.</span>lastChild<span class=\"k\">.</span>next <span class=\"k\">=</span> node<span class=\"k\">;</span>","                <span class=\"k\">this</span><span class=\"k\">.</span>lastChild <span class=\"k\">=</span> node<span class=\"k\">;</span>","            <span class=\"k\">}</span>","            node<span class=\"k\">.</span>parent <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">;</span>","            <span class=\"k\">return</span> node<span class=\"k\">;</span>","        <span class=\"k\">}</span>       ","    <span class=\"k\">}</span><span class=\"k\">;</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Runs test suites and test cases, providing events to allowing for the</span>","<span class=\"c\">     * interpretation of test results.</span>","<span class=\"c\">     * @namespace YAHOO.tool</span>","<span class=\"c\">     * @class TestRunner</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    <span class=\"k\">function</span> TestRunner<span class=\"k\">()</span><span class=\"k\">{</span>","    ","        <span class=\"c\">//inherit from EventProvider</span>","        TestRunner<span class=\"k\">.</span>superclass<span class=\"k\">.</span>constructor<span class=\"k\">.</span>apply<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">,</span>arguments<span class=\"k\">);</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Suite on which to attach all TestSuites and TestCases to be run.</span>","<span class=\"c\">         * @type YAHOO.tool.TestSuite</span>","<span class=\"c\">         * @property masterSuite</span>","<span class=\"c\">         * @private</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         */</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>masterSuite <span class=\"c\">/*:YAHOO.tool.TestSuite*/</span> <span class=\"k\">=</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestSuite<span class=\"k\">(</span><span class=\"s\">\"YUI Test Results\"</span><span class=\"k\">);</span>        ","","        <span class=\"c\">/**</span>","<span class=\"c\">         * Pointer to the current node in the test tree.</span>","<span class=\"c\">         * @type TestNode</span>","<span class=\"c\">         * @private</span>","<span class=\"c\">         * @property _cur</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         */</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>_cur <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Pointer to the root node in the test tree.</span>","<span class=\"c\">         * @type TestNode</span>","<span class=\"c\">         * @private</span>","<span class=\"c\">         * @property _root</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         */</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>_root <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","        ","        <span class=\"c\">//create events</span>","        <span class=\"k\">var</span> events <span class=\"c\">/*:Array*/</span> <span class=\"k\">=</span> <span class=\"k\">[</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>TEST_CASE_BEGIN_EVENT<span class=\"k\">,</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>TEST_CASE_COMPLETE_EVENT<span class=\"k\">,</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>TEST_SUITE_BEGIN_EVENT<span class=\"k\">,</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>TEST_SUITE_COMPLETE_EVENT<span class=\"k\">,</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>TEST_PASS_EVENT<span class=\"k\">,</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>TEST_FAIL_EVENT<span class=\"k\">,</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>TEST_IGNORE_EVENT<span class=\"k\">,</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>COMPLETE_EVENT<span class=\"k\">,</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>BEGIN_EVENT","        <span class=\"k\">];</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span> i <span class=\"k\">&lt;</span> events<span class=\"k\">.</span>length<span class=\"k\">;</span> i<span class=\"k\">++)</span><span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>createEvent<span class=\"k\">(</span>events<span class=\"k\">[</span>i<span class=\"k\">],</span> <span class=\"k\">{</span> scope<span class=\"k\">:</span> <span class=\"k\">this</span> <span class=\"k\">}</span><span class=\"k\">);</span>","        <span class=\"k\">}</span>       ","   ","    <span class=\"k\">}</span>","    ","    YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>extend<span class=\"k\">(</span>TestRunner<span class=\"k\">,</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>EventProvider<span class=\"k\">,</span> <span class=\"k\">{</span>","    ","        <span class=\"c\">//-------------------------------------------------------------------------</span>","        <span class=\"c\">// Constants</span>","        <span class=\"c\">//-------------------------------------------------------------------------</span>","         ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Fires when a test case is opened but before the first </span>","<span class=\"c\">         * test is executed.</span>","<span class=\"c\">         * @event testcasebegin</span>","<span class=\"c\">         */</span>         ","        TEST_CASE_BEGIN_EVENT <span class=\"c\">/*:String*/</span> <span class=\"k\">:</span> <span class=\"s\">\"testcasebegin\"</span><span class=\"k\">,</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Fires when all tests in a test case have been executed.</span>","<span class=\"c\">         * @event testcasecomplete</span>","<span class=\"c\">         */</span>        ","        TEST_CASE_COMPLETE_EVENT <span class=\"c\">/*:String*/</span> <span class=\"k\">:</span> <span class=\"s\">\"testcasecomplete\"</span><span class=\"k\">,</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Fires when a test suite is opened but before the first </span>","<span class=\"c\">         * test is executed.</span>","<span class=\"c\">         * @event testsuitebegin</span>","<span class=\"c\">         */</span>        ","        TEST_SUITE_BEGIN_EVENT <span class=\"c\">/*:String*/</span> <span class=\"k\">:</span> <span class=\"s\">\"testsuitebegin\"</span><span class=\"k\">,</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Fires when all test cases in a test suite have been</span>","<span class=\"c\">         * completed.</span>","<span class=\"c\">         * @event testsuitecomplete</span>","<span class=\"c\">         */</span>        ","        TEST_SUITE_COMPLETE_EVENT <span class=\"c\">/*:String*/</span> <span class=\"k\">:</span> <span class=\"s\">\"testsuitecomplete\"</span><span class=\"k\">,</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Fires when a test has passed.</span>","<span class=\"c\">         * @event pass</span>","<span class=\"c\">         */</span>        ","        TEST_PASS_EVENT <span class=\"c\">/*:String*/</span> <span class=\"k\">:</span> <span class=\"s\">\"pass\"</span><span class=\"k\">,</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Fires when a test has failed.</span>","<span class=\"c\">         * @event fail</span>","<span class=\"c\">         */</span>        ","        TEST_FAIL_EVENT <span class=\"c\">/*:String*/</span> <span class=\"k\">:</span> <span class=\"s\">\"fail\"</span><span class=\"k\">,</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Fires when a test has been ignored.</span>","<span class=\"c\">         * @event ignore</span>","<span class=\"c\">         */</span>        ","        TEST_IGNORE_EVENT <span class=\"c\">/*:String*/</span> <span class=\"k\">:</span> <span class=\"s\">\"ignore\"</span><span class=\"k\">,</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Fires when all test suites and test cases have been completed.</span>","<span class=\"c\">         * @event complete</span>","<span class=\"c\">         */</span>        ","        COMPLETE_EVENT <span class=\"c\">/*:String*/</span> <span class=\"k\">:</span> <span class=\"s\">\"complete\"</span><span class=\"k\">,</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Fires when the run() method is called.</span>","<span class=\"c\">         * @event begin</span>","<span class=\"c\">         */</span>        ","        BEGIN_EVENT <span class=\"c\">/*:String*/</span> <span class=\"k\">:</span> <span class=\"s\">\"begin\"</span><span class=\"k\">,</span>    ","        ","        <span class=\"c\">//-------------------------------------------------------------------------</span>","        <span class=\"c\">// Test Tree-Related Methods</span>","        <span class=\"c\">//-------------------------------------------------------------------------</span>","","        <span class=\"c\">/**</span>","<span class=\"c\">         * Adds a test case to the test tree as a child of the specified node.</span>","<span class=\"c\">         * @param {TestNode} parentNode The node to add the test case to as a child.</span>","<span class=\"c\">         * @param {YAHOO.tool.TestCase} testCase The test case to add.</span>","<span class=\"c\">         * @return {Void}</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         * @private</span>","<span class=\"c\">         * @method _addTestCaseToTestTree</span>","<span class=\"c\">         */</span>","       _addTestCaseToTestTree <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>parentNode <span class=\"c\">/*:TestNode*/</span><span class=\"k\">,</span> testCase <span class=\"c\">/*:YAHOO.tool.TestCase*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span><span class=\"k\">{</span>","            ","            <span class=\"c\">//add the test suite</span>","            <span class=\"k\">var</span> node <span class=\"k\">=</span> parentNode<span class=\"k\">.</span>appendChild<span class=\"k\">(</span>testCase<span class=\"k\">);</span>","            ","            <span class=\"c\">//iterate over the items in the test case</span>","            <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> prop <span class=\"k\">in</span> testCase<span class=\"k\">)</span><span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>prop<span class=\"k\">.</span>indexOf<span class=\"k\">(</span><span class=\"s\">\"test\"</span><span class=\"k\">)</span> <span class=\"k\">===</span> <span class=\"s\">0</span> <span class=\"k\">&amp;&amp;</span> YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isFunction<span class=\"k\">(</span>testCase<span class=\"k\">[</span>prop<span class=\"k\">]))</span><span class=\"k\">{</span>","                    node<span class=\"k\">.</span>appendChild<span class=\"k\">(</span>prop<span class=\"k\">);</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span>","         ","        <span class=\"k\">}</span><span class=\"k\">,</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Adds a test suite to the test tree as a child of the specified node.</span>","<span class=\"c\">         * @param {TestNode} parentNode The node to add the test suite to as a child.</span>","<span class=\"c\">         * @param {YAHOO.tool.TestSuite} testSuite The test suite to add.</span>","<span class=\"c\">         * @return {Void}</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         * @private</span>","<span class=\"c\">         * @method _addTestSuiteToTestTree</span>","<span class=\"c\">         */</span>","        _addTestSuiteToTestTree <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>parentNode <span class=\"c\">/*:TestNode*/</span><span class=\"k\">,</span> testSuite <span class=\"c\">/*:YAHOO.tool.TestSuite*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","            ","            <span class=\"c\">//add the test suite</span>","            <span class=\"k\">var</span> node <span class=\"k\">=</span> parentNode<span class=\"k\">.</span>appendChild<span class=\"k\">(</span>testSuite<span class=\"k\">);</span>","            ","            <span class=\"c\">//iterate over the items in the master suite</span>","            <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span> i <span class=\"k\">&lt;</span> testSuite<span class=\"k\">.</span>items<span class=\"k\">.</span>length<span class=\"k\">;</span> i<span class=\"k\">++)</span><span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>testSuite<span class=\"k\">.</span>items<span class=\"k\">[</span>i<span class=\"k\">]</span> <span class=\"k\">instanceof</span> YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestSuite<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">this</span><span class=\"k\">.</span>_addTestSuiteToTestTree<span class=\"k\">(</span>node<span class=\"k\">,</span> testSuite<span class=\"k\">.</span>items<span class=\"k\">[</span>i<span class=\"k\">]);</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(</span>testSuite<span class=\"k\">.</span>items<span class=\"k\">[</span>i<span class=\"k\">]</span> <span class=\"k\">instanceof</span> YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestCase<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">this</span><span class=\"k\">.</span>_addTestCaseToTestTree<span class=\"k\">(</span>node<span class=\"k\">,</span> testSuite<span class=\"k\">.</span>items<span class=\"k\">[</span>i<span class=\"k\">]);</span>","                <span class=\"k\">}</span>                   ","            <span class=\"k\">}</span>            ","        <span class=\"k\">}</span><span class=\"k\">,</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Builds the test tree based on items in the master suite. The tree is a hierarchical</span>","<span class=\"c\">         * representation of the test suites, test cases, and test functions. The resulting tree</span>","<span class=\"c\">         * is stored in _root and the pointer _cur is set to the root initially.</span>","<span class=\"c\">         * @return {Void}</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         * @private</span>","<span class=\"c\">         * @method _buildTestTree</span>","<span class=\"c\">         */</span>","        _buildTestTree <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">()</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        ","            <span class=\"k\">this</span><span class=\"k\">.</span>_root <span class=\"k\">=</span> <span class=\"k\">new</span> TestNode<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>masterSuite<span class=\"k\">);</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>_cur <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>_root<span class=\"k\">;</span>","            ","            <span class=\"c\">//iterate over the items in the master suite</span>","            <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span> i <span class=\"k\">&lt;</span> <span class=\"k\">this</span><span class=\"k\">.</span>masterSuite<span class=\"k\">.</span>items<span class=\"k\">.</span>length<span class=\"k\">;</span> i<span class=\"k\">++)</span><span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>masterSuite<span class=\"k\">.</span>items<span class=\"k\">[</span>i<span class=\"k\">]</span> <span class=\"k\">instanceof</span> YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestSuite<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">this</span><span class=\"k\">.</span>_addTestSuiteToTestTree<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_root<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">.</span>masterSuite<span class=\"k\">.</span>items<span class=\"k\">[</span>i<span class=\"k\">]);</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>masterSuite<span class=\"k\">.</span>items<span class=\"k\">[</span>i<span class=\"k\">]</span> <span class=\"k\">instanceof</span> YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestCase<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">this</span><span class=\"k\">.</span>_addTestCaseToTestTree<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_root<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">.</span>masterSuite<span class=\"k\">.</span>items<span class=\"k\">[</span>i<span class=\"k\">]);</span>","                <span class=\"k\">}</span>                   ","            <span class=\"k\">}</span>            ","        ","        <span class=\"k\">}</span><span class=\"k\">,</span> ","    ","        <span class=\"c\">//-------------------------------------------------------------------------</span>","        <span class=\"c\">// Private Methods</span>","        <span class=\"c\">//-------------------------------------------------------------------------</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Handles the completion of a test object's tests. Tallies test results </span>","<span class=\"c\">         * from one level up to the next.</span>","<span class=\"c\">         * @param {TestNode} node The TestNode representing the test object.</span>","<span class=\"c\">         * @return {Void}</span>","<span class=\"c\">         * @method _handleTestObjectComplete</span>","<span class=\"c\">         * @private</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         */</span>","        _handleTestObjectComplete <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>node <span class=\"c\">/*:TestNode*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isObject<span class=\"k\">(</span>node<span class=\"k\">.</span>testObject<span class=\"k\">))</span><span class=\"k\">{</span>","                node<span class=\"k\">.</span>parent<span class=\"k\">.</span>results<span class=\"k\">.</span>passed <span class=\"k\">+=</span> node<span class=\"k\">.</span>results<span class=\"k\">.</span>passed<span class=\"k\">;</span>","                node<span class=\"k\">.</span>parent<span class=\"k\">.</span>results<span class=\"k\">.</span>failed <span class=\"k\">+=</span> node<span class=\"k\">.</span>results<span class=\"k\">.</span>failed<span class=\"k\">;</span>","                node<span class=\"k\">.</span>parent<span class=\"k\">.</span>results<span class=\"k\">.</span>total <span class=\"k\">+=</span> node<span class=\"k\">.</span>results<span class=\"k\">.</span>total<span class=\"k\">;</span>                ","                node<span class=\"k\">.</span>parent<span class=\"k\">.</span>results<span class=\"k\">.</span>ignored <span class=\"k\">+=</span> node<span class=\"k\">.</span>results<span class=\"k\">.</span>ignored<span class=\"k\">;</span>                ","                node<span class=\"k\">.</span>parent<span class=\"k\">.</span>results<span class=\"k\">[</span>node<span class=\"k\">.</span>testObject<span class=\"k\">.</span>name<span class=\"k\">]</span> <span class=\"k\">=</span> node<span class=\"k\">.</span>results<span class=\"k\">;</span>","            ","                <span class=\"k\">if</span> <span class=\"k\">(</span>node<span class=\"k\">.</span>testObject <span class=\"k\">instanceof</span> YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestSuite<span class=\"k\">)</span><span class=\"k\">{</span>","                    node<span class=\"k\">.</span>testObject<span class=\"k\">.</span>tearDown<span class=\"k\">();</span>","                    <span class=\"k\">this</span><span class=\"k\">.</span>fireEvent<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>TEST_SUITE_COMPLETE_EVENT<span class=\"k\">,</span> <span class=\"k\">{</span> testSuite<span class=\"k\">:</span> node<span class=\"k\">.</span>testObject<span class=\"k\">,</span> results<span class=\"k\">:</span> node<span class=\"k\">.</span>results<span class=\"k\">}</span><span class=\"k\">);</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(</span>node<span class=\"k\">.</span>testObject <span class=\"k\">instanceof</span> YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestCase<span class=\"k\">)</span><span class=\"k\">{</span>","                    <span class=\"k\">this</span><span class=\"k\">.</span>fireEvent<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>TEST_CASE_COMPLETE_EVENT<span class=\"k\">,</span> <span class=\"k\">{</span> testCase<span class=\"k\">:</span> node<span class=\"k\">.</span>testObject<span class=\"k\">,</span> results<span class=\"k\">:</span> node<span class=\"k\">.</span>results<span class=\"k\">}</span><span class=\"k\">);</span>","                <span class=\"k\">}</span>      ","            <span class=\"k\">}</span> ","        <span class=\"k\">}</span><span class=\"k\">,</span>                ","        ","        <span class=\"c\">//-------------------------------------------------------------------------</span>","        <span class=\"c\">// Navigation Methods</span>","        <span class=\"c\">//-------------------------------------------------------------------------</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Retrieves the next node in the test tree.</span>","<span class=\"c\">         * @return {TestNode} The next node in the test tree or null if the end is reached.</span>","<span class=\"c\">         * @private</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         * @method _next</span>","<span class=\"c\">         */</span>","        _next <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">()</span> <span class=\"c\">/*:TestNode*/</span> <span class=\"k\">{</span>","        ","            <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_cur<span class=\"k\">.</span>firstChild<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">this</span><span class=\"k\">.</span>_cur <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>_cur<span class=\"k\">.</span>firstChild<span class=\"k\">;</span>","            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_cur<span class=\"k\">.</span>next<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">this</span><span class=\"k\">.</span>_cur <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>_cur<span class=\"k\">.</span>next<span class=\"k\">;</span>            ","            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                <span class=\"k\">while</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_cur <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span><span class=\"k\">this</span><span class=\"k\">.</span>_cur<span class=\"k\">.</span>next <span class=\"k\">&amp;&amp;</span> <span class=\"k\">this</span><span class=\"k\">.</span>_cur <span class=\"k\">!==</span> <span class=\"k\">this</span><span class=\"k\">.</span>_root<span class=\"k\">)</span><span class=\"k\">{</span>","                    <span class=\"k\">this</span><span class=\"k\">.</span>_handleTestObjectComplete<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_cur<span class=\"k\">);</span>","                    <span class=\"k\">this</span><span class=\"k\">.</span>_cur <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>_cur<span class=\"k\">.</span>parent<span class=\"k\">;</span>","                <span class=\"k\">}</span>","                ","                <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_cur <span class=\"k\">==</span> <span class=\"k\">this</span><span class=\"k\">.</span>_root<span class=\"k\">)</span><span class=\"k\">{</span>","                    <span class=\"k\">this</span><span class=\"k\">.</span>_cur<span class=\"k\">.</span>results<span class=\"k\">.</span>type <span class=\"k\">=</span> <span class=\"s\">\"report\"</span><span class=\"k\">;</span>","                    <span class=\"k\">this</span><span class=\"k\">.</span>_cur<span class=\"k\">.</span>results<span class=\"k\">.</span>timestamp <span class=\"k\">=</span> <span class=\"k\">(</span><span class=\"k\">new</span> Date<span class=\"k\">()).</span>toLocaleString<span class=\"k\">();</span>","                    <span class=\"k\">this</span><span class=\"k\">.</span>_cur<span class=\"k\">.</span>results<span class=\"k\">.</span>duration <span class=\"k\">=</span> <span class=\"k\">(</span><span class=\"k\">new</span> Date<span class=\"k\">())</span> <span class=\"k\">-</span> <span class=\"k\">this</span><span class=\"k\">.</span>_cur<span class=\"k\">.</span>results<span class=\"k\">.</span>duration<span class=\"k\">;</span>","                    <span class=\"k\">this</span><span class=\"k\">.</span>fireEvent<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>COMPLETE_EVENT<span class=\"k\">,</span> <span class=\"k\">{</span> results<span class=\"k\">:</span> <span class=\"k\">this</span><span class=\"k\">.</span>_cur<span class=\"k\">.</span>results<span class=\"k\">}</span><span class=\"k\">);</span>","                    <span class=\"k\">this</span><span class=\"k\">.</span>_cur <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                    <span class=\"k\">this</span><span class=\"k\">.</span>_handleTestObjectComplete<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_cur<span class=\"k\">);</span>               ","                    <span class=\"k\">this</span><span class=\"k\">.</span>_cur <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>_cur<span class=\"k\">.</span>next<span class=\"k\">;</span>                ","                <span class=\"k\">}</span>","            <span class=\"k\">}</span>","        ","            <span class=\"k\">return</span> <span class=\"k\">this</span><span class=\"k\">.</span>_cur<span class=\"k\">;</span>","        <span class=\"k\">}</span><span class=\"k\">,</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Runs a test case or test suite, returning the results.</span>","<span class=\"c\">         * @param {YAHOO.tool.TestCase|YAHOO.tool.TestSuite} testObject The test case or test suite to run.</span>","<span class=\"c\">         * @return {Object} Results of the execution with properties passed, failed, and total.</span>","<span class=\"c\">         * @private</span>","<span class=\"c\">         * @method _run</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         */</span>","        _run <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">()</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        ","            <span class=\"c\">//flag to indicate if the TestRunner should wait before continuing</span>","            <span class=\"k\">var</span> shouldWait <span class=\"c\">/*:Boolean*/</span> <span class=\"k\">=</span> <span class=\"k\">false</span><span class=\"k\">;</span>","            ","            <span class=\"c\">//get the next test node</span>","            <span class=\"k\">var</span> node <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>_next<span class=\"k\">();</span>","            ","            <span class=\"k\">if</span> <span class=\"k\">(</span>node <span class=\"k\">!==</span> <span class=\"k\">null</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">var</span> testObject <span class=\"k\">=</span> node<span class=\"k\">.</span>testObject<span class=\"k\">;</span>","                ","                <span class=\"c\">//figure out what to do</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isObject<span class=\"k\">(</span>testObject<span class=\"k\">))</span><span class=\"k\">{</span>","                    <span class=\"k\">if</span> <span class=\"k\">(</span>testObject <span class=\"k\">instanceof</span> YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestSuite<span class=\"k\">)</span><span class=\"k\">{</span>","                        <span class=\"k\">this</span><span class=\"k\">.</span>fireEvent<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>TEST_SUITE_BEGIN_EVENT<span class=\"k\">,</span> <span class=\"k\">{</span> testSuite<span class=\"k\">:</span> testObject <span class=\"k\">}</span><span class=\"k\">);</span>","                        testObject<span class=\"k\">.</span>setUp<span class=\"k\">();</span>","                    <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(</span>testObject <span class=\"k\">instanceof</span> YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestCase<span class=\"k\">)</span><span class=\"k\">{</span>","                        <span class=\"k\">this</span><span class=\"k\">.</span>fireEvent<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>TEST_CASE_BEGIN_EVENT<span class=\"k\">,</span> <span class=\"k\">{</span> testCase<span class=\"k\">:</span> testObject <span class=\"k\">}</span><span class=\"k\">);</span>","                    <span class=\"k\">}</span>","                    ","                    <span class=\"c\">//some environments don't support setTimeout</span>","                    <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">typeof</span> setTimeout <span class=\"k\">!=</span> <span class=\"s\">\"undefined\"</span><span class=\"k\">)</span><span class=\"k\">{</span>                    ","                        setTimeout<span class=\"k\">(</span><span class=\"k\">function</span><span class=\"k\">()</span><span class=\"k\">{</span>","                            YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestRunner<span class=\"k\">.</span>_run<span class=\"k\">();</span>","                        <span class=\"k\">}</span><span class=\"k\">,</span> <span class=\"s\">0</span><span class=\"k\">);</span>","                    <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                        <span class=\"k\">this</span><span class=\"k\">.</span>_run<span class=\"k\">();</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                    <span class=\"k\">this</span><span class=\"k\">.</span>_runTest<span class=\"k\">(</span>node<span class=\"k\">);</span>","                <span class=\"k\">}</span>","","            <span class=\"k\">}</span>","        <span class=\"k\">}</span><span class=\"k\">,</span>","        ","        _resumeTest <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>segment <span class=\"c\">/*:Function*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        ","            <span class=\"c\">//get relevant information</span>","            <span class=\"k\">var</span> node <span class=\"c\">/*:TestNode*/</span> <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>_cur<span class=\"k\">;</span>","            <span class=\"k\">var</span> testName <span class=\"c\">/*:String*/</span> <span class=\"k\">=</span> node<span class=\"k\">.</span>testObject<span class=\"k\">;</span>","            <span class=\"k\">var</span> testCase <span class=\"c\">/*:YAHOO.tool.TestCase*/</span> <span class=\"k\">=</span> node<span class=\"k\">.</span>parent<span class=\"k\">.</span>testObject<span class=\"k\">;</span>","            ","            <span class=\"c\">//cancel other waits if available</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>testCase<span class=\"k\">.</span>__yui_wait<span class=\"k\">)</span><span class=\"k\">{</span>","                clearTimeout<span class=\"k\">(</span>testCase<span class=\"k\">.</span>__yui_wait<span class=\"k\">);</span>","                <span class=\"k\">delete</span> testCase<span class=\"k\">.</span>__yui_wait<span class=\"k\">;</span>","            <span class=\"k\">}</span>            ","            ","            <span class=\"c\">//get the \"should\" test cases</span>","            <span class=\"k\">var</span> shouldFail <span class=\"c\">/*:Object*/</span> <span class=\"k\">=</span> <span class=\"k\">(</span>testCase<span class=\"k\">.</span>_should<span class=\"k\">.</span>fail <span class=\"k\">||</span> <span class=\"k\">{}</span><span class=\"k\">)[</span>testName<span class=\"k\">];</span>","            <span class=\"k\">var</span> shouldError <span class=\"c\">/*:Object*/</span> <span class=\"k\">=</span> <span class=\"k\">(</span>testCase<span class=\"k\">.</span>_should<span class=\"k\">.</span>error <span class=\"k\">||</span> <span class=\"k\">{}</span><span class=\"k\">)[</span>testName<span class=\"k\">];</span>","            ","            <span class=\"c\">//variable to hold whether or not the test failed</span>","            <span class=\"k\">var</span> failed <span class=\"c\">/*:Boolean*/</span> <span class=\"k\">=</span> <span class=\"k\">false</span><span class=\"k\">;</span>","            <span class=\"k\">var</span> error <span class=\"c\">/*:Error*/</span> <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","                ","            <span class=\"c\">//try the test</span>","            <span class=\"k\">try</span> <span class=\"k\">{</span>","            ","                <span class=\"c\">//run the test</span>","                segment<span class=\"k\">.</span>apply<span class=\"k\">(</span>testCase<span class=\"k\">);</span>","                ","                <span class=\"c\">//if it should fail, and it got here, then it's a fail because it didn't</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>shouldFail<span class=\"k\">)</span><span class=\"k\">{</span>","                    error <span class=\"k\">=</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>ShouldFail<span class=\"k\">();</span>","                    failed <span class=\"k\">=</span> <span class=\"k\">true</span><span class=\"k\">;</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(</span>shouldError<span class=\"k\">)</span><span class=\"k\">{</span>","                    error <span class=\"k\">=</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>ShouldError<span class=\"k\">();</span>","                    failed <span class=\"k\">=</span> <span class=\"k\">true</span><span class=\"k\">;</span>","                <span class=\"k\">}</span>","                           ","            <span class=\"k\">}</span> <span class=\"k\">catch</span> <span class=\"k\">(</span>thrown <span class=\"c\">/*:Error*/</span><span class=\"k\">)</span><span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>thrown <span class=\"k\">instanceof</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>AssertionError<span class=\"k\">)</span> <span class=\"k\">{</span>","                    <span class=\"k\">if</span> <span class=\"k\">(!</span>shouldFail<span class=\"k\">)</span><span class=\"k\">{</span>","                        error <span class=\"k\">=</span> thrown<span class=\"k\">;</span>","                        failed <span class=\"k\">=</span> <span class=\"k\">true</span><span class=\"k\">;</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(</span>thrown <span class=\"k\">instanceof</span> YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestCase<span class=\"k\">.</span>Wait<span class=\"k\">)</span><span class=\"k\">{</span>","                ","                    <span class=\"k\">if</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isFunction<span class=\"k\">(</span>thrown<span class=\"k\">.</span>segment<span class=\"k\">))</span><span class=\"k\">{</span>","                        <span class=\"k\">if</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isNumber<span class=\"k\">(</span>thrown<span class=\"k\">.</span>delay<span class=\"k\">))</span><span class=\"k\">{</span>","                        ","                            <span class=\"c\">//some environments don't support setTimeout</span>","                            <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">typeof</span> setTimeout <span class=\"k\">!=</span> <span class=\"s\">\"undefined\"</span><span class=\"k\">)</span><span class=\"k\">{</span>","                                testCase<span class=\"k\">.</span>__yui_wait <span class=\"k\">=</span> setTimeout<span class=\"k\">(</span><span class=\"k\">function</span><span class=\"k\">()</span><span class=\"k\">{</span>","                                    YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestRunner<span class=\"k\">.</span>_resumeTest<span class=\"k\">(</span>thrown<span class=\"k\">.</span>segment<span class=\"k\">);</span>","                                <span class=\"k\">}</span><span class=\"k\">,</span> thrown<span class=\"k\">.</span>delay<span class=\"k\">);</span>                             ","                            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                                <span class=\"k\">throw</span> <span class=\"k\">new</span> Error<span class=\"k\">(</span><span class=\"s\">\"Asynchronous tests not supported in this environment.\"</span><span class=\"k\">);</span>","                            <span class=\"k\">}</span>","                        <span class=\"k\">}</span>","                    <span class=\"k\">}</span>","                    ","                    <span class=\"k\">return</span><span class=\"k\">;</span>","                ","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                    <span class=\"c\">//first check to see if it should error</span>","                    <span class=\"k\">if</span> <span class=\"k\">(!</span>shouldError<span class=\"k\">)</span> <span class=\"k\">{</span>                        ","                        error <span class=\"k\">=</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>UnexpectedError<span class=\"k\">(</span>thrown<span class=\"k\">);</span>","                        failed <span class=\"k\">=</span> <span class=\"k\">true</span><span class=\"k\">;</span>","                    <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                        <span class=\"c\">//check to see what type of data we have</span>","                        <span class=\"k\">if</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isString<span class=\"k\">(</span>shouldError<span class=\"k\">))</span><span class=\"k\">{</span>","                            ","                            <span class=\"c\">//if it's a string, check the error message</span>","                            <span class=\"k\">if</span> <span class=\"k\">(</span>thrown<span class=\"k\">.</span>message <span class=\"k\">!=</span> shouldError<span class=\"k\">)</span><span class=\"k\">{</span>","                                error <span class=\"k\">=</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>UnexpectedError<span class=\"k\">(</span>thrown<span class=\"k\">);</span>","                                failed <span class=\"k\">=</span> <span class=\"k\">true</span><span class=\"k\">;</span>                                    ","                            <span class=\"k\">}</span>","                        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isFunction<span class=\"k\">(</span>shouldError<span class=\"k\">))</span><span class=\"k\">{</span>","                        ","                            <span class=\"c\">//if it's a function, see if the error is an instance of it</span>","                            <span class=\"k\">if</span> <span class=\"k\">(!(</span>thrown <span class=\"k\">instanceof</span> shouldError<span class=\"k\">))</span><span class=\"k\">{</span>","                                error <span class=\"k\">=</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>UnexpectedError<span class=\"k\">(</span>thrown<span class=\"k\">);</span>","                                failed <span class=\"k\">=</span> <span class=\"k\">true</span><span class=\"k\">;</span>","                            <span class=\"k\">}</span>","                        ","                        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isObject<span class=\"k\">(</span>shouldError<span class=\"k\">))</span><span class=\"k\">{</span>","                        ","                            <span class=\"c\">//if it's an object, check the instance and message</span>","                            <span class=\"k\">if</span> <span class=\"k\">(!(</span>thrown <span class=\"k\">instanceof</span> shouldError<span class=\"k\">.</span>constructor<span class=\"k\">)</span> <span class=\"k\">||</span> ","                                    thrown<span class=\"k\">.</span>message <span class=\"k\">!=</span> shouldError<span class=\"k\">.</span>message<span class=\"k\">)</span><span class=\"k\">{</span>","                                error <span class=\"k\">=</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>UnexpectedError<span class=\"k\">(</span>thrown<span class=\"k\">);</span>","                                failed <span class=\"k\">=</span> <span class=\"k\">true</span><span class=\"k\">;</span>                                    ","                            <span class=\"k\">}</span>","                        ","                        <span class=\"k\">}</span>","                    ","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span>","                ","            <span class=\"k\">}</span>","            ","            <span class=\"c\">//fireEvent appropriate event</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>failed<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">this</span><span class=\"k\">.</span>fireEvent<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>TEST_FAIL_EVENT<span class=\"k\">,</span> <span class=\"k\">{</span> testCase<span class=\"k\">:</span> testCase<span class=\"k\">,</span> testName<span class=\"k\">:</span> testName<span class=\"k\">,</span> error<span class=\"k\">:</span> error <span class=\"k\">}</span><span class=\"k\">);</span>","            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                <span class=\"k\">this</span><span class=\"k\">.</span>fireEvent<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>TEST_PASS_EVENT<span class=\"k\">,</span> <span class=\"k\">{</span> testCase<span class=\"k\">:</span> testCase<span class=\"k\">,</span> testName<span class=\"k\">:</span> testName <span class=\"k\">}</span><span class=\"k\">);</span>","            <span class=\"k\">}</span>","            ","            <span class=\"c\">//run the tear down</span>","            testCase<span class=\"k\">.</span>tearDown<span class=\"k\">();</span>","            ","            <span class=\"c\">//update results</span>","            node<span class=\"k\">.</span>parent<span class=\"k\">.</span>results<span class=\"k\">[</span>testName<span class=\"k\">]</span> <span class=\"k\">=</span> <span class=\"k\">{</span> ","                result<span class=\"k\">:</span> failed <span class=\"k\">?</span> <span class=\"s\">\"fail\"</span> <span class=\"k\">:</span> <span class=\"s\">\"pass\"</span><span class=\"k\">,</span>","                message<span class=\"k\">:</span> error <span class=\"k\">?</span> error<span class=\"k\">.</span>getMessage<span class=\"k\">()</span> <span class=\"k\">:</span> <span class=\"s\">\"Test passed\"</span><span class=\"k\">,</span>","                type<span class=\"k\">:</span> <span class=\"s\">\"test\"</span><span class=\"k\">,</span>","                name<span class=\"k\">:</span> testName","            <span class=\"k\">}</span><span class=\"k\">;</span>","            ","            <span class=\"k\">if</span> <span class=\"k\">(</span>failed<span class=\"k\">)</span><span class=\"k\">{</span>","                node<span class=\"k\">.</span>parent<span class=\"k\">.</span>results<span class=\"k\">.</span>failed<span class=\"k\">++;</span>","            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                node<span class=\"k\">.</span>parent<span class=\"k\">.</span>results<span class=\"k\">.</span>passed<span class=\"k\">++;</span>","            <span class=\"k\">}</span>","            node<span class=\"k\">.</span>parent<span class=\"k\">.</span>results<span class=\"k\">.</span>total<span class=\"k\">++;</span>","","            <span class=\"c\">//set timeout not supported in all environments</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">typeof</span> setTimeout <span class=\"k\">!=</span> <span class=\"s\">\"undefined\"</span><span class=\"k\">)</span><span class=\"k\">{</span>","                setTimeout<span class=\"k\">(</span><span class=\"k\">function</span><span class=\"k\">()</span><span class=\"k\">{</span>","                    YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestRunner<span class=\"k\">.</span>_run<span class=\"k\">();</span>","                <span class=\"k\">}</span><span class=\"k\">,</span> <span class=\"s\">0</span><span class=\"k\">);</span>","            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                <span class=\"k\">this</span><span class=\"k\">.</span>_run<span class=\"k\">();</span>","            <span class=\"k\">}</span>","        ","        <span class=\"k\">}</span><span class=\"k\">,</span>","                ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Runs a single test based on the data provided in the node.</span>","<span class=\"c\">         * @param {TestNode} node The TestNode representing the test to run.</span>","<span class=\"c\">         * @return {Void}</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         * @private</span>","<span class=\"c\">         * @name _runTest</span>","<span class=\"c\">         */</span>","        _runTest <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>node <span class=\"c\">/*:TestNode*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        ","            <span class=\"c\">//get relevant information</span>","            <span class=\"k\">var</span> testName <span class=\"c\">/*:String*/</span> <span class=\"k\">=</span> node<span class=\"k\">.</span>testObject<span class=\"k\">;</span>","            <span class=\"k\">var</span> testCase <span class=\"c\">/*:YAHOO.tool.TestCase*/</span> <span class=\"k\">=</span> node<span class=\"k\">.</span>parent<span class=\"k\">.</span>testObject<span class=\"k\">;</span>","            <span class=\"k\">var</span> test <span class=\"c\">/*:Function*/</span> <span class=\"k\">=</span> testCase<span class=\"k\">[</span>testName<span class=\"k\">];</span>","            ","            <span class=\"c\">//get the \"should\" test cases</span>","            <span class=\"k\">var</span> shouldIgnore <span class=\"c\">/*:Object*/</span> <span class=\"k\">=</span> <span class=\"k\">(</span>testCase<span class=\"k\">.</span>_should<span class=\"k\">.</span>ignore <span class=\"k\">||</span> <span class=\"k\">{}</span><span class=\"k\">)[</span>testName<span class=\"k\">];</span>","            ","            <span class=\"c\">//figure out if the test should be ignored or not</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>shouldIgnore<span class=\"k\">)</span><span class=\"k\">{</span>","            ","                <span class=\"c\">//update results</span>","                node<span class=\"k\">.</span>parent<span class=\"k\">.</span>results<span class=\"k\">[</span>testName<span class=\"k\">]</span> <span class=\"k\">=</span> <span class=\"k\">{</span> ","                    result<span class=\"k\">:</span> <span class=\"s\">\"ignore\"</span><span class=\"k\">,</span>","                    message<span class=\"k\">:</span> <span class=\"s\">\"Test ignored\"</span><span class=\"k\">,</span>","                    type<span class=\"k\">:</span> <span class=\"s\">\"test\"</span><span class=\"k\">,</span>","                    name<span class=\"k\">:</span> testName","                <span class=\"k\">}</span><span class=\"k\">;</span>","                ","                node<span class=\"k\">.</span>parent<span class=\"k\">.</span>results<span class=\"k\">.</span>ignored<span class=\"k\">++;</span>","                node<span class=\"k\">.</span>parent<span class=\"k\">.</span>results<span class=\"k\">.</span>total<span class=\"k\">++;</span>","            ","                <span class=\"k\">this</span><span class=\"k\">.</span>fireEvent<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>TEST_IGNORE_EVENT<span class=\"k\">,</span> <span class=\"k\">{</span> testCase<span class=\"k\">:</span> testCase<span class=\"k\">,</span> testName<span class=\"k\">:</span> testName <span class=\"k\">}</span><span class=\"k\">);</span>","                ","                <span class=\"c\">//some environments don't support setTimeout</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">typeof</span> setTimeout <span class=\"k\">!=</span> <span class=\"s\">\"undefined\"</span><span class=\"k\">)</span><span class=\"k\">{</span>                    ","                    setTimeout<span class=\"k\">(</span><span class=\"k\">function</span><span class=\"k\">()</span><span class=\"k\">{</span>","                        YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestRunner<span class=\"k\">.</span>_run<span class=\"k\">();</span>","                    <span class=\"k\">}</span><span class=\"k\">,</span> <span class=\"s\">0</span><span class=\"k\">);</span>              ","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                    <span class=\"k\">this</span><span class=\"k\">.</span>_run<span class=\"k\">();</span>","                <span class=\"k\">}</span>","","            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","            ","                <span class=\"c\">//run the setup</span>","                testCase<span class=\"k\">.</span>setUp<span class=\"k\">();</span>","                ","                <span class=\"c\">//now call the body of the test</span>","                <span class=\"k\">this</span><span class=\"k\">.</span>_resumeTest<span class=\"k\">(</span>test<span class=\"k\">);</span>                ","            <span class=\"k\">}</span>","","        <span class=\"k\">}</span><span class=\"k\">,</span>        ","        ","        <span class=\"c\">//-------------------------------------------------------------------------</span>","        <span class=\"c\">// Protected Methods</span>","        <span class=\"c\">//-------------------------------------------------------------------------   </span>","    ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Fires events for the TestRunner. This overrides the default fireEvent()</span>","<span class=\"c\">         * method from EventProvider to add the type property to the data that is</span>","<span class=\"c\">         * passed through on each event call.</span>","<span class=\"c\">         * @param {String} type The type of event to fire.</span>","<span class=\"c\">         * @param {Object} data (Optional) Data for the event.</span>","<span class=\"c\">         * @method fireEvent</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         * @protected</span>","<span class=\"c\">         */</span>","        fireEvent <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>type <span class=\"c\">/*:String*/</span><span class=\"k\">,</span> data <span class=\"c\">/*:Object*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","            data <span class=\"k\">=</span> data <span class=\"k\">||</span> <span class=\"k\">{}</span><span class=\"k\">;</span>","            data<span class=\"k\">.</span>type <span class=\"k\">=</span> type<span class=\"k\">;</span>","            TestRunner<span class=\"k\">.</span>superclass<span class=\"k\">.</span>fireEvent<span class=\"k\">.</span>call<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">,</span> type<span class=\"k\">,</span> data<span class=\"k\">);</span>","        <span class=\"k\">}</span><span class=\"k\">,</span>","        ","        <span class=\"c\">//-------------------------------------------------------------------------</span>","        <span class=\"c\">// Public Methods</span>","        <span class=\"c\">//-------------------------------------------------------------------------   </span>","    ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Adds a test suite or test case to the list of test objects to run.</span>","<span class=\"c\">         * @param testObject Either a TestCase or a TestSuite that should be run.</span>","<span class=\"c\">         * @return {Void}</span>","<span class=\"c\">         * @method add</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         */</span>","        add <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>testObject <span class=\"c\">/*:Object*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>masterSuite<span class=\"k\">.</span>add<span class=\"k\">(</span>testObject<span class=\"k\">);</span>","        <span class=\"k\">}</span><span class=\"k\">,</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Removes all test objects from the runner.</span>","<span class=\"c\">         * @return {Void}</span>","<span class=\"c\">         * @method clear</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         */</span>","        clear <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">()</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>masterSuite<span class=\"k\">.</span>items <span class=\"k\">=</span> <span class=\"k\">[];</span>","        <span class=\"k\">}</span><span class=\"k\">,</span>","        ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Resumes the TestRunner after wait() was called.</span>","<span class=\"c\">         * @param {Function} segment The function to run as the rest</span>","<span class=\"c\">         *      of the haulted test.</span>","<span class=\"c\">         * @return {Void}</span>","<span class=\"c\">         * @method resume</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         */</span>","        resume <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>segment <span class=\"c\">/*:Function*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>_resumeTest<span class=\"k\">(</span>segment <span class=\"k\">||</span> <span class=\"k\">function</span><span class=\"k\">()</span><span class=\"k\">{}</span><span class=\"k\">);</span>","        <span class=\"k\">}</span><span class=\"k\">,</span>","    ","        <span class=\"c\">/**</span>","<span class=\"c\">         * Runs the test suite.</span>","<span class=\"c\">         * @return {Void}</span>","<span class=\"c\">         * @method run</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         */</span>","        run <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>testObject <span class=\"c\">/*:Object*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","            ","            <span class=\"c\">//pointer to runner to avoid scope issues </span>","            <span class=\"k\">var</span> runner <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestRunner<span class=\"k\">;</span>","","            <span class=\"c\">//build the test tree</span>","            runner<span class=\"k\">.</span>_buildTestTree<span class=\"k\">();</span>","            ","            <span class=\"c\">//set when the test started</span>","            runner<span class=\"k\">.</span>_root<span class=\"k\">.</span>results<span class=\"k\">.</span>duration <span class=\"k\">=</span> <span class=\"k\">(</span><span class=\"k\">new</span> Date<span class=\"k\">()).</span>getTime<span class=\"k\">();</span>","            ","            <span class=\"c\">//fire the begin event</span>","            runner<span class=\"k\">.</span>fireEvent<span class=\"k\">(</span>runner<span class=\"k\">.</span>BEGIN_EVENT<span class=\"k\">);</span>","       ","            <span class=\"c\">//begin the testing</span>","            runner<span class=\"k\">.</span>_run<span class=\"k\">();</span>","        <span class=\"k\">}</span>    ","    <span class=\"k\">}</span><span class=\"k\">);</span>","    ","    <span class=\"k\">return</span> <span class=\"k\">new</span> TestRunner<span class=\"k\">();</span>","    ","<span class=\"k\">}</span><span class=\"k\">)();</span>","YAHOO<span class=\"k\">.</span>namespace<span class=\"k\">(</span><span class=\"s\">\"util\"</span><span class=\"k\">);</span>","","<span class=\"c\">//-----------------------------------------------------------------------------</span>","<span class=\"c\">// Assert object</span>","<span class=\"c\">//-----------------------------------------------------------------------------</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * The Assert object provides functions to test JavaScript values against</span>","<span class=\"c\"> * known and expected results. Whenever a comparison (assertion) fails,</span>","<span class=\"c\"> * an error is thrown.</span>","<span class=\"c\"> *</span>","<span class=\"c\"> * @namespace YAHOO.util</span>","<span class=\"c\"> * @class Assert</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Assert <span class=\"k\">=</span> <span class=\"k\">{</span>","","    <span class=\"c\">//-------------------------------------------------------------------------</span>","    <span class=\"c\">// Helper Methods</span>","    <span class=\"c\">//-------------------------------------------------------------------------</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Formats a message so that it can contain the original assertion message</span>","<span class=\"c\">     * in addition to the custom message.</span>","<span class=\"c\">     * @param {String} customMessage The message passed in by the developer.</span>","<span class=\"c\">     * @param {String} defaultMessage The message created by the error by default.</span>","<span class=\"c\">     * @return {String} The final error message, containing either or both.</span>","<span class=\"c\">     * @protected</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     * @method _formatMessage</span>","<span class=\"c\">     */</span>","    _formatMessage <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>customMessage <span class=\"c\">/*:String*/</span><span class=\"k\">,</span> defaultMessage <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:String*/</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> message <span class=\"k\">=</span> customMessage<span class=\"k\">;</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isString<span class=\"k\">(</span>customMessage<span class=\"k\">)</span> <span class=\"k\">&amp;&amp;</span> customMessage<span class=\"k\">.</span>length <span class=\"k\">&gt;</span> <span class=\"s\">0</span><span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">return</span> YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>substitute<span class=\"k\">(</span>customMessage<span class=\"k\">,</span> <span class=\"k\">{</span> message<span class=\"k\">:</span> defaultMessage <span class=\"k\">}</span><span class=\"k\">);</span>","        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","            <span class=\"k\">return</span> defaultMessage<span class=\"k\">;</span>","        <span class=\"k\">}</span>        ","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">//-------------------------------------------------------------------------</span>","    <span class=\"c\">// Generic Assertion Methods</span>","    <span class=\"c\">//-------------------------------------------------------------------------</span>","    ","    <span class=\"c\">/** </span>","<span class=\"c\">     * Forces an assertion error to occur.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display with the failure.</span>","<span class=\"c\">     * @method fail</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    fail <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>AssertionError<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Test force-failed.\"</span><span class=\"k\">));</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>       ","    ","    <span class=\"c\">//-------------------------------------------------------------------------</span>","    <span class=\"c\">// Equality Assertion Methods</span>","    <span class=\"c\">//-------------------------------------------------------------------------    </span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a value is equal to another. This uses the double equals sign</span>","<span class=\"c\">     * so type cohersion may occur.</span>","<span class=\"c\">     * @param {Object} expected The expected value.</span>","<span class=\"c\">     * @param {Object} actual The actual value to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method areEqual</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    areEqual <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>expected <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> actual <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>expected <span class=\"k\">!=</span> actual<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>ComparisonFailure<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Values should be equal.\"</span><span class=\"k\">),</span> expected<span class=\"k\">,</span> actual<span class=\"k\">);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a value is not equal to another. This uses the double equals sign</span>","<span class=\"c\">     * so type cohersion may occur.</span>","<span class=\"c\">     * @param {Object} unexpected The unexpected value.</span>","<span class=\"c\">     * @param {Object} actual The actual value to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method areNotEqual</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    areNotEqual <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>unexpected <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> actual <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> ","                         message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>unexpected <span class=\"k\">==</span> actual<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>UnexpectedValue<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Values should not be equal.\"</span><span class=\"k\">),</span> unexpected<span class=\"k\">);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a value is not the same as another. This uses the triple equals sign</span>","<span class=\"c\">     * so no type cohersion may occur.</span>","<span class=\"c\">     * @param {Object} unexpected The unexpected value.</span>","<span class=\"c\">     * @param {Object} actual The actual value to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method areNotSame</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    areNotSame <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>unexpected <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> actual <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>unexpected <span class=\"k\">===</span> actual<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>UnexpectedValue<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Values should not be the same.\"</span><span class=\"k\">),</span> unexpected<span class=\"k\">);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a value is the same as another. This uses the triple equals sign</span>","<span class=\"c\">     * so no type cohersion may occur.</span>","<span class=\"c\">     * @param {Object} expected The expected value.</span>","<span class=\"c\">     * @param {Object} actual The actual value to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method areSame</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    areSame <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>expected <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> actual <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>expected <span class=\"k\">!==</span> actual<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>ComparisonFailure<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Values should be the same.\"</span><span class=\"k\">),</span> expected<span class=\"k\">,</span> actual<span class=\"k\">);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>    ","    ","    <span class=\"c\">//-------------------------------------------------------------------------</span>","    <span class=\"c\">// Boolean Assertion Methods</span>","    <span class=\"c\">//-------------------------------------------------------------------------    </span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a value is false. This uses the triple equals sign</span>","<span class=\"c\">     * so no type cohersion may occur.</span>","<span class=\"c\">     * @param {Object} actual The actual value to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method isFalse</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    isFalse <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>actual <span class=\"c\">/*:Boolean*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">false</span> <span class=\"k\">!==</span> actual<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>ComparisonFailure<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Value should be false.\"</span><span class=\"k\">),</span> <span class=\"k\">false</span><span class=\"k\">,</span> actual<span class=\"k\">);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a value is true. This uses the triple equals sign</span>","<span class=\"c\">     * so no type cohersion may occur.</span>","<span class=\"c\">     * @param {Object} actual The actual value to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method isTrue</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    isTrue <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>actual <span class=\"c\">/*:Boolean*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">true</span> <span class=\"k\">!==</span> actual<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>ComparisonFailure<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Value should be true.\"</span><span class=\"k\">),</span> <span class=\"k\">true</span><span class=\"k\">,</span> actual<span class=\"k\">);</span>","        <span class=\"k\">}</span>","","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">//-------------------------------------------------------------------------</span>","    <span class=\"c\">// Special Value Assertion Methods</span>","    <span class=\"c\">//-------------------------------------------------------------------------    </span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a value is not a number.</span>","<span class=\"c\">     * @param {Object} actual The value to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method isNaN</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    isNaN <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>actual <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span><span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(!</span>isNaN<span class=\"k\">(</span>actual<span class=\"k\">))</span><span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>ComparisonFailure<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Value should be NaN.\"</span><span class=\"k\">),</span> NaN<span class=\"k\">,</span> actual<span class=\"k\">);</span>","        <span class=\"k\">}</span>    ","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a value is not the special NaN value.</span>","<span class=\"c\">     * @param {Object} actual The value to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method isNotNaN</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    isNotNaN <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>actual <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span><span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>isNaN<span class=\"k\">(</span>actual<span class=\"k\">))</span><span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>UnexpectedValue<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Values should not be NaN.\"</span><span class=\"k\">),</span> NaN<span class=\"k\">);</span>","        <span class=\"k\">}</span>    ","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a value is not null. This uses the triple equals sign</span>","<span class=\"c\">     * so no type cohersion may occur.</span>","<span class=\"c\">     * @param {Object} actual The actual value to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method isNotNull</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    isNotNull <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>actual <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isNull<span class=\"k\">(</span>actual<span class=\"k\">))</span> <span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>UnexpectedValue<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Values should not be null.\"</span><span class=\"k\">),</span> <span class=\"k\">null</span><span class=\"k\">);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a value is not undefined. This uses the triple equals sign</span>","<span class=\"c\">     * so no type cohersion may occur.</span>","<span class=\"c\">     * @param {Object} actual The actual value to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method isNotUndefined</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    isNotUndefined <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>actual <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isUndefined<span class=\"k\">(</span>actual<span class=\"k\">))</span> <span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>UnexpectedValue<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Value should not be undefined.\"</span><span class=\"k\">),</span> undefined<span class=\"k\">);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a value is null. This uses the triple equals sign</span>","<span class=\"c\">     * so no type cohersion may occur.</span>","<span class=\"c\">     * @param {Object} actual The actual value to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method isNull</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    isNull <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>actual <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(!</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isNull<span class=\"k\">(</span>actual<span class=\"k\">))</span> <span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>ComparisonFailure<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Value should be null.\"</span><span class=\"k\">),</span> <span class=\"k\">null</span><span class=\"k\">,</span> actual<span class=\"k\">);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","        ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a value is undefined. This uses the triple equals sign</span>","<span class=\"c\">     * so no type cohersion may occur.</span>","<span class=\"c\">     * @param {Object} actual The actual value to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method isUndefined</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    isUndefined <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>actual <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(!</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isUndefined<span class=\"k\">(</span>actual<span class=\"k\">))</span> <span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>ComparisonFailure<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Value should be undefined.\"</span><span class=\"k\">),</span> undefined<span class=\"k\">,</span> actual<span class=\"k\">);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>    ","    ","    <span class=\"c\">//--------------------------------------------------------------------------</span>","    <span class=\"c\">// Instance Assertion Methods</span>","    <span class=\"c\">//--------------------------------------------------------------------------    </span>","   ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a value is an array.</span>","<span class=\"c\">     * @param {Object} actual The value to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method isArray</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    isArray <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>actual <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(!</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isArray<span class=\"k\">(</span>actual<span class=\"k\">))</span><span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>UnexpectedValue<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Value should be an array.\"</span><span class=\"k\">),</span> actual<span class=\"k\">);</span>","        <span class=\"k\">}</span>    ","    <span class=\"k\">}</span><span class=\"k\">,</span>","   ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a value is a Boolean.</span>","<span class=\"c\">     * @param {Object} actual The value to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method isBoolean</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    isBoolean <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>actual <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(!</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isBoolean<span class=\"k\">(</span>actual<span class=\"k\">))</span><span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>UnexpectedValue<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Value should be a Boolean.\"</span><span class=\"k\">),</span> actual<span class=\"k\">);</span>","        <span class=\"k\">}</span>    ","    <span class=\"k\">}</span><span class=\"k\">,</span>","   ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a value is a function.</span>","<span class=\"c\">     * @param {Object} actual The value to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method isFunction</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    isFunction <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>actual <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(!</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isFunction<span class=\"k\">(</span>actual<span class=\"k\">))</span><span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>UnexpectedValue<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Value should be a function.\"</span><span class=\"k\">),</span> actual<span class=\"k\">);</span>","        <span class=\"k\">}</span>    ","    <span class=\"k\">}</span><span class=\"k\">,</span>","   ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a value is an instance of a particular object. This may return</span>","<span class=\"c\">     * incorrect results when comparing objects from one frame to constructors in</span>","<span class=\"c\">     * another frame. For best results, don't use in a cross-frame manner.</span>","<span class=\"c\">     * @param {Function} expected The function that the object should be an instance of.</span>","<span class=\"c\">     * @param {Object} actual The object to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method isInstanceOf</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    isInstanceOf <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>expected <span class=\"c\">/*:Function*/</span><span class=\"k\">,</span> actual <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(!(</span>actual <span class=\"k\">instanceof</span> expected<span class=\"k\">))</span><span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>ComparisonFailure<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Value isn't an instance of expected type.\"</span><span class=\"k\">),</span> expected<span class=\"k\">,</span> actual<span class=\"k\">);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a value is a number.</span>","<span class=\"c\">     * @param {Object} actual The value to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method isNumber</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    isNumber <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>actual <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(!</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isNumber<span class=\"k\">(</span>actual<span class=\"k\">))</span><span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>UnexpectedValue<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Value should be a number.\"</span><span class=\"k\">),</span> actual<span class=\"k\">);</span>","        <span class=\"k\">}</span>    ","    <span class=\"k\">}</span><span class=\"k\">,</span>    ","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a value is an object.</span>","<span class=\"c\">     * @param {Object} actual The value to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method isObject</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    isObject <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>actual <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(!</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isObject<span class=\"k\">(</span>actual<span class=\"k\">))</span><span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>UnexpectedValue<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Value should be an object.\"</span><span class=\"k\">),</span> actual<span class=\"k\">);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a value is a string.</span>","<span class=\"c\">     * @param {Object} actual The value to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method isString</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    isString <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>actual <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(!</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>isString<span class=\"k\">(</span>actual<span class=\"k\">))</span><span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>UnexpectedValue<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Value should be a string.\"</span><span class=\"k\">),</span> actual<span class=\"k\">);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a value is of a particular type. </span>","<span class=\"c\">     * @param {String} expectedType The expected type of the variable.</span>","<span class=\"c\">     * @param {Object} actualValue The actual value to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method isTypeOf</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    isTypeOf <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>expected <span class=\"c\">/*:String*/</span><span class=\"k\">,</span> actual <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span><span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">typeof</span> actual <span class=\"k\">!=</span> expected<span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>ComparisonFailure<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Value should be of type \"</span> <span class=\"k\">+</span> expected <span class=\"k\">+</span> <span class=\"s\">\".\"</span><span class=\"k\">),</span> expected<span class=\"k\">,</span> <span class=\"k\">typeof</span> actual<span class=\"k\">);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span>","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"c\">//-----------------------------------------------------------------------------</span>","<span class=\"c\">// Assertion errors</span>","<span class=\"c\">//-----------------------------------------------------------------------------</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * AssertionError is thrown whenever an assertion fails. It provides methods</span>","<span class=\"c\"> * to more easily get at error information and also provides a base class</span>","<span class=\"c\"> * from which more specific assertion errors can be derived.</span>","<span class=\"c\"> *</span>","<span class=\"c\"> * @param {String} message The message to display when the error occurs.</span>","<span class=\"c\"> * @namespace YAHOO.util</span>","<span class=\"c\"> * @class AssertionError</span>","<span class=\"c\"> * @extends Error</span>","<span class=\"c\"> * @constructor</span>","<span class=\"c\"> */</span> ","YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>AssertionError <span class=\"k\">=</span> <span class=\"k\">function</span> <span class=\"k\">(</span>message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span><span class=\"k\">{</span>","","    <span class=\"c\">//call superclass</span>","    <span class=\"c\">//arguments.callee.superclass.constructor.call(this, message);</span>","    ","    <span class=\"c\">/*</span>","<span class=\"c\">     * Error message. Must be duplicated to ensure browser receives it.</span>","<span class=\"c\">     * @type String</span>","<span class=\"c\">     * @property message</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>message <span class=\"c\">/*:String*/</span> <span class=\"k\">=</span> message<span class=\"k\">;</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * The name of the error that occurred.</span>","<span class=\"c\">     * @type String</span>","<span class=\"c\">     * @property name</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>name <span class=\"c\">/*:String*/</span> <span class=\"k\">=</span> <span class=\"s\">\"AssertionError\"</span><span class=\"k\">;</span>","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"c\">//inherit methods</span>","YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>extend<span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>AssertionError<span class=\"k\">,</span> Object<span class=\"k\">,</span> <span class=\"k\">{</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Returns a fully formatted error for an assertion failure. This should</span>","<span class=\"c\">     * be overridden by all subclasses to provide specific information.</span>","<span class=\"c\">     * @method getMessage</span>","<span class=\"c\">     * @return {String} A string describing the error.</span>","<span class=\"c\">     */</span>","    getMessage <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">()</span> <span class=\"c\">/*:String*/</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> <span class=\"k\">this</span><span class=\"k\">.</span>message<span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Returns a string representation of the error.</span>","<span class=\"c\">     * @method toString</span>","<span class=\"c\">     * @return {String} A string representation of the error.</span>","<span class=\"c\">     */</span>","    toString <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">()</span> <span class=\"c\">/*:String*/</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> <span class=\"k\">this</span><span class=\"k\">.</span>name <span class=\"k\">+</span> <span class=\"s\">\": \"</span> <span class=\"k\">+</span> <span class=\"k\">this</span><span class=\"k\">.</span>getMessage<span class=\"k\">();</span>","    <span class=\"k\">}</span>","    ","<span class=\"k\">}</span><span class=\"k\">);</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * ComparisonFailure is subclass of AssertionError that is thrown whenever</span>","<span class=\"c\"> * a comparison between two values fails. It provides mechanisms to retrieve</span>","<span class=\"c\"> * both the expected and actual value.</span>","<span class=\"c\"> *</span>","<span class=\"c\"> * @param {String} message The message to display when the error occurs.</span>","<span class=\"c\"> * @param {Object} expected The expected value.</span>","<span class=\"c\"> * @param {Object} actual The actual value that caused the assertion to fail.</span>","<span class=\"c\"> * @namespace YAHOO.util</span>","<span class=\"c\"> * @extends YAHOO.util.AssertionError</span>","<span class=\"c\"> * @class ComparisonFailure</span>","<span class=\"c\"> * @constructor</span>","<span class=\"c\"> */</span> ","YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>ComparisonFailure <span class=\"k\">=</span> <span class=\"k\">function</span> <span class=\"k\">(</span>message <span class=\"c\">/*:String*/</span><span class=\"k\">,</span> expected <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> actual <span class=\"c\">/*:Object*/</span><span class=\"k\">)</span><span class=\"k\">{</span>","","    <span class=\"c\">//call superclass</span>","    YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>AssertionError<span class=\"k\">.</span>call<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">,</span> message<span class=\"k\">);</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * The expected value.</span>","<span class=\"c\">     * @type Object</span>","<span class=\"c\">     * @property expected</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>expected <span class=\"c\">/*:Object*/</span> <span class=\"k\">=</span> expected<span class=\"k\">;</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * The actual value.</span>","<span class=\"c\">     * @type Object</span>","<span class=\"c\">     * @property actual</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>actual <span class=\"c\">/*:Object*/</span> <span class=\"k\">=</span> actual<span class=\"k\">;</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * The name of the error that occurred.</span>","<span class=\"c\">     * @type String</span>","<span class=\"c\">     * @property name</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>name <span class=\"c\">/*:String*/</span> <span class=\"k\">=</span> <span class=\"s\">\"ComparisonFailure\"</span><span class=\"k\">;</span>","    ","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"c\">//inherit methods</span>","YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>extend<span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>ComparisonFailure<span class=\"k\">,</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>AssertionError<span class=\"k\">,</span> <span class=\"k\">{</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Returns a fully formatted error for an assertion failure. This message</span>","<span class=\"c\">     * provides information about the expected and actual values.</span>","<span class=\"c\">     * @method toString</span>","<span class=\"c\">     * @return {String} A string describing the error.</span>","<span class=\"c\">     */</span>","    getMessage <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">()</span> <span class=\"c\">/*:String*/</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> <span class=\"k\">this</span><span class=\"k\">.</span>message <span class=\"k\">+</span> <span class=\"s\">\"</span><span class=\"t\">\\n</span><span class=\"s\">Expected: \"</span> <span class=\"k\">+</span> <span class=\"k\">this</span><span class=\"k\">.</span>expected <span class=\"k\">+</span> <span class=\"s\">\" (\"</span> <span class=\"k\">+</span> <span class=\"k\">(</span><span class=\"k\">typeof</span> <span class=\"k\">this</span><span class=\"k\">.</span>expected<span class=\"k\">)</span> <span class=\"k\">+</span> <span class=\"s\">\")\"</span>  <span class=\"k\">+</span>","            <span class=\"s\">\"</span><span class=\"t\">\\n</span><span class=\"s\">Actual:\"</span> <span class=\"k\">+</span> <span class=\"k\">this</span><span class=\"k\">.</span>actual <span class=\"k\">+</span> <span class=\"s\">\" (\"</span> <span class=\"k\">+</span> <span class=\"k\">(</span><span class=\"k\">typeof</span> <span class=\"k\">this</span><span class=\"k\">.</span>actual<span class=\"k\">)</span> <span class=\"k\">+</span> <span class=\"s\">\")\"</span><span class=\"k\">;</span>","    <span class=\"k\">}</span>","","<span class=\"k\">}</span><span class=\"k\">);</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * UnexpectedValue is subclass of AssertionError that is thrown whenever</span>","<span class=\"c\"> * a value was unexpected in its scope. This typically means that a test</span>","<span class=\"c\"> * was performed to determine that a value was *not* equal to a certain</span>","<span class=\"c\"> * value.</span>","<span class=\"c\"> *</span>","<span class=\"c\"> * @param {String} message The message to display when the error occurs.</span>","<span class=\"c\"> * @param {Object} unexpected The unexpected value.</span>","<span class=\"c\"> * @namespace YAHOO.util</span>","<span class=\"c\"> * @extends YAHOO.util.AssertionError</span>","<span class=\"c\"> * @class UnexpectedValue</span>","<span class=\"c\"> * @constructor</span>","<span class=\"c\"> */</span> ","YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>UnexpectedValue <span class=\"k\">=</span> <span class=\"k\">function</span> <span class=\"k\">(</span>message <span class=\"c\">/*:String*/</span><span class=\"k\">,</span> unexpected <span class=\"c\">/*:Object*/</span><span class=\"k\">)</span><span class=\"k\">{</span>","","    <span class=\"c\">//call superclass</span>","    YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>AssertionError<span class=\"k\">.</span>call<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">,</span> message<span class=\"k\">);</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * The unexpected value.</span>","<span class=\"c\">     * @type Object</span>","<span class=\"c\">     * @property unexpected</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>unexpected <span class=\"c\">/*:Object*/</span> <span class=\"k\">=</span> unexpected<span class=\"k\">;</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * The name of the error that occurred.</span>","<span class=\"c\">     * @type String</span>","<span class=\"c\">     * @property name</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>name <span class=\"c\">/*:String*/</span> <span class=\"k\">=</span> <span class=\"s\">\"UnexpectedValue\"</span><span class=\"k\">;</span>","    ","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"c\">//inherit methods</span>","YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>extend<span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>UnexpectedValue<span class=\"k\">,</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>AssertionError<span class=\"k\">,</span> <span class=\"k\">{</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Returns a fully formatted error for an assertion failure. The message</span>","<span class=\"c\">     * contains information about the unexpected value that was encountered.</span>","<span class=\"c\">     * @method getMessage</span>","<span class=\"c\">     * @return {String} A string describing the error.</span>","<span class=\"c\">     */</span>","    getMessage <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">()</span> <span class=\"c\">/*:String*/</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> <span class=\"k\">this</span><span class=\"k\">.</span>message <span class=\"k\">+</span> <span class=\"s\">\"</span><span class=\"t\">\\n</span><span class=\"s\">Unexpected: \"</span> <span class=\"k\">+</span> <span class=\"k\">this</span><span class=\"k\">.</span>unexpected <span class=\"k\">+</span> <span class=\"s\">\" (\"</span> <span class=\"k\">+</span> <span class=\"k\">(</span><span class=\"k\">typeof</span> <span class=\"k\">this</span><span class=\"k\">.</span>unexpected<span class=\"k\">)</span> <span class=\"k\">+</span> <span class=\"s\">\") \"</span><span class=\"k\">;</span>","    <span class=\"k\">}</span>","","<span class=\"k\">}</span><span class=\"k\">);</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * ShouldFail is subclass of AssertionError that is thrown whenever</span>","<span class=\"c\"> * a test was expected to fail but did not.</span>","<span class=\"c\"> *</span>","<span class=\"c\"> * @param {String} message The message to display when the error occurs.</span>","<span class=\"c\"> * @namespace YAHOO.util</span>","<span class=\"c\"> * @extends YAHOO.util.AssertionError</span>","<span class=\"c\"> * @class ShouldFail</span>","<span class=\"c\"> * @constructor</span>","<span class=\"c\"> */</span>  ","YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>ShouldFail <span class=\"k\">=</span> <span class=\"k\">function</span> <span class=\"k\">(</span>message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span><span class=\"k\">{</span>","","    <span class=\"c\">//call superclass</span>","    YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>AssertionError<span class=\"k\">.</span>call<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">,</span> message <span class=\"k\">||</span> <span class=\"s\">\"This test should fail but didn't.\"</span><span class=\"k\">);</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * The name of the error that occurred.</span>","<span class=\"c\">     * @type String</span>","<span class=\"c\">     * @property name</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>name <span class=\"c\">/*:String*/</span> <span class=\"k\">=</span> <span class=\"s\">\"ShouldFail\"</span><span class=\"k\">;</span>","    ","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"c\">//inherit methods</span>","YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>extend<span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>ShouldFail<span class=\"k\">,</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>AssertionError<span class=\"k\">);</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * ShouldError is subclass of AssertionError that is thrown whenever</span>","<span class=\"c\"> * a test is expected to throw an error but doesn't.</span>","<span class=\"c\"> *</span>","<span class=\"c\"> * @param {String} message The message to display when the error occurs.</span>","<span class=\"c\"> * @namespace YAHOO.util</span>","<span class=\"c\"> * @extends YAHOO.util.AssertionError</span>","<span class=\"c\"> * @class ShouldError</span>","<span class=\"c\"> * @constructor</span>","<span class=\"c\"> */</span>  ","YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>ShouldError <span class=\"k\">=</span> <span class=\"k\">function</span> <span class=\"k\">(</span>message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span><span class=\"k\">{</span>","","    <span class=\"c\">//call superclass</span>","    YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>AssertionError<span class=\"k\">.</span>call<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">,</span> message <span class=\"k\">||</span> <span class=\"s\">\"This test should have thrown an error but didn't.\"</span><span class=\"k\">);</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * The name of the error that occurred.</span>","<span class=\"c\">     * @type String</span>","<span class=\"c\">     * @property name</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>name <span class=\"c\">/*:String*/</span> <span class=\"k\">=</span> <span class=\"s\">\"ShouldError\"</span><span class=\"k\">;</span>","    ","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"c\">//inherit methods</span>","YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>extend<span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>ShouldError<span class=\"k\">,</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>AssertionError<span class=\"k\">);</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * UnexpectedError is subclass of AssertionError that is thrown whenever</span>","<span class=\"c\"> * an error occurs within the course of a test and the test was not expected</span>","<span class=\"c\"> * to throw an error.</span>","<span class=\"c\"> *</span>","<span class=\"c\"> * @param {Error} cause The unexpected error that caused this error to be </span>","<span class=\"c\"> *                      thrown.</span>","<span class=\"c\"> * @namespace YAHOO.util</span>","<span class=\"c\"> * @extends YAHOO.util.AssertionError</span>","<span class=\"c\"> * @class UnexpectedError</span>","<span class=\"c\"> * @constructor</span>","<span class=\"c\"> */</span>  ","YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>UnexpectedError <span class=\"k\">=</span> <span class=\"k\">function</span> <span class=\"k\">(</span>cause <span class=\"c\">/*:Object*/</span><span class=\"k\">)</span><span class=\"k\">{</span>","","    <span class=\"c\">//call superclass</span>","    YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>AssertionError<span class=\"k\">.</span>call<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">,</span> <span class=\"s\">\"Unexpected error: \"</span> <span class=\"k\">+</span> cause<span class=\"k\">.</span>message<span class=\"k\">);</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * The unexpected error that occurred.</span>","<span class=\"c\">     * @type Error</span>","<span class=\"c\">     * @property cause</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>cause <span class=\"c\">/*:Error*/</span> <span class=\"k\">=</span> cause<span class=\"k\">;</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * The name of the error that occurred.</span>","<span class=\"c\">     * @type String</span>","<span class=\"c\">     * @property name</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>name <span class=\"c\">/*:String*/</span> <span class=\"k\">=</span> <span class=\"s\">\"UnexpectedError\"</span><span class=\"k\">;</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Stack information for the error (if provided).</span>","<span class=\"c\">     * @type String</span>","<span class=\"c\">     * @property stack</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>stack <span class=\"c\">/*:String*/</span> <span class=\"k\">=</span> cause<span class=\"k\">.</span>stack<span class=\"k\">;</span>","    ","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"c\">//inherit methods</span>","YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>extend<span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>UnexpectedError<span class=\"k\">,</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>AssertionError<span class=\"k\">);</span>","<span class=\"c\">//-----------------------------------------------------------------------------</span>","<span class=\"c\">// ArrayAssert object</span>","<span class=\"c\">//-----------------------------------------------------------------------------</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * The ArrayAssert object provides functions to test JavaScript array objects</span>","<span class=\"c\"> * for a variety of cases.</span>","<span class=\"c\"> *</span>","<span class=\"c\"> * @namespace YAHOO.util</span>","<span class=\"c\"> * @class ArrayAssert</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> */</span>"," ","YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>ArrayAssert <span class=\"k\">=</span> <span class=\"k\">{</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a value is present in an array. This uses the triple equals </span>","<span class=\"c\">     * sign so no type cohersion may occur.</span>","<span class=\"c\">     * @param {Object} needle The value that is expected in the array.</span>","<span class=\"c\">     * @param {Array} haystack An array of values.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method contains</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    contains <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>needle <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> haystack <span class=\"c\">/*:Array*/</span><span class=\"k\">,</span> ","                           message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        ","        <span class=\"k\">var</span> found <span class=\"c\">/*:Boolean*/</span> <span class=\"k\">=</span> <span class=\"k\">false</span><span class=\"k\">;</span>","        <span class=\"k\">var</span> Assert <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Assert<span class=\"k\">;</span>","        ","        <span class=\"c\">//begin checking values</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span> i <span class=\"k\">&lt;</span> haystack<span class=\"k\">.</span>length <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>found<span class=\"k\">;</span> i<span class=\"k\">++)</span><span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>haystack<span class=\"k\">[</span>i<span class=\"k\">]</span> <span class=\"k\">===</span> needle<span class=\"k\">)</span> <span class=\"k\">{</span>","                found <span class=\"k\">=</span> <span class=\"k\">true</span><span class=\"k\">;</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","        ","        <span class=\"k\">if</span> <span class=\"k\">(!</span>found<span class=\"k\">)</span><span class=\"k\">{</span>","            Assert<span class=\"k\">.</span>fail<span class=\"k\">(</span>Assert<span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Value \"</span> <span class=\"k\">+</span> needle <span class=\"k\">+</span> <span class=\"s\">\" (\"</span> <span class=\"k\">+</span> <span class=\"k\">(</span><span class=\"k\">typeof</span> needle<span class=\"k\">)</span> <span class=\"k\">+</span> <span class=\"s\">\") not found in array [\"</span> <span class=\"k\">+</span> haystack <span class=\"k\">+</span> <span class=\"s\">\"].\"</span><span class=\"k\">));</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a set of values are present in an array. This uses the triple equals </span>","<span class=\"c\">     * sign so no type cohersion may occur. For this assertion to pass, all values must</span>","<span class=\"c\">     * be found.</span>","<span class=\"c\">     * @param {Object[]} needles An array of values that are expected in the array.</span>","<span class=\"c\">     * @param {Array} haystack An array of values to check.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method containsItems</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    containsItems <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>needles <span class=\"c\">/*:Object[]*/</span><span class=\"k\">,</span> haystack <span class=\"c\">/*:Array*/</span><span class=\"k\">,</span> ","                           message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","","        <span class=\"c\">//begin checking values</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span> i <span class=\"k\">&lt;</span> needles<span class=\"k\">.</span>length<span class=\"k\">;</span> i<span class=\"k\">++)</span><span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>contains<span class=\"k\">(</span>needles<span class=\"k\">[</span>i<span class=\"k\">],</span> haystack<span class=\"k\">,</span> message<span class=\"k\">);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a value matching some condition is present in an array. This uses</span>","<span class=\"c\">     * a function to determine a match.</span>","<span class=\"c\">     * @param {Function} matcher A function that returns true if the items matches or false if not.</span>","<span class=\"c\">     * @param {Array} haystack An array of values.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method containsMatch</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    containsMatch <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>matcher <span class=\"c\">/*:Function*/</span><span class=\"k\">,</span> haystack <span class=\"c\">/*:Array*/</span><span class=\"k\">,</span> ","                           message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        ","        <span class=\"c\">//check for valid matcher</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">typeof</span> matcher <span class=\"k\">!=</span> <span class=\"s\">\"function\"</span><span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> TypeError<span class=\"k\">(</span><span class=\"s\">\"ArrayAssert.containsMatch(): First argument must be a function.\"</span><span class=\"k\">);</span>","        <span class=\"k\">}</span>","        ","        <span class=\"k\">var</span> found <span class=\"c\">/*:Boolean*/</span> <span class=\"k\">=</span> <span class=\"k\">false</span><span class=\"k\">;</span>","        <span class=\"k\">var</span> Assert <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Assert<span class=\"k\">;</span>","        ","        <span class=\"c\">//begin checking values</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span> i <span class=\"k\">&lt;</span> haystack<span class=\"k\">.</span>length <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>found<span class=\"k\">;</span> i<span class=\"k\">++)</span><span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>matcher<span class=\"k\">(</span>haystack<span class=\"k\">[</span>i<span class=\"k\">]))</span> <span class=\"k\">{</span>","                found <span class=\"k\">=</span> <span class=\"k\">true</span><span class=\"k\">;</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","        ","        <span class=\"k\">if</span> <span class=\"k\">(!</span>found<span class=\"k\">)</span><span class=\"k\">{</span>","            Assert<span class=\"k\">.</span>fail<span class=\"k\">(</span>Assert<span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"No match found in array [\"</span> <span class=\"k\">+</span> haystack <span class=\"k\">+</span> <span class=\"s\">\"].\"</span><span class=\"k\">));</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a value is not present in an array. This uses the triple equals </span>","<span class=\"c\">     * sign so no type cohersion may occur.</span>","<span class=\"c\">     * @param {Object} needle The value that is expected in the array.</span>","<span class=\"c\">     * @param {Array} haystack An array of values.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method doesNotContain</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    doesNotContain <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>needle <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> haystack <span class=\"c\">/*:Array*/</span><span class=\"k\">,</span> ","                           message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        ","        <span class=\"k\">var</span> found <span class=\"c\">/*:Boolean*/</span> <span class=\"k\">=</span> <span class=\"k\">false</span><span class=\"k\">;</span>","        <span class=\"k\">var</span> Assert <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Assert<span class=\"k\">;</span>","        ","        <span class=\"c\">//begin checking values</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span> i <span class=\"k\">&lt;</span> haystack<span class=\"k\">.</span>length <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>found<span class=\"k\">;</span> i<span class=\"k\">++)</span><span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>haystack<span class=\"k\">[</span>i<span class=\"k\">]</span> <span class=\"k\">===</span> needle<span class=\"k\">)</span> <span class=\"k\">{</span>","                found <span class=\"k\">=</span> <span class=\"k\">true</span><span class=\"k\">;</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","        ","        <span class=\"k\">if</span> <span class=\"k\">(</span>found<span class=\"k\">)</span><span class=\"k\">{</span>","            Assert<span class=\"k\">.</span>fail<span class=\"k\">(</span>Assert<span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Value found in array [\"</span> <span class=\"k\">+</span> haystack <span class=\"k\">+</span> <span class=\"s\">\"].\"</span><span class=\"k\">));</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a set of values are not present in an array. This uses the triple equals </span>","<span class=\"c\">     * sign so no type cohersion may occur. For this assertion to pass, all values must</span>","<span class=\"c\">     * not be found.</span>","<span class=\"c\">     * @param {Object[]} needles An array of values that are not expected in the array.</span>","<span class=\"c\">     * @param {Array} haystack An array of values to check.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method doesNotContainItems</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    doesNotContainItems <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>needles <span class=\"c\">/*:Object[]*/</span><span class=\"k\">,</span> haystack <span class=\"c\">/*:Array*/</span><span class=\"k\">,</span> ","                           message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","","        <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span> i <span class=\"k\">&lt;</span> needles<span class=\"k\">.</span>length<span class=\"k\">;</span> i<span class=\"k\">++)</span><span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>doesNotContain<span class=\"k\">(</span>needles<span class=\"k\">[</span>i<span class=\"k\">],</span> haystack<span class=\"k\">,</span> message<span class=\"k\">);</span>","        <span class=\"k\">}</span>","","    <span class=\"k\">}</span><span class=\"k\">,</span>","        ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that no values matching a condition are present in an array. This uses</span>","<span class=\"c\">     * a function to determine a match.</span>","<span class=\"c\">     * @param {Function} matcher A function that returns true if the items matches or false if not.</span>","<span class=\"c\">     * @param {Array} haystack An array of values.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method doesNotContainMatch</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    doesNotContainMatch <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>matcher <span class=\"c\">/*:Function*/</span><span class=\"k\">,</span> haystack <span class=\"c\">/*:Array*/</span><span class=\"k\">,</span> ","                           message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        ","        <span class=\"c\">//check for valid matcher</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">typeof</span> matcher <span class=\"k\">!=</span> <span class=\"s\">\"function\"</span><span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> TypeError<span class=\"k\">(</span><span class=\"s\">\"ArrayAssert.doesNotContainMatch(): First argument must be a function.\"</span><span class=\"k\">);</span>","        <span class=\"k\">}</span>","","        <span class=\"k\">var</span> found <span class=\"c\">/*:Boolean*/</span> <span class=\"k\">=</span> <span class=\"k\">false</span><span class=\"k\">;</span>","        <span class=\"k\">var</span> Assert <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Assert<span class=\"k\">;</span>","        ","        <span class=\"c\">//begin checking values</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span> i <span class=\"k\">&lt;</span> haystack<span class=\"k\">.</span>length <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>found<span class=\"k\">;</span> i<span class=\"k\">++)</span><span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>matcher<span class=\"k\">(</span>haystack<span class=\"k\">[</span>i<span class=\"k\">]))</span> <span class=\"k\">{</span>","                found <span class=\"k\">=</span> <span class=\"k\">true</span><span class=\"k\">;</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","        ","        <span class=\"k\">if</span> <span class=\"k\">(</span>found<span class=\"k\">)</span><span class=\"k\">{</span>","            Assert<span class=\"k\">.</span>fail<span class=\"k\">(</span>Assert<span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Value found in array [\"</span> <span class=\"k\">+</span> haystack <span class=\"k\">+</span> <span class=\"s\">\"].\"</span><span class=\"k\">));</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","        ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that the given value is contained in an array at the specified index.</span>","<span class=\"c\">     * This uses the triple equals sign so no type cohersion will occur.</span>","<span class=\"c\">     * @param {Object} needle The value to look for.</span>","<span class=\"c\">     * @param {Array} haystack The array to search in.</span>","<span class=\"c\">     * @param {int} index The index at which the value should exist.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method indexOf</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    indexOf <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>needle <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> haystack <span class=\"c\">/*:Array*/</span><span class=\"k\">,</span> index <span class=\"c\">/*:int*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","    ","        <span class=\"c\">//try to find the value in the array</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span> i <span class=\"k\">&lt;</span> haystack<span class=\"k\">.</span>length<span class=\"k\">;</span> i<span class=\"k\">++)</span><span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>haystack<span class=\"k\">[</span>i<span class=\"k\">]</span> <span class=\"k\">===</span> needle<span class=\"k\">)</span><span class=\"k\">{</span>","                YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Assert<span class=\"k\">.</span>areEqual<span class=\"k\">(</span>index<span class=\"k\">,</span> i<span class=\"k\">,</span> message <span class=\"k\">||</span> <span class=\"s\">\"Value exists at index \"</span> <span class=\"k\">+</span> i <span class=\"k\">+</span> <span class=\"s\">\" but should be at index \"</span> <span class=\"k\">+</span> index <span class=\"k\">+</span> <span class=\"s\">\".\"</span><span class=\"k\">);</span>","                <span class=\"k\">return</span><span class=\"k\">;</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","        ","        <span class=\"k\">var</span> Assert <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Assert<span class=\"k\">;</span>","        ","        <span class=\"c\">//if it makes it here, it wasn't found at all</span>","        Assert<span class=\"k\">.</span>fail<span class=\"k\">(</span>Assert<span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Value doesn't exist in array [\"</span> <span class=\"k\">+</span> haystack <span class=\"k\">+</span> <span class=\"s\">\"].\"</span><span class=\"k\">));</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","        ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that the values in an array are equal, and in the same position,</span>","<span class=\"c\">     * as values in another array. This uses the double equals sign</span>","<span class=\"c\">     * so type cohersion may occur. Note that the array objects themselves</span>","<span class=\"c\">     * need not be the same for this test to pass.</span>","<span class=\"c\">     * @param {Array} expected An array of the expected values.</span>","<span class=\"c\">     * @param {Array} actual Any array of the actual values.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method itemsAreEqual</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    itemsAreEqual <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>expected <span class=\"c\">/*:Array*/</span><span class=\"k\">,</span> actual <span class=\"c\">/*:Array*/</span><span class=\"k\">,</span> ","                           message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        ","        <span class=\"c\">//one may be longer than the other, so get the maximum length</span>","        <span class=\"k\">var</span> len <span class=\"c\">/*:int*/</span> <span class=\"k\">=</span> Math<span class=\"k\">.</span>max<span class=\"k\">(</span>expected<span class=\"k\">.</span>length<span class=\"k\">,</span> actual<span class=\"k\">.</span>length <span class=\"k\">||</span> <span class=\"s\">0</span><span class=\"k\">);</span>","        <span class=\"k\">var</span> Assert <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Assert<span class=\"k\">;</span>","       ","        <span class=\"c\">//begin checking values</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span> i <span class=\"k\">&lt;</span> len<span class=\"k\">;</span> i<span class=\"k\">++)</span><span class=\"k\">{</span>","            Assert<span class=\"k\">.</span>areEqual<span class=\"k\">(</span>expected<span class=\"k\">[</span>i<span class=\"k\">],</span> actual<span class=\"k\">[</span>i<span class=\"k\">],</span> ","                Assert<span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Values in position \"</span> <span class=\"k\">+</span> i <span class=\"k\">+</span> <span class=\"s\">\" are not equal.\"</span><span class=\"k\">));</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that the values in an array are equivalent, and in the same position,</span>","<span class=\"c\">     * as values in another array. This uses a function to determine if the values</span>","<span class=\"c\">     * are equivalent. Note that the array objects themselves</span>","<span class=\"c\">     * need not be the same for this test to pass.</span>","<span class=\"c\">     * @param {Array} expected An array of the expected values.</span>","<span class=\"c\">     * @param {Array} actual Any array of the actual values.</span>","<span class=\"c\">     * @param {Function} comparator A function that returns true if the values are equivalent</span>","<span class=\"c\">     *      or false if not.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @return {Void}</span>","<span class=\"c\">     * @method itemsAreEquivalent</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    itemsAreEquivalent <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>expected <span class=\"c\">/*:Array*/</span><span class=\"k\">,</span> actual <span class=\"c\">/*:Array*/</span><span class=\"k\">,</span> ","                           comparator <span class=\"c\">/*:Function*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        ","        <span class=\"c\">//make sure the comparator is valid</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">typeof</span> comparator <span class=\"k\">!=</span> <span class=\"s\">\"function\"</span><span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> TypeError<span class=\"k\">(</span><span class=\"s\">\"ArrayAssert.itemsAreEquivalent(): Third argument must be a function.\"</span><span class=\"k\">);</span>","        <span class=\"k\">}</span>","        ","        <span class=\"c\">//one may be longer than the other, so get the maximum length</span>","        <span class=\"k\">var</span> len <span class=\"c\">/*:int*/</span> <span class=\"k\">=</span> Math<span class=\"k\">.</span>max<span class=\"k\">(</span>expected<span class=\"k\">.</span>length<span class=\"k\">,</span> actual<span class=\"k\">.</span>length <span class=\"k\">||</span> <span class=\"s\">0</span><span class=\"k\">);</span>","        ","        <span class=\"c\">//begin checking values</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span> i <span class=\"k\">&lt;</span> len<span class=\"k\">;</span> i<span class=\"k\">++)</span><span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(!</span>comparator<span class=\"k\">(</span>expected<span class=\"k\">[</span>i<span class=\"k\">],</span> actual<span class=\"k\">[</span>i<span class=\"k\">]))</span><span class=\"k\">{</span>","                <span class=\"k\">throw</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>ComparisonFailure<span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Assert<span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Values in position \"</span> <span class=\"k\">+</span> i <span class=\"k\">+</span> <span class=\"s\">\" are not equivalent.\"</span><span class=\"k\">),</span> expected<span class=\"k\">[</span>i<span class=\"k\">],</span> actual<span class=\"k\">[</span>i<span class=\"k\">]);</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that an array is empty.</span>","<span class=\"c\">     * @param {Array} actual The array to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method isEmpty</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    isEmpty <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>actual <span class=\"c\">/*:Array*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>        ","        <span class=\"k\">if</span> <span class=\"k\">(</span>actual<span class=\"k\">.</span>length <span class=\"k\">&gt;</span> <span class=\"s\">0</span><span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">var</span> Assert <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Assert<span class=\"k\">;</span>","            Assert<span class=\"k\">.</span>fail<span class=\"k\">(</span>Assert<span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Array should be empty.\"</span><span class=\"k\">));</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>    ","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that an array is not empty.</span>","<span class=\"c\">     * @param {Array} actual The array to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method isNotEmpty</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    isNotEmpty <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>actual <span class=\"c\">/*:Array*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>        ","        <span class=\"k\">if</span> <span class=\"k\">(</span>actual<span class=\"k\">.</span>length <span class=\"k\">===</span> <span class=\"s\">0</span><span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">var</span> Assert <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Assert<span class=\"k\">;</span>","            Assert<span class=\"k\">.</span>fail<span class=\"k\">(</span>Assert<span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Array should not be empty.\"</span><span class=\"k\">));</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>    ","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that the values in an array are the same, and in the same position,</span>","<span class=\"c\">     * as values in another array. This uses the triple equals sign</span>","<span class=\"c\">     * so no type cohersion will occur. Note that the array objects themselves</span>","<span class=\"c\">     * need not be the same for this test to pass.</span>","<span class=\"c\">     * @param {Array} expected An array of the expected values.</span>","<span class=\"c\">     * @param {Array} actual Any array of the actual values.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method itemsAreSame</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    itemsAreSame <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>expected <span class=\"c\">/*:Array*/</span><span class=\"k\">,</span> actual <span class=\"c\">/*:Array*/</span><span class=\"k\">,</span> ","                          message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        ","        <span class=\"c\">//one may be longer than the other, so get the maximum length</span>","        <span class=\"k\">var</span> len <span class=\"c\">/*:int*/</span> <span class=\"k\">=</span> Math<span class=\"k\">.</span>max<span class=\"k\">(</span>expected<span class=\"k\">.</span>length<span class=\"k\">,</span> actual<span class=\"k\">.</span>length <span class=\"k\">||</span> <span class=\"s\">0</span><span class=\"k\">);</span>","        <span class=\"k\">var</span> Assert <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Assert<span class=\"k\">;</span>","        ","        <span class=\"c\">//begin checking values</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span> i <span class=\"k\">&lt;</span> len<span class=\"k\">;</span> i<span class=\"k\">++)</span><span class=\"k\">{</span>","            Assert<span class=\"k\">.</span>areSame<span class=\"k\">(</span>expected<span class=\"k\">[</span>i<span class=\"k\">],</span> actual<span class=\"k\">[</span>i<span class=\"k\">],</span> ","                Assert<span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Values in position \"</span> <span class=\"k\">+</span> i <span class=\"k\">+</span> <span class=\"s\">\" are not the same.\"</span><span class=\"k\">));</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that the given value is contained in an array at the specified index,</span>","<span class=\"c\">     * starting from the back of the array.</span>","<span class=\"c\">     * This uses the triple equals sign so no type cohersion will occur.</span>","<span class=\"c\">     * @param {Object} needle The value to look for.</span>","<span class=\"c\">     * @param {Array} haystack The array to search in.</span>","<span class=\"c\">     * @param {int} index The index at which the value should exist.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method lastIndexOf</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    lastIndexOf <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>needle <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> haystack <span class=\"c\">/*:Array*/</span><span class=\"k\">,</span> index <span class=\"c\">/*:int*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","    ","        <span class=\"k\">var</span> Assert <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Assert<span class=\"k\">;</span>","    ","        <span class=\"c\">//try to find the value in the array</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i<span class=\"k\">=</span>haystack<span class=\"k\">.</span>length<span class=\"k\">;</span> i <span class=\"k\">&gt;=</span> <span class=\"s\">0</span><span class=\"k\">;</span> i<span class=\"k\">--)</span><span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>haystack<span class=\"k\">[</span>i<span class=\"k\">]</span> <span class=\"k\">===</span> needle<span class=\"k\">)</span><span class=\"k\">{</span>","                Assert<span class=\"k\">.</span>areEqual<span class=\"k\">(</span>index<span class=\"k\">,</span> i<span class=\"k\">,</span> Assert<span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Value exists at index \"</span> <span class=\"k\">+</span> i <span class=\"k\">+</span> <span class=\"s\">\" but should be at index \"</span> <span class=\"k\">+</span> index <span class=\"k\">+</span> <span class=\"s\">\".\"</span><span class=\"k\">));</span>","                <span class=\"k\">return</span><span class=\"k\">;</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","        ","        <span class=\"c\">//if it makes it here, it wasn't found at all</span>","        Assert<span class=\"k\">.</span>fail<span class=\"k\">(</span>Assert<span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Value doesn't exist in array.\"</span><span class=\"k\">));</span>        ","    <span class=\"k\">}</span>","    ","<span class=\"k\">}</span><span class=\"k\">;</span>","YAHOO<span class=\"k\">.</span>namespace<span class=\"k\">(</span><span class=\"s\">\"util\"</span><span class=\"k\">);</span>","","","<span class=\"c\">//-----------------------------------------------------------------------------</span>","<span class=\"c\">// ObjectAssert object</span>","<span class=\"c\">//-----------------------------------------------------------------------------</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * The ObjectAssert object provides functions to test JavaScript objects</span>","<span class=\"c\"> * for a variety of cases.</span>","<span class=\"c\"> *</span>","<span class=\"c\"> * @namespace YAHOO.util</span>","<span class=\"c\"> * @class ObjectAssert</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>ObjectAssert <span class=\"k\">=</span> <span class=\"k\">{</span>","        ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that all properties in the object exist in another object.</span>","<span class=\"c\">     * @param {Object} expected An object with the expected properties.</span>","<span class=\"c\">     * @param {Object} actual An object with the actual properties.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method propertiesAreEqual</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    propertiesAreEqual <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>expected <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> actual <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> ","                           message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        ","        <span class=\"k\">var</span> Assert <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Assert<span class=\"k\">;</span>","        ","        <span class=\"c\">//get all properties in the object</span>","        <span class=\"k\">var</span> properties <span class=\"c\">/*:Array*/</span> <span class=\"k\">=</span> <span class=\"k\">[];</span>        ","        <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> property <span class=\"k\">in</span> expected<span class=\"k\">)</span><span class=\"k\">{</span>","            properties<span class=\"k\">.</span>push<span class=\"k\">(</span>property<span class=\"k\">);</span>","        <span class=\"k\">}</span>","        ","        <span class=\"c\">//see if the properties are in the expected object</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span> i <span class=\"k\">&lt;</span> properties<span class=\"k\">.</span>length<span class=\"k\">;</span> i<span class=\"k\">++)</span><span class=\"k\">{</span>","            Assert<span class=\"k\">.</span>isNotUndefined<span class=\"k\">(</span>actual<span class=\"k\">[</span>properties<span class=\"k\">[</span>i<span class=\"k\">]],</span> ","                Assert<span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Property '\"</span> <span class=\"k\">+</span> properties<span class=\"k\">[</span>i<span class=\"k\">]</span> <span class=\"k\">+</span> <span class=\"s\">\"' expected.\"</span><span class=\"k\">));</span>","        <span class=\"k\">}</span>","","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that an object has a property with the given name.</span>","<span class=\"c\">     * @param {String} propertyName The name of the property to test.</span>","<span class=\"c\">     * @param {Object} object The object to search.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method hasProperty</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>    ","    hasProperty <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>propertyName <span class=\"c\">/*:String*/</span><span class=\"k\">,</span> object <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(!(</span>propertyName <span class=\"k\">in</span> object<span class=\"k\">))</span><span class=\"k\">{</span>","            <span class=\"k\">var</span> Assert <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Assert<span class=\"k\">;</span>","            Assert<span class=\"k\">.</span>fail<span class=\"k\">(</span>Assert<span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Property '\"</span> <span class=\"k\">+</span> propertyName <span class=\"k\">+</span> <span class=\"s\">\"' not found on object.\"</span><span class=\"k\">));</span>","        <span class=\"k\">}</span>    ","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a property with the given name exists on an object instance (not on its prototype).</span>","<span class=\"c\">     * @param {String} propertyName The name of the property to test.</span>","<span class=\"c\">     * @param {Object} object The object to search.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method hasProperty</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>    ","    hasOwnProperty <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>propertyName <span class=\"c\">/*:String*/</span><span class=\"k\">,</span> object <span class=\"c\">/*:Object*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(!</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>hasOwnProperty<span class=\"k\">(</span>object<span class=\"k\">,</span> propertyName<span class=\"k\">))</span><span class=\"k\">{</span>","            <span class=\"k\">var</span> Assert <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Assert<span class=\"k\">;</span>","            Assert<span class=\"k\">.</span>fail<span class=\"k\">(</span>Assert<span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Property '\"</span> <span class=\"k\">+</span> propertyName <span class=\"k\">+</span> <span class=\"s\">\"' not found on object instance.\"</span><span class=\"k\">));</span>","        <span class=\"k\">}</span>     ","    <span class=\"k\">}</span>","<span class=\"k\">}</span><span class=\"k\">;</span>","<span class=\"c\">//-----------------------------------------------------------------------------</span>","<span class=\"c\">// DateAssert object</span>","<span class=\"c\">//-----------------------------------------------------------------------------</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * The DateAssert object provides functions to test JavaScript Date objects</span>","<span class=\"c\"> * for a variety of cases.</span>","<span class=\"c\"> *</span>","<span class=\"c\"> * @namespace YAHOO.util</span>","<span class=\"c\"> * @class DateAssert</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> */</span>"," ","YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>DateAssert <span class=\"k\">=</span> <span class=\"k\">{</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a date's month, day, and year are equal to another date's.</span>","<span class=\"c\">     * @param {Date} expected The expected date.</span>","<span class=\"c\">     * @param {Date} actual The actual date to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method datesAreEqual</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    datesAreEqual <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>expected <span class=\"c\">/*:Date*/</span><span class=\"k\">,</span> actual <span class=\"c\">/*:Date*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span><span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>expected <span class=\"k\">instanceof</span> Date <span class=\"k\">&amp;&amp;</span> actual <span class=\"k\">instanceof</span> Date<span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">var</span> Assert <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Assert<span class=\"k\">;</span>","            Assert<span class=\"k\">.</span>areEqual<span class=\"k\">(</span>expected<span class=\"k\">.</span>getFullYear<span class=\"k\">(),</span> actual<span class=\"k\">.</span>getFullYear<span class=\"k\">(),</span> Assert<span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Years should be equal.\"</span><span class=\"k\">));</span>","            Assert<span class=\"k\">.</span>areEqual<span class=\"k\">(</span>expected<span class=\"k\">.</span>getMonth<span class=\"k\">(),</span> actual<span class=\"k\">.</span>getMonth<span class=\"k\">(),</span> Assert<span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Months should be equal.\"</span><span class=\"k\">));</span>","            Assert<span class=\"k\">.</span>areEqual<span class=\"k\">(</span>expected<span class=\"k\">.</span>getDate<span class=\"k\">(),</span> actual<span class=\"k\">.</span>getDate<span class=\"k\">(),</span> Assert<span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Day of month should be equal.\"</span><span class=\"k\">));</span>","        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> TypeError<span class=\"k\">(</span><span class=\"s\">\"DateAssert.datesAreEqual(): Expected and actual values must be Date objects.\"</span><span class=\"k\">);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Asserts that a date's hour, minutes, and seconds are equal to another date's.</span>","<span class=\"c\">     * @param {Date} expected The expected date.</span>","<span class=\"c\">     * @param {Date} actual The actual date to test.</span>","<span class=\"c\">     * @param {String} message (Optional) The message to display if the assertion fails.</span>","<span class=\"c\">     * @method timesAreEqual</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    timesAreEqual <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>expected <span class=\"c\">/*:Date*/</span><span class=\"k\">,</span> actual <span class=\"c\">/*:Date*/</span><span class=\"k\">,</span> message <span class=\"c\">/*:String*/</span><span class=\"k\">)</span><span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>expected <span class=\"k\">instanceof</span> Date <span class=\"k\">&amp;&amp;</span> actual <span class=\"k\">instanceof</span> Date<span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">var</span> Assert <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Assert<span class=\"k\">;</span>","            Assert<span class=\"k\">.</span>areEqual<span class=\"k\">(</span>expected<span class=\"k\">.</span>getHours<span class=\"k\">(),</span> actual<span class=\"k\">.</span>getHours<span class=\"k\">(),</span> Assert<span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Hours should be equal.\"</span><span class=\"k\">));</span>","            Assert<span class=\"k\">.</span>areEqual<span class=\"k\">(</span>expected<span class=\"k\">.</span>getMinutes<span class=\"k\">(),</span> actual<span class=\"k\">.</span>getMinutes<span class=\"k\">(),</span> Assert<span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Minutes should be equal.\"</span><span class=\"k\">));</span>","            Assert<span class=\"k\">.</span>areEqual<span class=\"k\">(</span>expected<span class=\"k\">.</span>getSeconds<span class=\"k\">(),</span> actual<span class=\"k\">.</span>getSeconds<span class=\"k\">(),</span> Assert<span class=\"k\">.</span>_formatMessage<span class=\"k\">(</span>message<span class=\"k\">,</span> <span class=\"s\">\"Seconds should be equal.\"</span><span class=\"k\">));</span>","        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> TypeError<span class=\"k\">(</span><span class=\"s\">\"DateAssert.timesAreEqual(): Expected and actual values must be Date objects.\"</span><span class=\"k\">);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span>","    ","<span class=\"k\">}</span><span class=\"k\">;</span>","YAHOO<span class=\"k\">.</span>namespace<span class=\"k\">(</span><span class=\"s\">\"tool\"</span><span class=\"k\">);</span>","","<span class=\"c\">//-----------------------------------------------------------------------------</span>","<span class=\"c\">// TestManager object</span>","<span class=\"c\">//-----------------------------------------------------------------------------</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * Runs pages containing test suite definitions.</span>","<span class=\"c\"> * @namespace YAHOO.tool</span>","<span class=\"c\"> * @class TestManager</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestManager <span class=\"k\">=</span> <span class=\"k\">{</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Constant for the testpagebegin custom event</span>","<span class=\"c\">     * @property TEST_PAGE_BEGIN_EVENT</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     * @type string</span>","<span class=\"c\">     * @final</span>","<span class=\"c\">     */</span>","    TEST_PAGE_BEGIN_EVENT <span class=\"c\">/*:String*/</span> <span class=\"k\">:</span> <span class=\"s\">\"testpagebegin\"</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Constant for the testpagecomplete custom event</span>","<span class=\"c\">     * @property TEST_PAGE_COMPLETE_EVENT</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     * @type string</span>","<span class=\"c\">     * @final</span>","<span class=\"c\">     */</span>","    TEST_PAGE_COMPLETE_EVENT <span class=\"c\">/*:String*/</span> <span class=\"k\">:</span> <span class=\"s\">\"testpagecomplete\"</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Constant for the testmanagerbegin custom event</span>","<span class=\"c\">     * @property TEST_MANAGER_BEGIN_EVENT</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     * @type string</span>","<span class=\"c\">     * @final</span>","<span class=\"c\">     */</span>","    TEST_MANAGER_BEGIN_EVENT <span class=\"c\">/*:String*/</span> <span class=\"k\">:</span> <span class=\"s\">\"testmanagerbegin\"</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Constant for the testmanagercomplete custom event</span>","<span class=\"c\">     * @property TEST_MANAGER_COMPLETE_EVENT</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     * @type string</span>","<span class=\"c\">     * @final</span>","<span class=\"c\">     */</span>","    TEST_MANAGER_COMPLETE_EVENT <span class=\"c\">/*:String*/</span> <span class=\"k\">:</span> <span class=\"s\">\"testmanagercomplete\"</span><span class=\"k\">,</span>","","    <span class=\"c\">//-------------------------------------------------------------------------</span>","    <span class=\"c\">// Private Properties</span>","    <span class=\"c\">//-------------------------------------------------------------------------</span>","    ","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * The URL of the page currently being executed.</span>","<span class=\"c\">     * @type String</span>","<span class=\"c\">     * @private</span>","<span class=\"c\">     * @property _curPage</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    _curPage <span class=\"c\">/*:String*/</span> <span class=\"k\">:</span> <span class=\"k\">null</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * The frame used to load and run tests.</span>","<span class=\"c\">     * @type Window</span>","<span class=\"c\">     * @private</span>","<span class=\"c\">     * @property _frame</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    _frame <span class=\"c\">/*:Window*/</span> <span class=\"k\">:</span> <span class=\"k\">null</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * The logger used to output results from the various tests.</span>","<span class=\"c\">     * @type YAHOO.tool.TestLogger</span>","<span class=\"c\">     * @private</span>","<span class=\"c\">     * @property _logger</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    _logger <span class=\"k\">:</span> <span class=\"k\">null</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * The timeout ID for the next iteration through the tests.</span>","<span class=\"c\">     * @type int</span>","<span class=\"c\">     * @private</span>","<span class=\"c\">     * @property _timeoutId</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    _timeoutId <span class=\"c\">/*:int*/</span> <span class=\"k\">:</span> <span class=\"s\">0</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Array of pages to load.</span>","<span class=\"c\">     * @type String[]</span>","<span class=\"c\">     * @private</span>","<span class=\"c\">     * @property _pages</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    _pages <span class=\"c\">/*:String[]*/</span> <span class=\"k\">:</span> <span class=\"k\">[],</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Aggregated results</span>","<span class=\"c\">     * @type Object</span>","<span class=\"c\">     * @private</span>","<span class=\"c\">     * @property _results</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    _results<span class=\"k\">:</span> <span class=\"k\">null</span><span class=\"k\">,</span>","    ","    <span class=\"c\">//-------------------------------------------------------------------------</span>","    <span class=\"c\">// Private Methods</span>","    <span class=\"c\">//-------------------------------------------------------------------------</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Handles TestRunner.COMPLETE_EVENT, storing the results and beginning</span>","<span class=\"c\">     * the loop again.</span>","<span class=\"c\">     * @param {Object} data Data about the event.</span>","<span class=\"c\">     * @return {Void}</span>","<span class=\"c\">     * @private</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    _handleTestRunnerComplete <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>data <span class=\"c\">/*:Object*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","","        <span class=\"k\">this</span><span class=\"k\">.</span>fireEvent<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>TEST_PAGE_COMPLETE_EVENT<span class=\"k\">,</span> <span class=\"k\">{</span>","                page<span class=\"k\">:</span> <span class=\"k\">this</span><span class=\"k\">.</span>_curPage<span class=\"k\">,</span>","                results<span class=\"k\">:</span> data<span class=\"k\">.</span>results","            <span class=\"k\">}</span><span class=\"k\">);</span>","    ","        <span class=\"c\">//save results</span>","        <span class=\"c\">//this._results[this.curPage] = data.results;</span>","        ","        <span class=\"c\">//process 'em</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>_processResults<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_curPage<span class=\"k\">,</span> data<span class=\"k\">.</span>results<span class=\"k\">);</span>","        ","        <span class=\"k\">this</span><span class=\"k\">.</span>_logger<span class=\"k\">.</span>clearTestRunner<span class=\"k\">();</span>","    ","        <span class=\"c\">//if there's more to do, set a timeout to begin again</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_pages<span class=\"k\">.</span>length<span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>_timeoutId <span class=\"k\">=</span> setTimeout<span class=\"k\">(</span><span class=\"k\">function</span><span class=\"k\">()</span><span class=\"k\">{</span>","                YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestManager<span class=\"k\">.</span>_run<span class=\"k\">();</span>","            <span class=\"k\">}</span><span class=\"k\">,</span> <span class=\"s\">1000</span><span class=\"k\">);</span>","        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>fireEvent<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>TEST_MANAGER_COMPLETE_EVENT<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">.</span>_results<span class=\"k\">);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Processes the results of a test page run, outputting log messages</span>","<span class=\"c\">     * for failed tests.</span>","<span class=\"c\">     * @return {Void}</span>","<span class=\"c\">     * @private</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    _processResults <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>page <span class=\"c\">/*:String*/</span><span class=\"k\">,</span> results <span class=\"c\">/*:Object*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","","        <span class=\"k\">var</span> r <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>_results<span class=\"k\">;</span>","        ","        r<span class=\"k\">.</span>passed <span class=\"k\">+=</span> results<span class=\"k\">.</span>passed<span class=\"k\">;</span>","        r<span class=\"k\">.</span>failed <span class=\"k\">+=</span> results<span class=\"k\">.</span>failed<span class=\"k\">;</span>","        r<span class=\"k\">.</span>ignored <span class=\"k\">+=</span> results<span class=\"k\">.</span>ignored<span class=\"k\">;</span>","        r<span class=\"k\">.</span>total <span class=\"k\">+=</span> results<span class=\"k\">.</span>total<span class=\"k\">;</span>","        r<span class=\"k\">.</span>duration <span class=\"k\">+=</span> results<span class=\"k\">.</span>duration<span class=\"k\">;</span>","        ","        <span class=\"k\">if</span> <span class=\"k\">(</span>results<span class=\"k\">.</span>failed<span class=\"k\">)</span><span class=\"k\">{</span>","            r<span class=\"k\">.</span>failedPages<span class=\"k\">.</span>push<span class=\"k\">(</span>page<span class=\"k\">);</span>","        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","            r<span class=\"k\">.</span>passedPages<span class=\"k\">.</span>push<span class=\"k\">(</span>page<span class=\"k\">);</span>","        <span class=\"k\">}</span>","        ","        results<span class=\"k\">.</span>name <span class=\"k\">=</span> page<span class=\"k\">;</span>","        results<span class=\"k\">.</span>type <span class=\"k\">=</span> <span class=\"s\">\"page\"</span><span class=\"k\">;</span>","        ","        r<span class=\"k\">[</span>page<span class=\"k\">]</span> <span class=\"k\">=</span> results<span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Loads the next test page into the iframe.</span>","<span class=\"c\">     * @return {Void}</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     * @private</span>","<span class=\"c\">     */</span>","    _run <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">()</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","    ","        <span class=\"c\">//set the current page</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>_curPage <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>_pages<span class=\"k\">.</span>shift<span class=\"k\">();</span>","","        <span class=\"k\">this</span><span class=\"k\">.</span>fireEvent<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>TEST_PAGE_BEGIN_EVENT<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">.</span>_curPage<span class=\"k\">);</span>","        ","        <span class=\"c\">//load the frame - destroy history in case there are other iframes that</span>","        <span class=\"c\">//need testing</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>_frame<span class=\"k\">.</span>location<span class=\"k\">.</span>replace<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_curPage<span class=\"k\">);</span>","    ","    <span class=\"k\">}</span><span class=\"k\">,</span>","        ","    <span class=\"c\">//-------------------------------------------------------------------------</span>","    <span class=\"c\">// Public Methods</span>","    <span class=\"c\">//-------------------------------------------------------------------------</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Signals that a test page has been loaded. This should be called from</span>","<span class=\"c\">     * within the test page itself to notify the TestManager that it is ready.</span>","<span class=\"c\">     * @return {Void}</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    load <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">()</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>parent<span class=\"k\">.</span>YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestManager <span class=\"k\">!==</span> <span class=\"k\">this</span><span class=\"k\">)</span><span class=\"k\">{</span>","            parent<span class=\"k\">.</span>YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestManager<span class=\"k\">.</span>load<span class=\"k\">();</span>","        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","            ","            <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_frame<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"c\">//assign event handling</span>","                <span class=\"k\">var</span> TestRunner <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>_frame<span class=\"k\">.</span>YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestRunner<span class=\"k\">;</span>","","                <span class=\"k\">this</span><span class=\"k\">.</span>_logger<span class=\"k\">.</span>setTestRunner<span class=\"k\">(</span>TestRunner<span class=\"k\">);</span>","                TestRunner<span class=\"k\">.</span>subscribe<span class=\"k\">(</span>TestRunner<span class=\"k\">.</span>COMPLETE_EVENT<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">.</span>_handleTestRunnerComplete<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">,</span> <span class=\"k\">true</span><span class=\"k\">);</span>","                ","                <span class=\"c\">//run it</span>","                TestRunner<span class=\"k\">.</span>run<span class=\"k\">();</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Sets the pages to be loaded.</span>","<span class=\"c\">     * @param {String[]} pages An array of URLs to load.</span>","<span class=\"c\">     * @return {Void}</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    setPages <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>pages <span class=\"c\">/*:String[]*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>_pages <span class=\"k\">=</span> pages<span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Begins the process of running the tests.</span>","<span class=\"c\">     * @return {Void}</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    start <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">()</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","","        <span class=\"k\">if</span> <span class=\"k\">(!</span><span class=\"k\">this</span><span class=\"k\">.</span>_initialized<span class=\"k\">)</span> <span class=\"k\">{</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Fires when loading a test page</span>","<span class=\"c\">             * @event testpagebegin</span>","<span class=\"c\">             * @param curPage {string} the page being loaded</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>createEvent<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>TEST_PAGE_BEGIN_EVENT<span class=\"k\">);</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Fires when a test page is complete</span>","<span class=\"c\">             * @event testpagecomplete</span>","<span class=\"c\">             * @param obj {page: string, results: object} the name of the</span>","<span class=\"c\">             * page that was loaded, and the test suite results</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>createEvent<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>TEST_PAGE_COMPLETE_EVENT<span class=\"k\">);</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Fires when the test manager starts running all test pages</span>","<span class=\"c\">             * @event testmanagerbegin</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>createEvent<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>TEST_MANAGER_BEGIN_EVENT<span class=\"k\">);</span>","","            <span class=\"c\">/**</span>","<span class=\"c\">             * Fires when the test manager finishes running all test pages.  External</span>","<span class=\"c\">             * test runners should subscribe to this event in order to get the</span>","<span class=\"c\">             * aggregated test results.</span>","<span class=\"c\">             * @event testmanagercomplete</span>","<span class=\"c\">             * @param obj { pages_passed: int, pages_failed: int, tests_passed: int</span>","<span class=\"c\">             *              tests_failed: int, passed: string[], failed: string[],</span>","<span class=\"c\">             *              page_results: {} }</span>","<span class=\"c\">             * @static</span>","<span class=\"c\">             */</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>createEvent<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>TEST_MANAGER_COMPLETE_EVENT<span class=\"k\">);</span>","","            <span class=\"c\">//create iframe if not already available</span>","            <span class=\"k\">if</span> <span class=\"k\">(!</span><span class=\"k\">this</span><span class=\"k\">.</span>_frame<span class=\"k\">)</span><span class=\"k\">{</span>","                <span class=\"k\">var</span> frame <span class=\"c\">/*:HTMLElement*/</span> <span class=\"k\">=</span> document<span class=\"k\">.</span>createElement<span class=\"k\">(</span><span class=\"s\">\"iframe\"</span><span class=\"k\">);</span>","                frame<span class=\"k\">.</span>style<span class=\"k\">.</span>visibility <span class=\"k\">=</span> <span class=\"s\">\"hidden\"</span><span class=\"k\">;</span>","                frame<span class=\"k\">.</span>style<span class=\"k\">.</span>position <span class=\"k\">=</span> <span class=\"s\">\"absolute\"</span><span class=\"k\">;</span>","                document<span class=\"k\">.</span>body<span class=\"k\">.</span>appendChild<span class=\"k\">(</span>frame<span class=\"k\">);</span>","                <span class=\"k\">this</span><span class=\"k\">.</span>_frame <span class=\"k\">=</span> frame<span class=\"k\">.</span>contentWindow <span class=\"k\">||</span> frame<span class=\"k\">.</span>contentDocument<span class=\"k\">.</span>parentWindow<span class=\"k\">;</span>","            <span class=\"k\">}</span>","            ","            <span class=\"c\">//create test logger if not already available</span>","            <span class=\"k\">if</span> <span class=\"k\">(!</span><span class=\"k\">this</span><span class=\"k\">.</span>_logger<span class=\"k\">)</span><span class=\"k\">{</span>","                <span class=\"k\">this</span><span class=\"k\">.</span>_logger <span class=\"k\">=</span> <span class=\"k\">new</span> YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestLogger<span class=\"k\">();</span>","            <span class=\"k\">}</span>","","            <span class=\"k\">this</span><span class=\"k\">.</span>_initialized <span class=\"k\">=</span> <span class=\"k\">true</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","","","        <span class=\"c\">// reset the results cache</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>_results <span class=\"k\">=</span> <span class=\"k\">{</span>","        ","            passed<span class=\"k\">:</span> <span class=\"s\">0</span><span class=\"k\">,</span>","            failed<span class=\"k\">:</span> <span class=\"s\">0</span><span class=\"k\">,</span>","            ignored<span class=\"k\">:</span> <span class=\"s\">0</span><span class=\"k\">,</span>","            total<span class=\"k\">:</span> <span class=\"s\">0</span><span class=\"k\">,</span>","            type<span class=\"k\">:</span> <span class=\"s\">\"report\"</span><span class=\"k\">,</span>","            name<span class=\"k\">:</span> <span class=\"s\">\"YUI Test Results\"</span><span class=\"k\">,</span>","            duration<span class=\"k\">:</span> <span class=\"s\">0</span><span class=\"k\">,</span>","            failedPages<span class=\"k\">:[],</span>","            passedPages<span class=\"k\">:[]</span>","            <span class=\"c\">/*</span>","<span class=\"c\">            // number of pages that pass</span>","<span class=\"c\">            pages_passed: 0,</span>","<span class=\"c\">            // number of pages that fail</span>","<span class=\"c\">            pages_failed: 0,</span>","<span class=\"c\">            // total number of tests passed</span>","<span class=\"c\">            tests_passed: 0,</span>","<span class=\"c\">            // total number of tests failed</span>","<span class=\"c\">            tests_failed: 0,</span>","<span class=\"c\">            // array of pages that passed</span>","<span class=\"c\">            passed: [],</span>","<span class=\"c\">            // array of pages that failed</span>","<span class=\"c\">            failed: [],</span>","<span class=\"c\">            // map of full results for each page</span>","<span class=\"c\">            page_results: {}*/</span>","        <span class=\"k\">}</span><span class=\"k\">;</span>","","        <span class=\"k\">this</span><span class=\"k\">.</span>fireEvent<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>TEST_MANAGER_BEGIN_EVENT<span class=\"k\">,</span> <span class=\"k\">null</span><span class=\"k\">);</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>_run<span class=\"k\">();</span>","    ","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Stops the execution of tests.</span>","<span class=\"c\">     * @return {Void}</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    stop <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">()</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        clearTimeout<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_timeoutId<span class=\"k\">);</span>","    <span class=\"k\">}</span>","","<span class=\"k\">}</span><span class=\"k\">;</span>","","YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>augmentObject<span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestManager<span class=\"k\">,</span> YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>EventProvider<span class=\"k\">.</span>prototype<span class=\"k\">);</span>","","YAHOO<span class=\"k\">.</span>namespace<span class=\"k\">(</span><span class=\"s\">\"tool\"</span><span class=\"k\">);</span>","","<span class=\"c\">//-----------------------------------------------------------------------------</span>","<span class=\"c\">// TestLogger object</span>","<span class=\"c\">//-----------------------------------------------------------------------------</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * Displays test execution progress and results, providing filters based on</span>","<span class=\"c\"> * different key events.</span>","<span class=\"c\"> * @namespace YAHOO.tool</span>","<span class=\"c\"> * @class TestLogger</span>","<span class=\"c\"> * @constructor</span>","<span class=\"c\"> * @param {HTMLElement} element (Optional) The element to create the logger in.</span>","<span class=\"c\"> * @param {Object} config (Optional) Configuration options for the logger.</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestLogger <span class=\"k\">=</span> <span class=\"k\">function</span> <span class=\"k\">(</span>element<span class=\"k\">,</span> config<span class=\"k\">)</span> <span class=\"k\">{</span>","    YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestLogger<span class=\"k\">.</span>superclass<span class=\"k\">.</span>constructor<span class=\"k\">.</span>call<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">,</span> element<span class=\"k\">,</span> config<span class=\"k\">);</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>init<span class=\"k\">();</span>","<span class=\"k\">}</span><span class=\"k\">;</span>","","YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>extend<span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestLogger<span class=\"k\">,</span> YAHOO<span class=\"k\">.</span>widget<span class=\"k\">.</span>LogReader<span class=\"k\">,</span> <span class=\"k\">{</span>","","    footerEnabled <span class=\"k\">:</span> <span class=\"k\">true</span><span class=\"k\">,</span>","    newestOnTop <span class=\"k\">:</span> <span class=\"k\">false</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Formats message string to HTML for output to console.</span>","<span class=\"c\">     * @private</span>","<span class=\"c\">     * @method formatMsg</span>","<span class=\"c\">     * @param oLogMsg {Object} Log message object.</span>","<span class=\"c\">     * @return {String} HTML-formatted message for output to console.</span>","<span class=\"c\">     */</span>","    formatMsg <span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>message <span class=\"c\">/*:Object*/</span><span class=\"k\">)</span> <span class=\"k\">{</span>","    ","        <span class=\"k\">var</span> category <span class=\"c\">/*:String*/</span> <span class=\"k\">=</span> message<span class=\"k\">.</span>category<span class=\"k\">;</span>        ","        <span class=\"k\">var</span> text <span class=\"c\">/*:String*/</span> <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>html2Text<span class=\"k\">(</span>message<span class=\"k\">.</span>msg<span class=\"k\">);</span>","        ","        <span class=\"k\">return</span> <span class=\"s\">\"&lt;pre&gt;&lt;p&gt;&lt;span class=</span><span class=\"t\">\\\"</span><span class=\"s\">\"</span> <span class=\"k\">+</span> category <span class=\"k\">+</span> <span class=\"s\">\"</span><span class=\"t\">\\\"</span><span class=\"s\">&gt;\"</span> <span class=\"k\">+</span> category<span class=\"k\">.</span>toUpperCase<span class=\"k\">()</span> <span class=\"k\">+</span> <span class=\"s\">\"&lt;/span&gt; \"</span> <span class=\"k\">+</span> text <span class=\"k\">+</span> <span class=\"s\">\"&lt;/p&gt;&lt;/pre&gt;\"</span><span class=\"k\">;</span>","    ","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">//-------------------------------------------------------------------------</span>","    <span class=\"c\">// Private Methods</span>","    <span class=\"c\">//-------------------------------------------------------------------------</span>","    ","    <span class=\"c\">/*</span>","<span class=\"c\">     * Initializes the logger.</span>","<span class=\"c\">     * @private</span>","<span class=\"c\">     */</span>","    init <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">()</span> <span class=\"k\">{</span>","    ","        <span class=\"c\">//attach to any available TestRunner</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestRunner<span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>setTestRunner<span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestRunner<span class=\"k\">);</span>","        <span class=\"k\">}</span>","        ","        <span class=\"c\">//hide useless sources</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>hideSource<span class=\"k\">(</span><span class=\"s\">\"global\"</span><span class=\"k\">);</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>hideSource<span class=\"k\">(</span><span class=\"s\">\"LogReader\"</span><span class=\"k\">);</span>","        ","        <span class=\"c\">//hide useless message categories</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>hideCategory<span class=\"k\">(</span><span class=\"s\">\"warn\"</span><span class=\"k\">);</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>hideCategory<span class=\"k\">(</span><span class=\"s\">\"window\"</span><span class=\"k\">);</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>hideCategory<span class=\"k\">(</span><span class=\"s\">\"time\"</span><span class=\"k\">);</span>","        ","        <span class=\"c\">//reset the logger</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>clearConsole<span class=\"k\">();</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Clears the reference to the TestRunner from previous operations. This </span>","<span class=\"c\">     * unsubscribes all events and removes the object reference.</span>","<span class=\"c\">     * @return {Void}</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    clearTestRunner <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">()</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_runner<span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>_runner<span class=\"k\">.</span>unsubscribeAll<span class=\"k\">();</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>_runner <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Sets the source test runner that the logger should monitor.</span>","<span class=\"c\">     * @param {YAHOO.tool.TestRunner} testRunner The TestRunner to observe.</span>","<span class=\"c\">     * @return {Void}</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    setTestRunner <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>testRunner <span class=\"c\">/*:YAHOO.tool.TestRunner*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","    ","        <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_runner<span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>clearTestRunner<span class=\"k\">();</span>","        <span class=\"k\">}</span>","        ","        <span class=\"k\">this</span><span class=\"k\">.</span>_runner <span class=\"k\">=</span> testRunner<span class=\"k\">;</span>","        ","        <span class=\"c\">//setup event _handlers</span>","        testRunner<span class=\"k\">.</span>subscribe<span class=\"k\">(</span>testRunner<span class=\"k\">.</span>TEST_PASS_EVENT<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">.</span>_handleTestRunnerEvent<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">,</span> <span class=\"k\">true</span><span class=\"k\">);</span>","        testRunner<span class=\"k\">.</span>subscribe<span class=\"k\">(</span>testRunner<span class=\"k\">.</span>TEST_FAIL_EVENT<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">.</span>_handleTestRunnerEvent<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">,</span> <span class=\"k\">true</span><span class=\"k\">);</span>","        testRunner<span class=\"k\">.</span>subscribe<span class=\"k\">(</span>testRunner<span class=\"k\">.</span>TEST_IGNORE_EVENT<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">.</span>_handleTestRunnerEvent<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">,</span> <span class=\"k\">true</span><span class=\"k\">);</span>","        testRunner<span class=\"k\">.</span>subscribe<span class=\"k\">(</span>testRunner<span class=\"k\">.</span>BEGIN_EVENT<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">.</span>_handleTestRunnerEvent<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">,</span> <span class=\"k\">true</span><span class=\"k\">);</span>","        testRunner<span class=\"k\">.</span>subscribe<span class=\"k\">(</span>testRunner<span class=\"k\">.</span>COMPLETE_EVENT<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">.</span>_handleTestRunnerEvent<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">,</span> <span class=\"k\">true</span><span class=\"k\">);</span>","        testRunner<span class=\"k\">.</span>subscribe<span class=\"k\">(</span>testRunner<span class=\"k\">.</span>TEST_SUITE_BEGIN_EVENT<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">.</span>_handleTestRunnerEvent<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">,</span> <span class=\"k\">true</span><span class=\"k\">);</span>","        testRunner<span class=\"k\">.</span>subscribe<span class=\"k\">(</span>testRunner<span class=\"k\">.</span>TEST_SUITE_COMPLETE_EVENT<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">.</span>_handleTestRunnerEvent<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">,</span> <span class=\"k\">true</span><span class=\"k\">);</span>","        testRunner<span class=\"k\">.</span>subscribe<span class=\"k\">(</span>testRunner<span class=\"k\">.</span>TEST_CASE_BEGIN_EVENT<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">.</span>_handleTestRunnerEvent<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">,</span> <span class=\"k\">true</span><span class=\"k\">);</span>","        testRunner<span class=\"k\">.</span>subscribe<span class=\"k\">(</span>testRunner<span class=\"k\">.</span>TEST_CASE_COMPLETE_EVENT<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">.</span>_handleTestRunnerEvent<span class=\"k\">,</span> <span class=\"k\">this</span><span class=\"k\">,</span> <span class=\"k\">true</span><span class=\"k\">);</span>    ","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">//-------------------------------------------------------------------------</span>","    <span class=\"c\">// Event Handlers</span>","    <span class=\"c\">//-------------------------------------------------------------------------</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Handles all TestRunner events, outputting appropriate data into the console.</span>","<span class=\"c\">     * @param {Object} data The event data object.</span>","<span class=\"c\">     * @return {Void}</span>","<span class=\"c\">     * @private</span>","<span class=\"c\">     */</span>","    _handleTestRunnerEvent <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>data <span class=\"c\">/*:Object*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","    ","        <span class=\"c\">//shortcut variables</span>","        <span class=\"k\">var</span> TestRunner <span class=\"c\">/*:Object*/</span> <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestRunner<span class=\"k\">;</span>","    ","        <span class=\"c\">//data variables</span>","        <span class=\"k\">var</span> message <span class=\"c\">/*:String*/</span> <span class=\"k\">=</span> <span class=\"s\">\"\"</span><span class=\"k\">;</span>","        <span class=\"k\">var</span> messageType <span class=\"c\">/*:String*/</span> <span class=\"k\">=</span> <span class=\"s\">\"\"</span><span class=\"k\">;</span>","        ","        <span class=\"k\">switch</span><span class=\"k\">(</span>data<span class=\"k\">.</span>type<span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">case</span> TestRunner<span class=\"k\">.</span>BEGIN_EVENT<span class=\"k\">:</span>","                message <span class=\"k\">=</span> <span class=\"s\">\"Testing began at \"</span> <span class=\"k\">+</span> <span class=\"k\">(</span><span class=\"k\">new</span> Date<span class=\"k\">()).</span>toString<span class=\"k\">()</span> <span class=\"k\">+</span> <span class=\"s\">\".\"</span><span class=\"k\">;</span>","                messageType <span class=\"k\">=</span> <span class=\"s\">\"info\"</span><span class=\"k\">;</span>","                <span class=\"k\">break</span><span class=\"k\">;</span>","                ","            <span class=\"k\">case</span> TestRunner<span class=\"k\">.</span>COMPLETE_EVENT<span class=\"k\">:</span>","                message <span class=\"k\">=</span> <span class=\"s\">\"Testing completed at \"</span> <span class=\"k\">+</span> <span class=\"k\">(</span><span class=\"k\">new</span> Date<span class=\"k\">()).</span>toString<span class=\"k\">()</span> <span class=\"k\">+</span> <span class=\"s\">\".</span><span class=\"t\">\\n</span><span class=\"s\">Passed:\"</span> <span class=\"k\">+</span> ","                    data<span class=\"k\">.</span>results<span class=\"k\">.</span>passed <span class=\"k\">+</span> <span class=\"s\">\" Failed:\"</span> <span class=\"k\">+</span> data<span class=\"k\">.</span>results<span class=\"k\">.</span>failed <span class=\"k\">+</span> <span class=\"s\">\" Total:\"</span> <span class=\"k\">+</span> data<span class=\"k\">.</span>results<span class=\"k\">.</span>total<span class=\"k\">;</span>","                messageType <span class=\"k\">=</span> <span class=\"s\">\"info\"</span><span class=\"k\">;</span>","                <span class=\"k\">break</span><span class=\"k\">;</span>","                ","            <span class=\"k\">case</span> TestRunner<span class=\"k\">.</span>TEST_FAIL_EVENT<span class=\"k\">:</span>","                message <span class=\"k\">=</span> data<span class=\"k\">.</span>testName <span class=\"k\">+</span> <span class=\"s\">\": \"</span> <span class=\"k\">+</span> data<span class=\"k\">.</span>error<span class=\"k\">.</span>getMessage<span class=\"k\">();</span>","                messageType <span class=\"k\">=</span> <span class=\"s\">\"fail\"</span><span class=\"k\">;</span>","                <span class=\"k\">break</span><span class=\"k\">;</span>","                ","            <span class=\"k\">case</span> TestRunner<span class=\"k\">.</span>TEST_IGNORE_EVENT<span class=\"k\">:</span>","                message <span class=\"k\">=</span> data<span class=\"k\">.</span>testName <span class=\"k\">+</span> <span class=\"s\">\": ignored.\"</span><span class=\"k\">;</span>","                messageType <span class=\"k\">=</span> <span class=\"s\">\"ignore\"</span><span class=\"k\">;</span>","                <span class=\"k\">break</span><span class=\"k\">;</span>","                ","            <span class=\"k\">case</span> TestRunner<span class=\"k\">.</span>TEST_PASS_EVENT<span class=\"k\">:</span>","                message <span class=\"k\">=</span> data<span class=\"k\">.</span>testName <span class=\"k\">+</span> <span class=\"s\">\": passed.\"</span><span class=\"k\">;</span>","                messageType <span class=\"k\">=</span> <span class=\"s\">\"pass\"</span><span class=\"k\">;</span>","                <span class=\"k\">break</span><span class=\"k\">;</span>","                ","            <span class=\"k\">case</span> TestRunner<span class=\"k\">.</span>TEST_SUITE_BEGIN_EVENT<span class=\"k\">:</span>","                message <span class=\"k\">=</span> <span class=\"s\">\"Test suite </span><span class=\"t\">\\\"</span><span class=\"s\">\"</span> <span class=\"k\">+</span> data<span class=\"k\">.</span>testSuite<span class=\"k\">.</span>name <span class=\"k\">+</span> <span class=\"s\">\"</span><span class=\"t\">\\\"</span><span class=\"s\"> started.\"</span><span class=\"k\">;</span>","                messageType <span class=\"k\">=</span> <span class=\"s\">\"info\"</span><span class=\"k\">;</span>","                <span class=\"k\">break</span><span class=\"k\">;</span>","                ","            <span class=\"k\">case</span> TestRunner<span class=\"k\">.</span>TEST_SUITE_COMPLETE_EVENT<span class=\"k\">:</span>","                message <span class=\"k\">=</span> <span class=\"s\">\"Test suite </span><span class=\"t\">\\\"</span><span class=\"s\">\"</span> <span class=\"k\">+</span> data<span class=\"k\">.</span>testSuite<span class=\"k\">.</span>name <span class=\"k\">+</span> <span class=\"s\">\"</span><span class=\"t\">\\\"</span><span class=\"s\"> completed.</span><span class=\"t\">\\n</span><span class=\"s\">Passed:\"</span> <span class=\"k\">+</span> ","                    data<span class=\"k\">.</span>results<span class=\"k\">.</span>passed <span class=\"k\">+</span> <span class=\"s\">\" Failed:\"</span> <span class=\"k\">+</span> data<span class=\"k\">.</span>results<span class=\"k\">.</span>failed <span class=\"k\">+</span> <span class=\"s\">\" Total:\"</span> <span class=\"k\">+</span> data<span class=\"k\">.</span>results<span class=\"k\">.</span>total<span class=\"k\">;</span>","                messageType <span class=\"k\">=</span> <span class=\"s\">\"info\"</span><span class=\"k\">;</span>","                <span class=\"k\">break</span><span class=\"k\">;</span>","                ","            <span class=\"k\">case</span> TestRunner<span class=\"k\">.</span>TEST_CASE_BEGIN_EVENT<span class=\"k\">:</span>","                message <span class=\"k\">=</span> <span class=\"s\">\"Test case </span><span class=\"t\">\\\"</span><span class=\"s\">\"</span> <span class=\"k\">+</span> data<span class=\"k\">.</span>testCase<span class=\"k\">.</span>name <span class=\"k\">+</span> <span class=\"s\">\"</span><span class=\"t\">\\\"</span><span class=\"s\"> started.\"</span><span class=\"k\">;</span>","                messageType <span class=\"k\">=</span> <span class=\"s\">\"info\"</span><span class=\"k\">;</span>","                <span class=\"k\">break</span><span class=\"k\">;</span>","                ","            <span class=\"k\">case</span> TestRunner<span class=\"k\">.</span>TEST_CASE_COMPLETE_EVENT<span class=\"k\">:</span>","                message <span class=\"k\">=</span> <span class=\"s\">\"Test case </span><span class=\"t\">\\\"</span><span class=\"s\">\"</span> <span class=\"k\">+</span> data<span class=\"k\">.</span>testCase<span class=\"k\">.</span>name <span class=\"k\">+</span> <span class=\"s\">\"</span><span class=\"t\">\\\"</span><span class=\"s\"> completed.</span><span class=\"t\">\\n</span><span class=\"s\">Passed:\"</span> <span class=\"k\">+</span> ","                    data<span class=\"k\">.</span>results<span class=\"k\">.</span>passed <span class=\"k\">+</span> <span class=\"s\">\" Failed:\"</span> <span class=\"k\">+</span> data<span class=\"k\">.</span>results<span class=\"k\">.</span>failed <span class=\"k\">+</span> <span class=\"s\">\" Total:\"</span> <span class=\"k\">+</span> data<span class=\"k\">.</span>results<span class=\"k\">.</span>total<span class=\"k\">;</span>","                messageType <span class=\"k\">=</span> <span class=\"s\">\"info\"</span><span class=\"k\">;</span>","                <span class=\"k\">break</span><span class=\"k\">;</span>","            <span class=\"k\">default</span><span class=\"k\">:</span>","                message <span class=\"k\">=</span> <span class=\"s\">\"Unexpected event \"</span> <span class=\"k\">+</span> data<span class=\"k\">.</span>type<span class=\"k\">;</span>","                message <span class=\"k\">=</span> <span class=\"s\">\"info\"</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","    ","        YAHOO<span class=\"k\">.</span>log<span class=\"k\">(</span>message<span class=\"k\">,</span> messageType<span class=\"k\">,</span> <span class=\"s\">\"TestRunner\"</span><span class=\"k\">);</span>    ","    <span class=\"k\">}</span>","    ","<span class=\"k\">}</span><span class=\"k\">);</span>","YAHOO<span class=\"k\">.</span>namespace<span class=\"k\">(</span><span class=\"s\">\"tool.TestFormat\"</span><span class=\"k\">);</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * Returns test results formatted as a JSON string. Requires JSON utility.</span>","<span class=\"c\"> * @param {Object} result The results object created by TestRunner.</span>","<span class=\"c\"> * @return {String} An XML-formatted string of results.</span>","<span class=\"c\"> * @namespace YAHOO.tool.TestFormat</span>","<span class=\"c\"> * @method JSON</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestFormat<span class=\"k\">.</span>JSON <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">(</span>results <span class=\"c\">/*:Object*/</span><span class=\"k\">)</span> <span class=\"c\">/*:String*/</span> <span class=\"k\">{</span>","    <span class=\"k\">return</span> YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>JSON<span class=\"k\">.</span>stringify<span class=\"k\">(</span>results<span class=\"k\">);</span>","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * Returns test results formatted as an XML string.</span>","<span class=\"c\"> * @param {Object} result The results object created by TestRunner.</span>","<span class=\"c\"> * @return {String} An XML-formatted string of results.</span>","<span class=\"c\"> * @namespace YAHOO.tool.TestFormat</span>","<span class=\"c\"> * @method XML</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestFormat<span class=\"k\">.</span>XML <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">(</span>results <span class=\"c\">/*:Object*/</span><span class=\"k\">)</span> <span class=\"c\">/*:String*/</span> <span class=\"k\">{</span>","","    <span class=\"k\">var</span> l <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>lang<span class=\"k\">;</span>","    <span class=\"k\">var</span> xml <span class=\"c\">/*:String*/</span> <span class=\"k\">=</span> <span class=\"s\">\"&lt;\"</span> <span class=\"k\">+</span> results<span class=\"k\">.</span>type <span class=\"k\">+</span> <span class=\"s\">\" name=</span><span class=\"t\">\\\"</span><span class=\"s\">\"</span> <span class=\"k\">+</span> results<span class=\"k\">.</span>name<span class=\"k\">.</span>replace<span class=\"k\">(</span><span class=\"s\">/\"/g</span><span class=\"k\">,</span> <span class=\"s\">\"&amp;quot;\"</span><span class=\"k\">).</span>replace<span class=\"k\">(</span><span class=\"s\">/'/g</span><span class=\"k\">,</span> <span class=\"s\">\"&amp;apos;\"</span><span class=\"k\">)</span> <span class=\"k\">+</span> <span class=\"s\">\"</span><span class=\"t\">\\\"</span><span class=\"s\">\"</span><span class=\"k\">;</span>","    ","    <span class=\"k\">if</span> <span class=\"k\">(</span>l<span class=\"k\">.</span>isNumber<span class=\"k\">(</span>results<span class=\"k\">.</span>duration<span class=\"k\">))</span><span class=\"k\">{</span>","        xml <span class=\"k\">+=</span> <span class=\"s\">\" duration=</span><span class=\"t\">\\\"</span><span class=\"s\">\"</span> <span class=\"k\">+</span> results<span class=\"k\">.</span>duration <span class=\"k\">+</span> <span class=\"s\">\"</span><span class=\"t\">\\\"</span><span class=\"s\">\"</span><span class=\"k\">;</span>","    <span class=\"k\">}</span>","    ","    <span class=\"k\">if</span> <span class=\"k\">(</span>results<span class=\"k\">.</span>type <span class=\"k\">==</span> <span class=\"s\">\"test\"</span><span class=\"k\">)</span><span class=\"k\">{</span>","        xml <span class=\"k\">+=</span> <span class=\"s\">\" result=</span><span class=\"t\">\\\"</span><span class=\"s\">\"</span> <span class=\"k\">+</span> results<span class=\"k\">.</span>result <span class=\"k\">+</span> <span class=\"s\">\"</span><span class=\"t\">\\\"</span><span class=\"s\"> message=</span><span class=\"t\">\\\"</span><span class=\"s\">\"</span> <span class=\"k\">+</span> results<span class=\"k\">.</span>message <span class=\"k\">+</span> <span class=\"s\">\"</span><span class=\"t\">\\\"</span><span class=\"s\">&gt;\"</span><span class=\"k\">;</span>","    <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","        xml <span class=\"k\">+=</span> <span class=\"s\">\" passed=</span><span class=\"t\">\\\"</span><span class=\"s\">\"</span> <span class=\"k\">+</span> results<span class=\"k\">.</span>passed <span class=\"k\">+</span> <span class=\"s\">\"</span><span class=\"t\">\\\"</span><span class=\"s\"> failed=</span><span class=\"t\">\\\"</span><span class=\"s\">\"</span> <span class=\"k\">+</span> results<span class=\"k\">.</span>failed <span class=\"k\">+</span> <span class=\"s\">\"</span><span class=\"t\">\\\"</span><span class=\"s\"> ignored=</span><span class=\"t\">\\\"</span><span class=\"s\">\"</span> <span class=\"k\">+</span> results<span class=\"k\">.</span>ignored <span class=\"k\">+</span> <span class=\"s\">\"</span><span class=\"t\">\\\"</span><span class=\"s\"> total=</span><span class=\"t\">\\\"</span><span class=\"s\">\"</span> <span class=\"k\">+</span> results<span class=\"k\">.</span>total <span class=\"k\">+</span> <span class=\"s\">\"</span><span class=\"t\">\\\"</span><span class=\"s\">&gt;\"</span><span class=\"k\">;</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> prop <span class=\"k\">in</span> results<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>l<span class=\"k\">.</span>hasOwnProperty<span class=\"k\">(</span>results<span class=\"k\">,</span> prop<span class=\"k\">)</span> <span class=\"k\">&amp;&amp;</span> l<span class=\"k\">.</span>isObject<span class=\"k\">(</span>results<span class=\"k\">[</span>prop<span class=\"k\">])</span> <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>l<span class=\"k\">.</span>isArray<span class=\"k\">(</span>results<span class=\"k\">[</span>prop<span class=\"k\">]))</span><span class=\"k\">{</span>","                xml <span class=\"k\">+=</span> arguments<span class=\"k\">.</span>callee<span class=\"k\">(</span>results<span class=\"k\">[</span>prop<span class=\"k\">]);</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>        ","    <span class=\"k\">}</span>","","    xml <span class=\"k\">+=</span> <span class=\"s\">\"&lt;/\"</span> <span class=\"k\">+</span> results<span class=\"k\">.</span>type <span class=\"k\">+</span> <span class=\"s\">\"&gt;\"</span><span class=\"k\">;</span>","    ","    <span class=\"k\">return</span> xml<span class=\"k\">;</span>","","<span class=\"k\">}</span><span class=\"k\">;</span>","YAHOO<span class=\"k\">.</span>namespace<span class=\"k\">(</span><span class=\"s\">\"tool\"</span><span class=\"k\">);</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * An object capable of sending test results to a server.</span>","<span class=\"c\"> * @param {String} url The URL to submit the results to.</span>","<span class=\"c\"> * @param {Function} format (Optiona) A function that outputs the results in a specific format.</span>","<span class=\"c\"> *      Default is YAHOO.tool.TestFormat.XML.</span>","<span class=\"c\"> * @constructor</span>","<span class=\"c\"> * @namespace YAHOO.tool</span>","<span class=\"c\"> * @class TestReporter</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestReporter <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">(</span>url <span class=\"c\">/*:String*/</span><span class=\"k\">,</span> format <span class=\"c\">/*:Function*/</span><span class=\"k\">)</span> <span class=\"k\">{</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * The URL to submit the data to.</span>","<span class=\"c\">     * @type String</span>","<span class=\"c\">     * @property url</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>url <span class=\"c\">/*:String*/</span> <span class=\"k\">=</span> url<span class=\"k\">;</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * The formatting function to call when submitting the data.</span>","<span class=\"c\">     * @type Function</span>","<span class=\"c\">     * @property format</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>format <span class=\"c\">/*:Function*/</span> <span class=\"k\">=</span> format <span class=\"k\">||</span> YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestFormat<span class=\"k\">.</span>XML<span class=\"k\">;</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Extra fields to submit with the request.</span>","<span class=\"c\">     * @type Object</span>","<span class=\"c\">     * @property _fields</span>","<span class=\"c\">     * @private</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>_fields <span class=\"c\">/*:Object*/</span> <span class=\"k\">=</span> <span class=\"k\">new</span> Object<span class=\"k\">();</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * The form element used to submit the results.</span>","<span class=\"c\">     * @type HTMLFormElement</span>","<span class=\"c\">     * @property _form</span>","<span class=\"c\">     * @private</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>_form <span class=\"c\">/*:HTMLElement*/</span> <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Iframe used as a target for form submission.</span>","<span class=\"c\">     * @type HTMLIFrameElement</span>","<span class=\"c\">     * @property _iframe</span>","<span class=\"c\">     * @private</span>","<span class=\"c\">     */</span>","    <span class=\"k\">this</span><span class=\"k\">.</span>_iframe <span class=\"c\">/*:HTMLElement*/</span> <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","<span class=\"k\">}</span><span class=\"k\">;</span>","","YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestReporter<span class=\"k\">.</span>prototype <span class=\"k\">=</span> <span class=\"k\">{</span>","","    <span class=\"c\">//restore missing constructor</span>","    constructor<span class=\"k\">:</span> YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestReporter<span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Convert a date into ISO format.</span>","<span class=\"c\">     * From Douglas Crockford's json2.js</span>","<span class=\"c\">     * @param {Date} date The date to convert.</span>","<span class=\"c\">     * @return {String} An ISO-formatted date string</span>","<span class=\"c\">     * @method _convertToISOString</span>","<span class=\"c\">     * @private</span>","<span class=\"c\">     */</span>    ","    _convertToISOString<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>date<span class=\"k\">)</span><span class=\"k\">{</span>","        <span class=\"k\">function</span> f<span class=\"k\">(</span>n<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"c\">// Format integers to have at least two digits.</span>","            <span class=\"k\">return</span> n <span class=\"k\">&lt;</span> <span class=\"s\">10</span> <span class=\"k\">?</span> <span class=\"s\">'0'</span> <span class=\"k\">+</span> n <span class=\"k\">:</span> n<span class=\"k\">;</span>","        <span class=\"k\">}</span>","","        <span class=\"k\">return</span> date<span class=\"k\">.</span>getUTCFullYear<span class=\"k\">()</span>   <span class=\"k\">+</span> <span class=\"s\">'-'</span> <span class=\"k\">+</span>","             f<span class=\"k\">(</span>date<span class=\"k\">.</span>getUTCMonth<span class=\"k\">()</span> <span class=\"k\">+</span> <span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">+</span> <span class=\"s\">'-'</span> <span class=\"k\">+</span>","             f<span class=\"k\">(</span>date<span class=\"k\">.</span>getUTCDate<span class=\"k\">())</span>      <span class=\"k\">+</span> <span class=\"s\">'T'</span> <span class=\"k\">+</span>","             f<span class=\"k\">(</span>date<span class=\"k\">.</span>getUTCHours<span class=\"k\">())</span>     <span class=\"k\">+</span> <span class=\"s\">':'</span> <span class=\"k\">+</span>","             f<span class=\"k\">(</span>date<span class=\"k\">.</span>getUTCMinutes<span class=\"k\">())</span>   <span class=\"k\">+</span> <span class=\"s\">':'</span> <span class=\"k\">+</span>","             f<span class=\"k\">(</span>date<span class=\"k\">.</span>getUTCSeconds<span class=\"k\">())</span>   <span class=\"k\">+</span> <span class=\"s\">'Z'</span><span class=\"k\">;</span>     ","    ","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Adds a field to the form that submits the results.</span>","<span class=\"c\">     * @param {String} name The name of the field.</span>","<span class=\"c\">     * @param {Variant} value The value of the field.</span>","<span class=\"c\">     * @return {Void}</span>","<span class=\"c\">     * @method addField</span>","<span class=\"c\">     */</span>","    addField <span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>name <span class=\"c\">/*:String*/</span><span class=\"k\">,</span> value <span class=\"c\">/*:Variant*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span><span class=\"k\">{</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>_fields<span class=\"k\">[</span>name<span class=\"k\">]</span> <span class=\"k\">=</span> value<span class=\"k\">;</span>    ","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Removes all previous defined fields.</span>","<span class=\"c\">     * @return {Void}</span>","<span class=\"c\">     * @method addField</span>","<span class=\"c\">     */</span>","    clearFields <span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"c\">/*:Void*/</span><span class=\"k\">{</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>_fields <span class=\"k\">=</span> <span class=\"k\">new</span> Object<span class=\"k\">();</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Cleans up the memory associated with the TestReporter, removing DOM elements</span>","<span class=\"c\">     * that were created.</span>","<span class=\"c\">     * @return {Void}</span>","<span class=\"c\">     * @method destroy</span>","<span class=\"c\">     */</span>","    destroy <span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"c\">/*:Void*/</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_form<span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>_form<span class=\"k\">.</span>parentNode<span class=\"k\">.</span>removeChild<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_form<span class=\"k\">);</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>_form <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>        ","        <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_iframe<span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>_iframe<span class=\"k\">.</span>parentNode<span class=\"k\">.</span>removeChild<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_iframe<span class=\"k\">);</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>_iframe <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>_fields <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Sends the report to the server.</span>","<span class=\"c\">     * @param {Object} results The results object created by TestRunner.</span>","<span class=\"c\">     * @return {Void}</span>","<span class=\"c\">     * @method report</span>","<span class=\"c\">     */</span>","    report <span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>results <span class=\"c\">/*:Object*/</span><span class=\"k\">)</span> <span class=\"c\">/*:Void*/</span><span class=\"k\">{</span>","    ","        <span class=\"c\">//if the form hasn't been created yet, create it</span>","        <span class=\"k\">if</span> <span class=\"k\">(!</span><span class=\"k\">this</span><span class=\"k\">.</span>_form<span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>_form <span class=\"k\">=</span> document<span class=\"k\">.</span>createElement<span class=\"k\">(</span><span class=\"s\">\"form\"</span><span class=\"k\">);</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>_form<span class=\"k\">.</span>method <span class=\"k\">=</span> <span class=\"s\">\"post\"</span><span class=\"k\">;</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>_form<span class=\"k\">.</span>style<span class=\"k\">.</span>visibility <span class=\"k\">=</span> <span class=\"s\">\"hidden\"</span><span class=\"k\">;</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>_form<span class=\"k\">.</span>style<span class=\"k\">.</span>position <span class=\"k\">=</span> <span class=\"s\">\"absolute\"</span><span class=\"k\">;</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>_form<span class=\"k\">.</span>style<span class=\"k\">.</span>top <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>","            document<span class=\"k\">.</span>body<span class=\"k\">.</span>appendChild<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_form<span class=\"k\">);</span>","        ","            <span class=\"c\">//IE won't let you assign a name using the DOM, must do it the hacky way</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>env<span class=\"k\">.</span>ua<span class=\"k\">.</span>ie<span class=\"k\">)</span><span class=\"k\">{</span>","                <span class=\"k\">this</span><span class=\"k\">.</span>_iframe <span class=\"k\">=</span> document<span class=\"k\">.</span>createElement<span class=\"k\">(</span><span class=\"s\">\"&lt;iframe name=</span><span class=\"t\">\\\"</span><span class=\"s\">yuiTestTarget</span><span class=\"t\">\\\"</span><span class=\"s\"> /&gt;\"</span><span class=\"k\">);</span>","            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                <span class=\"k\">this</span><span class=\"k\">.</span>_iframe <span class=\"k\">=</span> document<span class=\"k\">.</span>createElement<span class=\"k\">(</span><span class=\"s\">\"iframe\"</span><span class=\"k\">);</span>","                <span class=\"k\">this</span><span class=\"k\">.</span>_iframe<span class=\"k\">.</span>name <span class=\"k\">=</span> <span class=\"s\">\"yuiTestTarget\"</span><span class=\"k\">;</span>","            <span class=\"k\">}</span>","","            <span class=\"k\">this</span><span class=\"k\">.</span>_iframe<span class=\"k\">.</span>src <span class=\"k\">=</span> <span class=\"s\">\"javascript:false\"</span><span class=\"k\">;</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>_iframe<span class=\"k\">.</span>style<span class=\"k\">.</span>visibility <span class=\"k\">=</span> <span class=\"s\">\"hidden\"</span><span class=\"k\">;</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>_iframe<span class=\"k\">.</span>style<span class=\"k\">.</span>position <span class=\"k\">=</span> <span class=\"s\">\"absolute\"</span><span class=\"k\">;</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>_iframe<span class=\"k\">.</span>style<span class=\"k\">.</span>top <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>","            document<span class=\"k\">.</span>body<span class=\"k\">.</span>appendChild<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_iframe<span class=\"k\">);</span>","","            <span class=\"k\">this</span><span class=\"k\">.</span>_form<span class=\"k\">.</span>target <span class=\"k\">=</span> <span class=\"s\">\"yuiTestTarget\"</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","","        <span class=\"c\">//set the form's action</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>_form<span class=\"k\">.</span>action <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>url<span class=\"k\">;</span>","    ","        <span class=\"c\">//remove any existing fields</span>","        <span class=\"k\">while</span><span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_form<span class=\"k\">.</span>hasChildNodes<span class=\"k\">())</span><span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>_form<span class=\"k\">.</span>removeChild<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_form<span class=\"k\">.</span>lastChild<span class=\"k\">);</span>","        <span class=\"k\">}</span>","        ","        <span class=\"c\">//create default fields</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>_fields<span class=\"k\">.</span>results <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>format<span class=\"k\">(</span>results<span class=\"k\">);</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>_fields<span class=\"k\">.</span>useragent <span class=\"k\">=</span> navigator<span class=\"k\">.</span>userAgent<span class=\"k\">;</span>","        <span class=\"k\">this</span><span class=\"k\">.</span>_fields<span class=\"k\">.</span>timestamp <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>_convertToISOString<span class=\"k\">(</span><span class=\"k\">new</span> Date<span class=\"k\">());</span>","","        <span class=\"c\">//add fields to the form</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span><span class=\"k\">var</span> prop <span class=\"k\">in</span> <span class=\"k\">this</span><span class=\"k\">.</span>_fields<span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>lang<span class=\"k\">.</span>hasOwnProperty<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>_fields<span class=\"k\">,</span> prop<span class=\"k\">)</span> <span class=\"k\">&amp;&amp;</span> <span class=\"k\">typeof</span> <span class=\"k\">this</span><span class=\"k\">.</span>_fields<span class=\"k\">[</span>prop<span class=\"k\">]</span> <span class=\"k\">!=</span> <span class=\"s\">\"function\"</span><span class=\"k\">)</span><span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>env<span class=\"k\">.</span>ua<span class=\"k\">.</span>ie<span class=\"k\">)</span><span class=\"k\">{</span>","                    input <span class=\"k\">=</span> document<span class=\"k\">.</span>createElement<span class=\"k\">(</span><span class=\"s\">\"&lt;input name=</span><span class=\"t\">\\\"</span><span class=\"s\">\"</span> <span class=\"k\">+</span> prop <span class=\"k\">+</span> <span class=\"s\">\"</span><span class=\"t\">\\\"</span><span class=\"s\"> &gt;\"</span><span class=\"k\">);</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                    input <span class=\"k\">=</span> document<span class=\"k\">.</span>createElement<span class=\"k\">(</span><span class=\"s\">\"input\"</span><span class=\"k\">);</span>","                    input<span class=\"k\">.</span>name <span class=\"k\">=</span> prop<span class=\"k\">;</span>","                <span class=\"k\">}</span>","                input<span class=\"k\">.</span>type <span class=\"k\">=</span> <span class=\"s\">\"hidden\"</span><span class=\"k\">;</span>","                input<span class=\"k\">.</span>value <span class=\"k\">=</span> <span class=\"k\">this</span><span class=\"k\">.</span>_fields<span class=\"k\">[</span>prop<span class=\"k\">];</span>","                <span class=\"k\">this</span><span class=\"k\">.</span>_form<span class=\"k\">.</span>appendChild<span class=\"k\">(</span>input<span class=\"k\">);</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","","        <span class=\"c\">//remove default fields</span>","        <span class=\"k\">delete</span> <span class=\"k\">this</span><span class=\"k\">.</span>_fields<span class=\"k\">.</span>results<span class=\"k\">;</span>","        <span class=\"k\">delete</span> <span class=\"k\">this</span><span class=\"k\">.</span>_fields<span class=\"k\">.</span>useragent<span class=\"k\">;</span>","        <span class=\"k\">delete</span> <span class=\"k\">this</span><span class=\"k\">.</span>_fields<span class=\"k\">.</span>timestamp<span class=\"k\">;</span>","        ","        <span class=\"k\">if</span> <span class=\"k\">(</span>arguments<span class=\"k\">[</span><span class=\"s\">1</span><span class=\"k\">]</span> <span class=\"k\">!==</span> <span class=\"k\">false</span><span class=\"k\">)</span><span class=\"k\">{</span>","            <span class=\"k\">this</span><span class=\"k\">.</span>_form<span class=\"k\">.</span>submit<span class=\"k\">();</span>","        <span class=\"k\">}</span>","    ","    <span class=\"k\">}</span>","","<span class=\"k\">}</span><span class=\"k\">;</span>","YAHOO<span class=\"k\">.</span>register<span class=\"k\">(</span><span class=\"s\">\"yuitest\"</span><span class=\"k\">,</span> YAHOO<span class=\"k\">.</span>tool<span class=\"k\">.</span>TestRunner<span class=\"k\">,</span> <span class=\"k\">{</span>version<span class=\"k\">:</span> <span class=\"s\">\"2.8.0r4\"</span><span class=\"k\">,</span> build<span class=\"k\">:</span> <span class=\"s\">\"2449\"</span><span class=\"k\">}</span><span class=\"k\">);</span>"];
_$jscoverage['build/yuitest/yuitest.js'][7]++;
YAHOO.namespace("tool");
_$jscoverage['build/yuitest/yuitest.js'][12]++;
(function () {
  _$jscoverage['build/yuitest/yuitest.js'][15]++;
  var tempId = 0;
  _$jscoverage['build/yuitest/yuitest.js'][25]++;
  YAHOO.tool.TestCase = (function (template) {
  _$jscoverage['build/yuitest/yuitest.js'][32]++;
  this._should = {};
  _$jscoverage['build/yuitest/yuitest.js'][35]++;
  for (var prop in template) {
    _$jscoverage['build/yuitest/yuitest.js'][36]++;
    this[prop] = template[prop];
}
  _$jscoverage['build/yuitest/yuitest.js'][40]++;
  if ((! YAHOO.lang.isString(this.name))) {
    _$jscoverage['build/yuitest/yuitest.js'][44]++;
    this.name = ("testCase" + (tempId++));
  }
});
  _$jscoverage['build/yuitest/yuitest.js'][50]++;
  YAHOO.tool.TestCase.prototype = {resume: (function (segment) {
  _$jscoverage['build/yuitest/yuitest.js'][60]++;
  YAHOO.tool.TestRunner.resume(segment);
}), wait: (function (segment, delay) {
  _$jscoverage['build/yuitest/yuitest.js'][74]++;
  var args = arguments;
  _$jscoverage['build/yuitest/yuitest.js'][75]++;
  if (YAHOO.lang.isFunction(args[0])) {
    _$jscoverage['build/yuitest/yuitest.js'][76]++;
    throw new (YAHOO.tool.TestCase.Wait)(args[0], args[1]);
  }
  else {
    _$jscoverage['build/yuitest/yuitest.js'][78]++;
    throw new (YAHOO.tool.TestCase.Wait)((function () {
  _$jscoverage['build/yuitest/yuitest.js'][79]++;
  YAHOO.util.Assert.fail("Timeout: wait() called but resume() never called.");
}), (YAHOO.lang.isNumber(args[0])? args[0]: 10000));
  }
}), setUp: (function () {
}), tearDown: (function () {
})};
  _$jscoverage['build/yuitest/yuitest.js'][115]++;
  YAHOO.tool.TestCase.Wait = (function (segment, delay) {
  _$jscoverage['build/yuitest/yuitest.js'][122]++;
  this.segment = (YAHOO.lang.isFunction(segment)? segment: null);
  _$jscoverage['build/yuitest/yuitest.js'][129]++;
  this.delay = (YAHOO.lang.isNumber(delay)? delay: 0);
});
})();
_$jscoverage['build/yuitest/yuitest.js'][134]++;
YAHOO.namespace("tool");
_$jscoverage['build/yuitest/yuitest.js'][149]++;
YAHOO.tool.TestSuite = (function (data) {
  _$jscoverage['build/yuitest/yuitest.js'][156]++;
  this.name = "";
  _$jscoverage['build/yuitest/yuitest.js'][162]++;
  this.items = [];
  _$jscoverage['build/yuitest/yuitest.js'][165]++;
  if (YAHOO.lang.isString(data)) {
    _$jscoverage['build/yuitest/yuitest.js'][166]++;
    this.name = data;
  }
  else {
    _$jscoverage['build/yuitest/yuitest.js'][167]++;
    if (YAHOO.lang.isObject(data)) {
      _$jscoverage['build/yuitest/yuitest.js'][168]++;
      YAHOO.lang.augmentObject(this, data, true);
    }
  }
  _$jscoverage['build/yuitest/yuitest.js'][172]++;
  if ((this.name === "")) {
    _$jscoverage['build/yuitest/yuitest.js'][173]++;
    this.name = YAHOO.util.Dom.generateId(null, "testSuite");
  }
});
_$jscoverage['build/yuitest/yuitest.js'][178]++;
YAHOO.tool.TestSuite.prototype = {add: (function (testObject) {
  _$jscoverage['build/yuitest/yuitest.js'][187]++;
  if (((testObject instanceof YAHOO.tool.TestSuite) || (testObject instanceof YAHOO.tool.TestCase))) {
    _$jscoverage['build/yuitest/yuitest.js'][188]++;
    this.items.push(testObject);
  }
}), setUp: (function () {
}), tearDown: (function () {
})};
_$jscoverage['build/yuitest/yuitest.js'][213]++;
YAHOO.namespace("tool");
_$jscoverage['build/yuitest/yuitest.js'][229]++;
YAHOO.tool.TestRunner = (function () {
  _$jscoverage['build/yuitest/yuitest.js'][239]++;
  function TestNode(testObject) {
    _$jscoverage['build/yuitest/yuitest.js'][246]++;
    this.testObject = testObject;
    _$jscoverage['build/yuitest/yuitest.js'][253]++;
    this.firstChild = null;
    _$jscoverage['build/yuitest/yuitest.js'][260]++;
    this.lastChild = null;
    _$jscoverage['build/yuitest/yuitest.js'][267]++;
    this.parent = null;
    _$jscoverage['build/yuitest/yuitest.js'][274]++;
    this.next = null;
    _$jscoverage['build/yuitest/yuitest.js'][281]++;
    this.results = {passed: 0, failed: 0, total: 0, ignored: 0};
    _$jscoverage['build/yuitest/yuitest.js'][289]++;
    if ((testObject instanceof YAHOO.tool.TestSuite)) {
      _$jscoverage['build/yuitest/yuitest.js'][290]++;
      this.results.type = "testsuite";
      _$jscoverage['build/yuitest/yuitest.js'][291]++;
      this.results.name = testObject.name;
    }
    else {
      _$jscoverage['build/yuitest/yuitest.js'][292]++;
      if ((testObject instanceof YAHOO.tool.TestCase)) {
        _$jscoverage['build/yuitest/yuitest.js'][293]++;
        this.results.type = "testcase";
        _$jscoverage['build/yuitest/yuitest.js'][294]++;
        this.results.name = testObject.name;
      }
    }
}
  _$jscoverage['build/yuitest/yuitest.js'][299]++;
  TestNode.prototype = {appendChild: (function (testObject) {
  _$jscoverage['build/yuitest/yuitest.js'][308]++;
  var node = new TestNode(testObject);
  _$jscoverage['build/yuitest/yuitest.js'][309]++;
  if ((this.firstChild === null)) {
    _$jscoverage['build/yuitest/yuitest.js'][310]++;
    this.firstChild = (this.lastChild = node);
  }
  else {
    _$jscoverage['build/yuitest/yuitest.js'][312]++;
    this.lastChild.next = node;
    _$jscoverage['build/yuitest/yuitest.js'][313]++;
    this.lastChild = node;
  }
  _$jscoverage['build/yuitest/yuitest.js'][315]++;
  node.parent = this;
  _$jscoverage['build/yuitest/yuitest.js'][316]++;
  return node;
})};
  _$jscoverage['build/yuitest/yuitest.js'][327]++;
  function TestRunner() {
    _$jscoverage['build/yuitest/yuitest.js'][330]++;
    TestRunner.superclass.constructor.apply(this, arguments);
    _$jscoverage['build/yuitest/yuitest.js'][339]++;
    this.masterSuite = new (YAHOO.tool.TestSuite)("YUI Test Results");
    _$jscoverage['build/yuitest/yuitest.js'][348]++;
    this._cur = null;
    _$jscoverage['build/yuitest/yuitest.js'][357]++;
    this._root = null;
    _$jscoverage['build/yuitest/yuitest.js'][360]++;
    var events = [this.TEST_CASE_BEGIN_EVENT, this.TEST_CASE_COMPLETE_EVENT, this.TEST_SUITE_BEGIN_EVENT, this.TEST_SUITE_COMPLETE_EVENT, this.TEST_PASS_EVENT, this.TEST_FAIL_EVENT, this.TEST_IGNORE_EVENT, this.COMPLETE_EVENT, this.BEGIN_EVENT];
    _$jscoverage['build/yuitest/yuitest.js'][371]++;
    for (var i = 0; (i < events.length); (i++)) {
      _$jscoverage['build/yuitest/yuitest.js'][372]++;
      this.createEvent(events[i], {scope: this});
}
}
  _$jscoverage['build/yuitest/yuitest.js'][377]++;
  YAHOO.lang.extend(TestRunner, YAHOO.util.EventProvider, {TEST_CASE_BEGIN_EVENT: "testcasebegin", TEST_CASE_COMPLETE_EVENT: "testcasecomplete", TEST_SUITE_BEGIN_EVENT: "testsuitebegin", TEST_SUITE_COMPLETE_EVENT: "testsuitecomplete", TEST_PASS_EVENT: "pass", TEST_FAIL_EVENT: "fail", TEST_IGNORE_EVENT: "ignore", COMPLETE_EVENT: "complete", BEGIN_EVENT: "begin", _addTestCaseToTestTree: (function (parentNode, testCase) {
  _$jscoverage['build/yuitest/yuitest.js'][456]++;
  var node = parentNode.appendChild(testCase);
  _$jscoverage['build/yuitest/yuitest.js'][459]++;
  for (var prop in testCase) {
    _$jscoverage['build/yuitest/yuitest.js'][460]++;
    if (((prop.indexOf("test") === 0) && YAHOO.lang.isFunction(testCase[prop]))) {
      _$jscoverage['build/yuitest/yuitest.js'][461]++;
      node.appendChild(prop);
    }
}
}), _addTestSuiteToTestTree: (function (parentNode, testSuite) {
  _$jscoverage['build/yuitest/yuitest.js'][479]++;
  var node = parentNode.appendChild(testSuite);
  _$jscoverage['build/yuitest/yuitest.js'][482]++;
  for (var i = 0; (i < testSuite.items.length); (i++)) {
    _$jscoverage['build/yuitest/yuitest.js'][483]++;
    if ((testSuite.items[i] instanceof YAHOO.tool.TestSuite)) {
      _$jscoverage['build/yuitest/yuitest.js'][484]++;
      this._addTestSuiteToTestTree(node, testSuite.items[i]);
    }
    else {
      _$jscoverage['build/yuitest/yuitest.js'][485]++;
      if ((testSuite.items[i] instanceof YAHOO.tool.TestCase)) {
        _$jscoverage['build/yuitest/yuitest.js'][486]++;
        this._addTestCaseToTestTree(node, testSuite.items[i]);
      }
    }
}
}), _buildTestTree: (function () {
  _$jscoverage['build/yuitest/yuitest.js'][502]++;
  this._root = new TestNode(this.masterSuite);
  _$jscoverage['build/yuitest/yuitest.js'][503]++;
  this._cur = this._root;
  _$jscoverage['build/yuitest/yuitest.js'][506]++;
  for (var i = 0; (i < this.masterSuite.items.length); (i++)) {
    _$jscoverage['build/yuitest/yuitest.js'][507]++;
    if ((this.masterSuite.items[i] instanceof YAHOO.tool.TestSuite)) {
      _$jscoverage['build/yuitest/yuitest.js'][508]++;
      this._addTestSuiteToTestTree(this._root, this.masterSuite.items[i]);
    }
    else {
      _$jscoverage['build/yuitest/yuitest.js'][509]++;
      if ((this.masterSuite.items[i] instanceof YAHOO.tool.TestCase)) {
        _$jscoverage['build/yuitest/yuitest.js'][510]++;
        this._addTestCaseToTestTree(this._root, this.masterSuite.items[i]);
      }
    }
}
}), _handleTestObjectComplete: (function (node) {
  _$jscoverage['build/yuitest/yuitest.js'][530]++;
  if (YAHOO.lang.isObject(node.testObject)) {
    _$jscoverage['build/yuitest/yuitest.js'][531]++;
    node.parent.results.passed += node.results.passed;
    _$jscoverage['build/yuitest/yuitest.js'][532]++;
    node.parent.results.failed += node.results.failed;
    _$jscoverage['build/yuitest/yuitest.js'][533]++;
    node.parent.results.total += node.results.total;
    _$jscoverage['build/yuitest/yuitest.js'][534]++;
    node.parent.results.ignored += node.results.ignored;
    _$jscoverage['build/yuitest/yuitest.js'][535]++;
    node.parent.results[node.testObject.name] = node.results;
    _$jscoverage['build/yuitest/yuitest.js'][537]++;
    if ((node.testObject instanceof YAHOO.tool.TestSuite)) {
      _$jscoverage['build/yuitest/yuitest.js'][538]++;
      node.testObject.tearDown();
      _$jscoverage['build/yuitest/yuitest.js'][539]++;
      this.fireEvent(this.TEST_SUITE_COMPLETE_EVENT, {testSuite: node.testObject, results: node.results});
    }
    else {
      _$jscoverage['build/yuitest/yuitest.js'][540]++;
      if ((node.testObject instanceof YAHOO.tool.TestCase)) {
        _$jscoverage['build/yuitest/yuitest.js'][541]++;
        this.fireEvent(this.TEST_CASE_COMPLETE_EVENT, {testCase: node.testObject, results: node.results});
      }
    }
  }
}), _next: (function () {
  _$jscoverage['build/yuitest/yuitest.js'][559]++;
  if (this._cur.firstChild) {
    _$jscoverage['build/yuitest/yuitest.js'][560]++;
    this._cur = this._cur.firstChild;
  }
  else {
    _$jscoverage['build/yuitest/yuitest.js'][561]++;
    if (this._cur.next) {
      _$jscoverage['build/yuitest/yuitest.js'][562]++;
      this._cur = this._cur.next;
    }
    else {
      _$jscoverage['build/yuitest/yuitest.js'][564]++;
      while ((this._cur && (! this._cur.next) && (this._cur !== this._root))) {
        _$jscoverage['build/yuitest/yuitest.js'][565]++;
        this._handleTestObjectComplete(this._cur);
        _$jscoverage['build/yuitest/yuitest.js'][566]++;
        this._cur = this._cur.parent;
}
      _$jscoverage['build/yuitest/yuitest.js'][569]++;
      if ((this._cur == this._root)) {
        _$jscoverage['build/yuitest/yuitest.js'][570]++;
        this._cur.results.type = "report";
        _$jscoverage['build/yuitest/yuitest.js'][571]++;
        this._cur.results.timestamp = new Date().toLocaleString();
        _$jscoverage['build/yuitest/yuitest.js'][572]++;
        this._cur.results.duration = (new Date() - this._cur.results.duration);
        _$jscoverage['build/yuitest/yuitest.js'][573]++;
        this.fireEvent(this.COMPLETE_EVENT, {results: this._cur.results});
        _$jscoverage['build/yuitest/yuitest.js'][574]++;
        this._cur = null;
      }
      else {
        _$jscoverage['build/yuitest/yuitest.js'][576]++;
        this._handleTestObjectComplete(this._cur);
        _$jscoverage['build/yuitest/yuitest.js'][577]++;
        this._cur = this._cur.next;
      }
    }
  }
  _$jscoverage['build/yuitest/yuitest.js'][581]++;
  return this._cur;
}), _run: (function () {
  _$jscoverage['build/yuitest/yuitest.js'][595]++;
  var shouldWait = false;
  _$jscoverage['build/yuitest/yuitest.js'][598]++;
  var node = this._next();
  _$jscoverage['build/yuitest/yuitest.js'][600]++;
  if ((node !== null)) {
    _$jscoverage['build/yuitest/yuitest.js'][601]++;
    var testObject = node.testObject;
    _$jscoverage['build/yuitest/yuitest.js'][604]++;
    if (YAHOO.lang.isObject(testObject)) {
      _$jscoverage['build/yuitest/yuitest.js'][605]++;
      if ((testObject instanceof YAHOO.tool.TestSuite)) {
        _$jscoverage['build/yuitest/yuitest.js'][606]++;
        this.fireEvent(this.TEST_SUITE_BEGIN_EVENT, {testSuite: testObject});
        _$jscoverage['build/yuitest/yuitest.js'][607]++;
        testObject.setUp();
      }
      else {
        _$jscoverage['build/yuitest/yuitest.js'][608]++;
        if ((testObject instanceof YAHOO.tool.TestCase)) {
          _$jscoverage['build/yuitest/yuitest.js'][609]++;
          this.fireEvent(this.TEST_CASE_BEGIN_EVENT, {testCase: testObject});
        }
      }
      _$jscoverage['build/yuitest/yuitest.js'][613]++;
      if (((typeof setTimeout) != "undefined")) {
        _$jscoverage['build/yuitest/yuitest.js'][614]++;
        setTimeout((function () {
  _$jscoverage['build/yuitest/yuitest.js'][615]++;
  YAHOO.tool.TestRunner._run();
}), 0);
      }
      else {
        _$jscoverage['build/yuitest/yuitest.js'][618]++;
        this._run();
      }
    }
    else {
      _$jscoverage['build/yuitest/yuitest.js'][621]++;
      this._runTest(node);
    }
  }
}), _resumeTest: (function (segment) {
  _$jscoverage['build/yuitest/yuitest.js'][630]++;
  var node = this._cur;
  _$jscoverage['build/yuitest/yuitest.js'][631]++;
  var testName = node.testObject;
  _$jscoverage['build/yuitest/yuitest.js'][632]++;
  var testCase = node.parent.testObject;
  _$jscoverage['build/yuitest/yuitest.js'][635]++;
  if (testCase.__yui_wait) {
    _$jscoverage['build/yuitest/yuitest.js'][636]++;
    clearTimeout(testCase.__yui_wait);
    _$jscoverage['build/yuitest/yuitest.js'][637]++;
    (delete testCase.__yui_wait);
  }
  _$jscoverage['build/yuitest/yuitest.js'][641]++;
  var shouldFail = (testCase._should.fail || {})[testName];
  _$jscoverage['build/yuitest/yuitest.js'][642]++;
  var shouldError = (testCase._should.error || {})[testName];
  _$jscoverage['build/yuitest/yuitest.js'][645]++;
  var failed = false;
  _$jscoverage['build/yuitest/yuitest.js'][646]++;
  var error = null;
  _$jscoverage['build/yuitest/yuitest.js'][649]++;
  try {
    _$jscoverage['build/yuitest/yuitest.js'][652]++;
    segment.apply(testCase);
    _$jscoverage['build/yuitest/yuitest.js'][655]++;
    if (shouldFail) {
      _$jscoverage['build/yuitest/yuitest.js'][656]++;
      error = new (YAHOO.util.ShouldFail)();
      _$jscoverage['build/yuitest/yuitest.js'][657]++;
      failed = true;
    }
    else {
      _$jscoverage['build/yuitest/yuitest.js'][658]++;
      if (shouldError) {
        _$jscoverage['build/yuitest/yuitest.js'][659]++;
        error = new (YAHOO.util.ShouldError)();
        _$jscoverage['build/yuitest/yuitest.js'][660]++;
        failed = true;
      }
    }
  }
  catch (thrown) {
    _$jscoverage['build/yuitest/yuitest.js'][664]++;
    if ((thrown instanceof YAHOO.util.AssertionError)) {
      _$jscoverage['build/yuitest/yuitest.js'][665]++;
      if ((! shouldFail)) {
        _$jscoverage['build/yuitest/yuitest.js'][666]++;
        error = thrown;
        _$jscoverage['build/yuitest/yuitest.js'][667]++;
        failed = true;
      }
    }
    else {
      _$jscoverage['build/yuitest/yuitest.js'][669]++;
      if ((thrown instanceof YAHOO.tool.TestCase.Wait)) {
        _$jscoverage['build/yuitest/yuitest.js'][671]++;
        if (YAHOO.lang.isFunction(thrown.segment)) {
          _$jscoverage['build/yuitest/yuitest.js'][672]++;
          if (YAHOO.lang.isNumber(thrown.delay)) {
            _$jscoverage['build/yuitest/yuitest.js'][675]++;
            if (((typeof setTimeout) != "undefined")) {
              _$jscoverage['build/yuitest/yuitest.js'][676]++;
              testCase.__yui_wait = setTimeout((function () {
  _$jscoverage['build/yuitest/yuitest.js'][677]++;
  YAHOO.tool.TestRunner._resumeTest(thrown.segment);
}), thrown.delay);
            }
            else {
              _$jscoverage['build/yuitest/yuitest.js'][680]++;
              throw new Error("Asynchronous tests not supported in this environment.");
            }
          }
        }
        _$jscoverage['build/yuitest/yuitest.js'][685]++;
        return;
      }
      else {
        _$jscoverage['build/yuitest/yuitest.js'][689]++;
        if ((! shouldError)) {
          _$jscoverage['build/yuitest/yuitest.js'][690]++;
          error = new (YAHOO.util.UnexpectedError)(thrown);
          _$jscoverage['build/yuitest/yuitest.js'][691]++;
          failed = true;
        }
        else {
          _$jscoverage['build/yuitest/yuitest.js'][694]++;
          if (YAHOO.lang.isString(shouldError)) {
            _$jscoverage['build/yuitest/yuitest.js'][697]++;
            if ((thrown.message != shouldError)) {
              _$jscoverage['build/yuitest/yuitest.js'][698]++;
              error = new (YAHOO.util.UnexpectedError)(thrown);
              _$jscoverage['build/yuitest/yuitest.js'][699]++;
              failed = true;
            }
          }
          else {
            _$jscoverage['build/yuitest/yuitest.js'][701]++;
            if (YAHOO.lang.isFunction(shouldError)) {
              _$jscoverage['build/yuitest/yuitest.js'][704]++;
              if ((! (thrown instanceof shouldError))) {
                _$jscoverage['build/yuitest/yuitest.js'][705]++;
                error = new (YAHOO.util.UnexpectedError)(thrown);
                _$jscoverage['build/yuitest/yuitest.js'][706]++;
                failed = true;
              }
            }
            else {
              _$jscoverage['build/yuitest/yuitest.js'][709]++;
              if (YAHOO.lang.isObject(shouldError)) {
                _$jscoverage['build/yuitest/yuitest.js'][712]++;
                if (((! (thrown instanceof shouldError.constructor)) || (thrown.message != shouldError.message))) {
                  _$jscoverage['build/yuitest/yuitest.js'][714]++;
                  error = new (YAHOO.util.UnexpectedError)(thrown);
                  _$jscoverage['build/yuitest/yuitest.js'][715]++;
                  failed = true;
                }
              }
            }
          }
        }
      }
    }
  }
  _$jscoverage['build/yuitest/yuitest.js'][726]++;
  if (failed) {
    _$jscoverage['build/yuitest/yuitest.js'][727]++;
    this.fireEvent(this.TEST_FAIL_EVENT, {testCase: testCase, testName: testName, error: error});
  }
  else {
    _$jscoverage['build/yuitest/yuitest.js'][729]++;
    this.fireEvent(this.TEST_PASS_EVENT, {testCase: testCase, testName: testName});
  }
  _$jscoverage['build/yuitest/yuitest.js'][733]++;
  testCase.tearDown();
  _$jscoverage['build/yuitest/yuitest.js'][736]++;
  node.parent.results[testName] = {result: (failed? "fail": "pass"), message: (error? error.getMessage(): "Test passed"), type: "test", name: testName};
  _$jscoverage['build/yuitest/yuitest.js'][743]++;
  if (failed) {
    _$jscoverage['build/yuitest/yuitest.js'][744]++;
    (node.parent.results.failed++);
  }
  else {
    _$jscoverage['build/yuitest/yuitest.js'][746]++;
    (node.parent.results.passed++);
  }
  _$jscoverage['build/yuitest/yuitest.js'][748]++;
  (node.parent.results.total++);
  _$jscoverage['build/yuitest/yuitest.js'][751]++;
  if (((typeof setTimeout) != "undefined")) {
    _$jscoverage['build/yuitest/yuitest.js'][752]++;
    setTimeout((function () {
  _$jscoverage['build/yuitest/yuitest.js'][753]++;
  YAHOO.tool.TestRunner._run();
}), 0);
  }
  else {
    _$jscoverage['build/yuitest/yuitest.js'][756]++;
    this._run();
  }
}), _runTest: (function (node) {
  _$jscoverage['build/yuitest/yuitest.js'][772]++;
  var testName = node.testObject;
  _$jscoverage['build/yuitest/yuitest.js'][773]++;
  var testCase = node.parent.testObject;
  _$jscoverage['build/yuitest/yuitest.js'][774]++;
  var test = testCase[testName];
  _$jscoverage['build/yuitest/yuitest.js'][777]++;
  var shouldIgnore = (testCase._should.ignore || {})[testName];
  _$jscoverage['build/yuitest/yuitest.js'][780]++;
  if (shouldIgnore) {
    _$jscoverage['build/yuitest/yuitest.js'][783]++;
    node.parent.results[testName] = {result: "ignore", message: "Test ignored", type: "test", name: testName};
    _$jscoverage['build/yuitest/yuitest.js'][790]++;
    (node.parent.results.ignored++);
    _$jscoverage['build/yuitest/yuitest.js'][791]++;
    (node.parent.results.total++);
    _$jscoverage['build/yuitest/yuitest.js'][793]++;
    this.fireEvent(this.TEST_IGNORE_EVENT, {testCase: testCase, testName: testName});
    _$jscoverage['build/yuitest/yuitest.js'][796]++;
    if (((typeof setTimeout) != "undefined")) {
      _$jscoverage['build/yuitest/yuitest.js'][797]++;
      setTimeout((function () {
  _$jscoverage['build/yuitest/yuitest.js'][798]++;
  YAHOO.tool.TestRunner._run();
}), 0);
    }
    else {
      _$jscoverage['build/yuitest/yuitest.js'][801]++;
      this._run();
    }
  }
  else {
    _$jscoverage['build/yuitest/yuitest.js'][807]++;
    testCase.setUp();
    _$jscoverage['build/yuitest/yuitest.js'][810]++;
    this._resumeTest(test);
  }
}), fireEvent: (function (type, data) {
  _$jscoverage['build/yuitest/yuitest.js'][830]++;
  data = (data || {});
  _$jscoverage['build/yuitest/yuitest.js'][831]++;
  data.type = type;
  _$jscoverage['build/yuitest/yuitest.js'][832]++;
  TestRunner.superclass.fireEvent.call(this, type, data);
}), add: (function (testObject) {
  _$jscoverage['build/yuitest/yuitest.js'][847]++;
  this.masterSuite.add(testObject);
}), clear: (function () {
  _$jscoverage['build/yuitest/yuitest.js'][857]++;
  this.masterSuite.items = [];
}), resume: (function (segment) {
  _$jscoverage['build/yuitest/yuitest.js'][869]++;
  this._resumeTest((segment || (function () {
})));
}), run: (function (testObject) {
  _$jscoverage['build/yuitest/yuitest.js'][881]++;
  var runner = YAHOO.tool.TestRunner;
  _$jscoverage['build/yuitest/yuitest.js'][884]++;
  runner._buildTestTree();
  _$jscoverage['build/yuitest/yuitest.js'][887]++;
  runner._root.results.duration = new Date().getTime();
  _$jscoverage['build/yuitest/yuitest.js'][890]++;
  runner.fireEvent(runner.BEGIN_EVENT);
  _$jscoverage['build/yuitest/yuitest.js'][893]++;
  runner._run();
})});
  _$jscoverage['build/yuitest/yuitest.js'][897]++;
  return new TestRunner();
})();
_$jscoverage['build/yuitest/yuitest.js'][900]++;
YAHOO.namespace("util");
_$jscoverage['build/yuitest/yuitest.js'][915]++;
YAHOO.util.Assert = {_formatMessage: (function (customMessage, defaultMessage) {
  _$jscoverage['build/yuitest/yuitest.js'][932]++;
  var message = customMessage;
  _$jscoverage['build/yuitest/yuitest.js'][933]++;
  if ((YAHOO.lang.isString(customMessage) && (customMessage.length > 0))) {
    _$jscoverage['build/yuitest/yuitest.js'][934]++;
    return YAHOO.lang.substitute(customMessage, {message: defaultMessage});
  }
  else {
    _$jscoverage['build/yuitest/yuitest.js'][936]++;
    return defaultMessage;
  }
}), fail: (function (message) {
  _$jscoverage['build/yuitest/yuitest.js'][951]++;
  throw new (YAHOO.util.AssertionError)(this._formatMessage(message, "Test force-failed."));
}), areEqual: (function (expected, actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][968]++;
  if ((expected != actual)) {
    _$jscoverage['build/yuitest/yuitest.js'][969]++;
    throw new (YAHOO.util.ComparisonFailure)(this._formatMessage(message, "Values should be equal."), expected, actual);
  }
}), areNotEqual: (function (unexpected, actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][984]++;
  if ((unexpected == actual)) {
    _$jscoverage['build/yuitest/yuitest.js'][985]++;
    throw new (YAHOO.util.UnexpectedValue)(this._formatMessage(message, "Values should not be equal."), unexpected);
  }
}), areNotSame: (function (unexpected, actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][999]++;
  if ((unexpected === actual)) {
    _$jscoverage['build/yuitest/yuitest.js'][1000]++;
    throw new (YAHOO.util.UnexpectedValue)(this._formatMessage(message, "Values should not be the same."), unexpected);
  }
}), areSame: (function (expected, actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1014]++;
  if ((expected !== actual)) {
    _$jscoverage['build/yuitest/yuitest.js'][1015]++;
    throw new (YAHOO.util.ComparisonFailure)(this._formatMessage(message, "Values should be the same."), expected, actual);
  }
}), isFalse: (function (actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1032]++;
  if ((false !== actual)) {
    _$jscoverage['build/yuitest/yuitest.js'][1033]++;
    throw new (YAHOO.util.ComparisonFailure)(this._formatMessage(message, "Value should be false."), false, actual);
  }
}), isTrue: (function (actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1046]++;
  if ((true !== actual)) {
    _$jscoverage['build/yuitest/yuitest.js'][1047]++;
    throw new (YAHOO.util.ComparisonFailure)(this._formatMessage(message, "Value should be true."), true, actual);
  }
}), isNaN: (function (actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1064]++;
  if ((! isNaN(actual))) {
    _$jscoverage['build/yuitest/yuitest.js'][1065]++;
    throw new (YAHOO.util.ComparisonFailure)(this._formatMessage(message, "Value should be NaN."), NaN, actual);
  }
}), isNotNaN: (function (actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1077]++;
  if (isNaN(actual)) {
    _$jscoverage['build/yuitest/yuitest.js'][1078]++;
    throw new (YAHOO.util.UnexpectedValue)(this._formatMessage(message, "Values should not be NaN."), NaN);
  }
}), isNotNull: (function (actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1091]++;
  if (YAHOO.lang.isNull(actual)) {
    _$jscoverage['build/yuitest/yuitest.js'][1092]++;
    throw new (YAHOO.util.UnexpectedValue)(this._formatMessage(message, "Values should not be null."), null);
  }
}), isNotUndefined: (function (actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1105]++;
  if (YAHOO.lang.isUndefined(actual)) {
    _$jscoverage['build/yuitest/yuitest.js'][1106]++;
    throw new (YAHOO.util.UnexpectedValue)(this._formatMessage(message, "Value should not be undefined."), undefined);
  }
}), isNull: (function (actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1119]++;
  if ((! YAHOO.lang.isNull(actual))) {
    _$jscoverage['build/yuitest/yuitest.js'][1120]++;
    throw new (YAHOO.util.ComparisonFailure)(this._formatMessage(message, "Value should be null."), null, actual);
  }
}), isUndefined: (function (actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1133]++;
  if ((! YAHOO.lang.isUndefined(actual))) {
    _$jscoverage['build/yuitest/yuitest.js'][1134]++;
    throw new (YAHOO.util.ComparisonFailure)(this._formatMessage(message, "Value should be undefined."), undefined, actual);
  }
}), isArray: (function (actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1150]++;
  if ((! YAHOO.lang.isArray(actual))) {
    _$jscoverage['build/yuitest/yuitest.js'][1151]++;
    throw new (YAHOO.util.UnexpectedValue)(this._formatMessage(message, "Value should be an array."), actual);
  }
}), isBoolean: (function (actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1163]++;
  if ((! YAHOO.lang.isBoolean(actual))) {
    _$jscoverage['build/yuitest/yuitest.js'][1164]++;
    throw new (YAHOO.util.UnexpectedValue)(this._formatMessage(message, "Value should be a Boolean."), actual);
  }
}), isFunction: (function (actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1176]++;
  if ((! YAHOO.lang.isFunction(actual))) {
    _$jscoverage['build/yuitest/yuitest.js'][1177]++;
    throw new (YAHOO.util.UnexpectedValue)(this._formatMessage(message, "Value should be a function."), actual);
  }
}), isInstanceOf: (function (expected, actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1192]++;
  if ((! (actual instanceof expected))) {
    _$jscoverage['build/yuitest/yuitest.js'][1193]++;
    throw new (YAHOO.util.ComparisonFailure)(this._formatMessage(message, "Value isn't an instance of expected type."), expected, actual);
  }
}), isNumber: (function (actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1205]++;
  if ((! YAHOO.lang.isNumber(actual))) {
    _$jscoverage['build/yuitest/yuitest.js'][1206]++;
    throw new (YAHOO.util.UnexpectedValue)(this._formatMessage(message, "Value should be a number."), actual);
  }
}), isObject: (function (actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1218]++;
  if ((! YAHOO.lang.isObject(actual))) {
    _$jscoverage['build/yuitest/yuitest.js'][1219]++;
    throw new (YAHOO.util.UnexpectedValue)(this._formatMessage(message, "Value should be an object."), actual);
  }
}), isString: (function (actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1231]++;
  if ((! YAHOO.lang.isString(actual))) {
    _$jscoverage['build/yuitest/yuitest.js'][1232]++;
    throw new (YAHOO.util.UnexpectedValue)(this._formatMessage(message, "Value should be a string."), actual);
  }
}), isTypeOf: (function (expected, actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1245]++;
  if (((typeof actual) != expected)) {
    _$jscoverage['build/yuitest/yuitest.js'][1246]++;
    throw new (YAHOO.util.ComparisonFailure)(this._formatMessage(message, ("Value should be of type " + expected + ".")), expected, (typeof actual));
  }
})};
_$jscoverage['build/yuitest/yuitest.js'][1266]++;
YAHOO.util.AssertionError = (function (message) {
  _$jscoverage['build/yuitest/yuitest.js'][1276]++;
  this.message = message;
  _$jscoverage['build/yuitest/yuitest.js'][1283]++;
  this.name = "AssertionError";
});
_$jscoverage['build/yuitest/yuitest.js'][1287]++;
YAHOO.lang.extend(YAHOO.util.AssertionError, Object, {getMessage: (function () {
  _$jscoverage['build/yuitest/yuitest.js'][1296]++;
  return this.message;
}), toString: (function () {
  _$jscoverage['build/yuitest/yuitest.js'][1305]++;
  return (this.name + ": " + this.getMessage());
})});
_$jscoverage['build/yuitest/yuitest.js'][1323]++;
YAHOO.util.ComparisonFailure = (function (message, expected, actual) {
  _$jscoverage['build/yuitest/yuitest.js'][1326]++;
  YAHOO.util.AssertionError.call(this, message);
  _$jscoverage['build/yuitest/yuitest.js'][1333]++;
  this.expected = expected;
  _$jscoverage['build/yuitest/yuitest.js'][1340]++;
  this.actual = actual;
  _$jscoverage['build/yuitest/yuitest.js'][1347]++;
  this.name = "ComparisonFailure";
});
_$jscoverage['build/yuitest/yuitest.js'][1352]++;
YAHOO.lang.extend(YAHOO.util.ComparisonFailure, YAHOO.util.AssertionError, {getMessage: (function () {
  _$jscoverage['build/yuitest/yuitest.js'][1361]++;
  return (this.message + "\nExpected: " + this.expected + " (" + (typeof this.expected) + ")" + "\nActual:" + this.actual + " (" + (typeof this.actual) + ")");
})});
_$jscoverage['build/yuitest/yuitest.js'][1380]++;
YAHOO.util.UnexpectedValue = (function (message, unexpected) {
  _$jscoverage['build/yuitest/yuitest.js'][1383]++;
  YAHOO.util.AssertionError.call(this, message);
  _$jscoverage['build/yuitest/yuitest.js'][1390]++;
  this.unexpected = unexpected;
  _$jscoverage['build/yuitest/yuitest.js'][1397]++;
  this.name = "UnexpectedValue";
});
_$jscoverage['build/yuitest/yuitest.js'][1402]++;
YAHOO.lang.extend(YAHOO.util.UnexpectedValue, YAHOO.util.AssertionError, {getMessage: (function () {
  _$jscoverage['build/yuitest/yuitest.js'][1411]++;
  return (this.message + "\nUnexpected: " + this.unexpected + " (" + (typeof this.unexpected) + ") ");
})});
_$jscoverage['build/yuitest/yuitest.js'][1426]++;
YAHOO.util.ShouldFail = (function (message) {
  _$jscoverage['build/yuitest/yuitest.js'][1429]++;
  YAHOO.util.AssertionError.call(this, (message || "This test should fail but didn't."));
  _$jscoverage['build/yuitest/yuitest.js'][1436]++;
  this.name = "ShouldFail";
});
_$jscoverage['build/yuitest/yuitest.js'][1441]++;
YAHOO.lang.extend(YAHOO.util.ShouldFail, YAHOO.util.AssertionError);
_$jscoverage['build/yuitest/yuitest.js'][1453]++;
YAHOO.util.ShouldError = (function (message) {
  _$jscoverage['build/yuitest/yuitest.js'][1456]++;
  YAHOO.util.AssertionError.call(this, (message || "This test should have thrown an error but didn't."));
  _$jscoverage['build/yuitest/yuitest.js'][1463]++;
  this.name = "ShouldError";
});
_$jscoverage['build/yuitest/yuitest.js'][1468]++;
YAHOO.lang.extend(YAHOO.util.ShouldError, YAHOO.util.AssertionError);
_$jscoverage['build/yuitest/yuitest.js'][1482]++;
YAHOO.util.UnexpectedError = (function (cause) {
  _$jscoverage['build/yuitest/yuitest.js'][1485]++;
  YAHOO.util.AssertionError.call(this, ("Unexpected error: " + cause.message));
  _$jscoverage['build/yuitest/yuitest.js'][1492]++;
  this.cause = cause;
  _$jscoverage['build/yuitest/yuitest.js'][1499]++;
  this.name = "UnexpectedError";
  _$jscoverage['build/yuitest/yuitest.js'][1506]++;
  this.stack = cause.stack;
});
_$jscoverage['build/yuitest/yuitest.js'][1511]++;
YAHOO.lang.extend(YAHOO.util.UnexpectedError, YAHOO.util.AssertionError);
_$jscoverage['build/yuitest/yuitest.js'][1525]++;
YAHOO.util.ArrayAssert = {contains: (function (needle, haystack, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1539]++;
  var found = false;
  _$jscoverage['build/yuitest/yuitest.js'][1540]++;
  var Assert = YAHOO.util.Assert;
  _$jscoverage['build/yuitest/yuitest.js'][1543]++;
  for (var i = 0; ((i < haystack.length) && (! found)); (i++)) {
    _$jscoverage['build/yuitest/yuitest.js'][1544]++;
    if ((haystack[i] === needle)) {
      _$jscoverage['build/yuitest/yuitest.js'][1545]++;
      found = true;
    }
}
  _$jscoverage['build/yuitest/yuitest.js'][1549]++;
  if ((! found)) {
    _$jscoverage['build/yuitest/yuitest.js'][1550]++;
    Assert.fail(Assert._formatMessage(message, ("Value " + needle + " (" + (typeof needle) + ") not found in array [" + haystack + "].")));
  }
}), containsItems: (function (needles, haystack, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1568]++;
  for (var i = 0; (i < needles.length); (i++)) {
    _$jscoverage['build/yuitest/yuitest.js'][1569]++;
    this.contains(needles[i], haystack, message);
}
}), containsMatch: (function (matcher, haystack, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1586]++;
  if (((typeof matcher) != "function")) {
    _$jscoverage['build/yuitest/yuitest.js'][1587]++;
    throw new TypeError("ArrayAssert.containsMatch(): First argument must be a function.");
  }
  _$jscoverage['build/yuitest/yuitest.js'][1590]++;
  var found = false;
  _$jscoverage['build/yuitest/yuitest.js'][1591]++;
  var Assert = YAHOO.util.Assert;
  _$jscoverage['build/yuitest/yuitest.js'][1594]++;
  for (var i = 0; ((i < haystack.length) && (! found)); (i++)) {
    _$jscoverage['build/yuitest/yuitest.js'][1595]++;
    if (matcher(haystack[i])) {
      _$jscoverage['build/yuitest/yuitest.js'][1596]++;
      found = true;
    }
}
  _$jscoverage['build/yuitest/yuitest.js'][1600]++;
  if ((! found)) {
    _$jscoverage['build/yuitest/yuitest.js'][1601]++;
    Assert.fail(Assert._formatMessage(message, ("No match found in array [" + haystack + "].")));
  }
}), doesNotContain: (function (needle, haystack, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1617]++;
  var found = false;
  _$jscoverage['build/yuitest/yuitest.js'][1618]++;
  var Assert = YAHOO.util.Assert;
  _$jscoverage['build/yuitest/yuitest.js'][1621]++;
  for (var i = 0; ((i < haystack.length) && (! found)); (i++)) {
    _$jscoverage['build/yuitest/yuitest.js'][1622]++;
    if ((haystack[i] === needle)) {
      _$jscoverage['build/yuitest/yuitest.js'][1623]++;
      found = true;
    }
}
  _$jscoverage['build/yuitest/yuitest.js'][1627]++;
  if (found) {
    _$jscoverage['build/yuitest/yuitest.js'][1628]++;
    Assert.fail(Assert._formatMessage(message, ("Value found in array [" + haystack + "].")));
  }
}), doesNotContainItems: (function (needles, haystack, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1645]++;
  for (var i = 0; (i < needles.length); (i++)) {
    _$jscoverage['build/yuitest/yuitest.js'][1646]++;
    this.doesNotContain(needles[i], haystack, message);
}
}), doesNotContainMatch: (function (matcher, haystack, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1664]++;
  if (((typeof matcher) != "function")) {
    _$jscoverage['build/yuitest/yuitest.js'][1665]++;
    throw new TypeError("ArrayAssert.doesNotContainMatch(): First argument must be a function.");
  }
  _$jscoverage['build/yuitest/yuitest.js'][1668]++;
  var found = false;
  _$jscoverage['build/yuitest/yuitest.js'][1669]++;
  var Assert = YAHOO.util.Assert;
  _$jscoverage['build/yuitest/yuitest.js'][1672]++;
  for (var i = 0; ((i < haystack.length) && (! found)); (i++)) {
    _$jscoverage['build/yuitest/yuitest.js'][1673]++;
    if (matcher(haystack[i])) {
      _$jscoverage['build/yuitest/yuitest.js'][1674]++;
      found = true;
    }
}
  _$jscoverage['build/yuitest/yuitest.js'][1678]++;
  if (found) {
    _$jscoverage['build/yuitest/yuitest.js'][1679]++;
    Assert.fail(Assert._formatMessage(message, ("Value found in array [" + haystack + "].")));
  }
}), indexOf: (function (needle, haystack, index, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1696]++;
  for (var i = 0; (i < haystack.length); (i++)) {
    _$jscoverage['build/yuitest/yuitest.js'][1697]++;
    if ((haystack[i] === needle)) {
      _$jscoverage['build/yuitest/yuitest.js'][1698]++;
      YAHOO.util.Assert.areEqual(index, i, (message || ("Value exists at index " + i + " but should be at index " + index + ".")));
      _$jscoverage['build/yuitest/yuitest.js'][1699]++;
      return;
    }
}
  _$jscoverage['build/yuitest/yuitest.js'][1703]++;
  var Assert = YAHOO.util.Assert;
  _$jscoverage['build/yuitest/yuitest.js'][1706]++;
  Assert.fail(Assert._formatMessage(message, ("Value doesn't exist in array [" + haystack + "].")));
}), itemsAreEqual: (function (expected, actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1724]++;
  var len = Math.max(expected.length, (actual.length || 0));
  _$jscoverage['build/yuitest/yuitest.js'][1725]++;
  var Assert = YAHOO.util.Assert;
  _$jscoverage['build/yuitest/yuitest.js'][1728]++;
  for (var i = 0; (i < len); (i++)) {
    _$jscoverage['build/yuitest/yuitest.js'][1729]++;
    Assert.areEqual(expected[i], actual[i], Assert._formatMessage(message, ("Values in position " + i + " are not equal.")));
}
}), itemsAreEquivalent: (function (expected, actual, comparator, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1752]++;
  if (((typeof comparator) != "function")) {
    _$jscoverage['build/yuitest/yuitest.js'][1753]++;
    throw new TypeError("ArrayAssert.itemsAreEquivalent(): Third argument must be a function.");
  }
  _$jscoverage['build/yuitest/yuitest.js'][1757]++;
  var len = Math.max(expected.length, (actual.length || 0));
  _$jscoverage['build/yuitest/yuitest.js'][1760]++;
  for (var i = 0; (i < len); (i++)) {
    _$jscoverage['build/yuitest/yuitest.js'][1761]++;
    if ((! comparator(expected[i], actual[i]))) {
      _$jscoverage['build/yuitest/yuitest.js'][1762]++;
      throw new (YAHOO.util.ComparisonFailure)(YAHOO.util.Assert._formatMessage(message, ("Values in position " + i + " are not equivalent.")), expected[i], actual[i]);
    }
}
}), isEmpty: (function (actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1775]++;
  if ((actual.length > 0)) {
    _$jscoverage['build/yuitest/yuitest.js'][1776]++;
    var Assert = YAHOO.util.Assert;
    _$jscoverage['build/yuitest/yuitest.js'][1777]++;
    Assert.fail(Assert._formatMessage(message, "Array should be empty."));
  }
}), isNotEmpty: (function (actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1789]++;
  if ((actual.length === 0)) {
    _$jscoverage['build/yuitest/yuitest.js'][1790]++;
    var Assert = YAHOO.util.Assert;
    _$jscoverage['build/yuitest/yuitest.js'][1791]++;
    Assert.fail(Assert._formatMessage(message, "Array should not be empty."));
  }
}), itemsAreSame: (function (expected, actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1810]++;
  var len = Math.max(expected.length, (actual.length || 0));
  _$jscoverage['build/yuitest/yuitest.js'][1811]++;
  var Assert = YAHOO.util.Assert;
  _$jscoverage['build/yuitest/yuitest.js'][1814]++;
  for (var i = 0; (i < len); (i++)) {
    _$jscoverage['build/yuitest/yuitest.js'][1815]++;
    Assert.areSame(expected[i], actual[i], Assert._formatMessage(message, ("Values in position " + i + " are not the same.")));
}
}), lastIndexOf: (function (needle, haystack, index, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1833]++;
  var Assert = YAHOO.util.Assert;
  _$jscoverage['build/yuitest/yuitest.js'][1836]++;
  for (var i = haystack.length; (i >= 0); (i--)) {
    _$jscoverage['build/yuitest/yuitest.js'][1837]++;
    if ((haystack[i] === needle)) {
      _$jscoverage['build/yuitest/yuitest.js'][1838]++;
      Assert.areEqual(index, i, Assert._formatMessage(message, ("Value exists at index " + i + " but should be at index " + index + ".")));
      _$jscoverage['build/yuitest/yuitest.js'][1839]++;
      return;
    }
}
  _$jscoverage['build/yuitest/yuitest.js'][1844]++;
  Assert.fail(Assert._formatMessage(message, "Value doesn't exist in array."));
})};
_$jscoverage['build/yuitest/yuitest.js'][1848]++;
YAHOO.namespace("util");
_$jscoverage['build/yuitest/yuitest.js'][1863]++;
YAHOO.util.ObjectAssert = {propertiesAreEqual: (function (expected, actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1876]++;
  var Assert = YAHOO.util.Assert;
  _$jscoverage['build/yuitest/yuitest.js'][1879]++;
  var properties = [];
  _$jscoverage['build/yuitest/yuitest.js'][1880]++;
  for (var property in expected) {
    _$jscoverage['build/yuitest/yuitest.js'][1881]++;
    properties.push(property);
}
  _$jscoverage['build/yuitest/yuitest.js'][1885]++;
  for (var i = 0; (i < properties.length); (i++)) {
    _$jscoverage['build/yuitest/yuitest.js'][1886]++;
    Assert.isNotUndefined(actual[properties[i]], Assert._formatMessage(message, ("Property '" + properties[i] + "' expected.")));
}
}), hasProperty: (function (propertyName, object, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1901]++;
  if ((! (propertyName in object))) {
    _$jscoverage['build/yuitest/yuitest.js'][1902]++;
    var Assert = YAHOO.util.Assert;
    _$jscoverage['build/yuitest/yuitest.js'][1903]++;
    Assert.fail(Assert._formatMessage(message, ("Property '" + propertyName + "' not found on object.")));
  }
}), hasOwnProperty: (function (propertyName, object, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1916]++;
  if ((! YAHOO.lang.hasOwnProperty(object, propertyName))) {
    _$jscoverage['build/yuitest/yuitest.js'][1917]++;
    var Assert = YAHOO.util.Assert;
    _$jscoverage['build/yuitest/yuitest.js'][1918]++;
    Assert.fail(Assert._formatMessage(message, ("Property '" + propertyName + "' not found on object instance.")));
  }
})};
_$jscoverage['build/yuitest/yuitest.js'][1935]++;
YAHOO.util.DateAssert = {datesAreEqual: (function (expected, actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1946]++;
  if (((expected instanceof Date) && (actual instanceof Date))) {
    _$jscoverage['build/yuitest/yuitest.js'][1947]++;
    var Assert = YAHOO.util.Assert;
    _$jscoverage['build/yuitest/yuitest.js'][1948]++;
    Assert.areEqual(expected.getFullYear(), actual.getFullYear(), Assert._formatMessage(message, "Years should be equal."));
    _$jscoverage['build/yuitest/yuitest.js'][1949]++;
    Assert.areEqual(expected.getMonth(), actual.getMonth(), Assert._formatMessage(message, "Months should be equal."));
    _$jscoverage['build/yuitest/yuitest.js'][1950]++;
    Assert.areEqual(expected.getDate(), actual.getDate(), Assert._formatMessage(message, "Day of month should be equal."));
  }
  else {
    _$jscoverage['build/yuitest/yuitest.js'][1952]++;
    throw new TypeError("DateAssert.datesAreEqual(): Expected and actual values must be Date objects.");
  }
}), timesAreEqual: (function (expected, actual, message) {
  _$jscoverage['build/yuitest/yuitest.js'][1965]++;
  if (((expected instanceof Date) && (actual instanceof Date))) {
    _$jscoverage['build/yuitest/yuitest.js'][1966]++;
    var Assert = YAHOO.util.Assert;
    _$jscoverage['build/yuitest/yuitest.js'][1967]++;
    Assert.areEqual(expected.getHours(), actual.getHours(), Assert._formatMessage(message, "Hours should be equal."));
    _$jscoverage['build/yuitest/yuitest.js'][1968]++;
    Assert.areEqual(expected.getMinutes(), actual.getMinutes(), Assert._formatMessage(message, "Minutes should be equal."));
    _$jscoverage['build/yuitest/yuitest.js'][1969]++;
    Assert.areEqual(expected.getSeconds(), actual.getSeconds(), Assert._formatMessage(message, "Seconds should be equal."));
  }
  else {
    _$jscoverage['build/yuitest/yuitest.js'][1971]++;
    throw new TypeError("DateAssert.timesAreEqual(): Expected and actual values must be Date objects.");
  }
})};
_$jscoverage['build/yuitest/yuitest.js'][1976]++;
YAHOO.namespace("tool");
_$jscoverage['build/yuitest/yuitest.js'][1988]++;
YAHOO.tool.TestManager = {TEST_PAGE_BEGIN_EVENT: "testpagebegin", TEST_PAGE_COMPLETE_EVENT: "testpagecomplete", TEST_MANAGER_BEGIN_EVENT: "testmanagerbegin", TEST_MANAGER_COMPLETE_EVENT: "testmanagercomplete", _curPage: null, _frame: null, _logger: null, _timeoutId: 0, _pages: [], _results: null, _handleTestRunnerComplete: (function (data) {
  _$jscoverage['build/yuitest/yuitest.js'][2099]++;
  this.fireEvent(this.TEST_PAGE_COMPLETE_EVENT, {page: this._curPage, results: data.results});
  _$jscoverage['build/yuitest/yuitest.js'][2108]++;
  this._processResults(this._curPage, data.results);
  _$jscoverage['build/yuitest/yuitest.js'][2110]++;
  this._logger.clearTestRunner();
  _$jscoverage['build/yuitest/yuitest.js'][2113]++;
  if (this._pages.length) {
    _$jscoverage['build/yuitest/yuitest.js'][2114]++;
    this._timeoutId = setTimeout((function () {
  _$jscoverage['build/yuitest/yuitest.js'][2115]++;
  YAHOO.tool.TestManager._run();
}), 1000);
  }
  else {
    _$jscoverage['build/yuitest/yuitest.js'][2118]++;
    this.fireEvent(this.TEST_MANAGER_COMPLETE_EVENT, this._results);
  }
}), _processResults: (function (page, results) {
  _$jscoverage['build/yuitest/yuitest.js'][2131]++;
  var r = this._results;
  _$jscoverage['build/yuitest/yuitest.js'][2133]++;
  r.passed += results.passed;
  _$jscoverage['build/yuitest/yuitest.js'][2134]++;
  r.failed += results.failed;
  _$jscoverage['build/yuitest/yuitest.js'][2135]++;
  r.ignored += results.ignored;
  _$jscoverage['build/yuitest/yuitest.js'][2136]++;
  r.total += results.total;
  _$jscoverage['build/yuitest/yuitest.js'][2137]++;
  r.duration += results.duration;
  _$jscoverage['build/yuitest/yuitest.js'][2139]++;
  if (results.failed) {
    _$jscoverage['build/yuitest/yuitest.js'][2140]++;
    r.failedPages.push(page);
  }
  else {
    _$jscoverage['build/yuitest/yuitest.js'][2142]++;
    r.passedPages.push(page);
  }
  _$jscoverage['build/yuitest/yuitest.js'][2145]++;
  results.name = page;
  _$jscoverage['build/yuitest/yuitest.js'][2146]++;
  results.type = "page";
  _$jscoverage['build/yuitest/yuitest.js'][2148]++;
  r[page] = results;
}), _run: (function () {
  _$jscoverage['build/yuitest/yuitest.js'][2160]++;
  this._curPage = this._pages.shift();
  _$jscoverage['build/yuitest/yuitest.js'][2162]++;
  this.fireEvent(this.TEST_PAGE_BEGIN_EVENT, this._curPage);
  _$jscoverage['build/yuitest/yuitest.js'][2166]++;
  this._frame.location.replace(this._curPage);
}), load: (function () {
  _$jscoverage['build/yuitest/yuitest.js'][2181]++;
  if ((parent.YAHOO.tool.TestManager !== this)) {
    _$jscoverage['build/yuitest/yuitest.js'][2182]++;
    parent.YAHOO.tool.TestManager.load();
  }
  else {
    _$jscoverage['build/yuitest/yuitest.js'][2185]++;
    if (this._frame) {
      _$jscoverage['build/yuitest/yuitest.js'][2187]++;
      var TestRunner = this._frame.YAHOO.tool.TestRunner;
      _$jscoverage['build/yuitest/yuitest.js'][2189]++;
      this._logger.setTestRunner(TestRunner);
      _$jscoverage['build/yuitest/yuitest.js'][2190]++;
      TestRunner.subscribe(TestRunner.COMPLETE_EVENT, this._handleTestRunnerComplete, this, true);
      _$jscoverage['build/yuitest/yuitest.js'][2193]++;
      TestRunner.run();
    }
  }
}), setPages: (function (pages) {
  _$jscoverage['build/yuitest/yuitest.js'][2205]++;
  this._pages = pages;
}), start: (function () {
  _$jscoverage['build/yuitest/yuitest.js'][2215]++;
  if ((! this._initialized)) {
    _$jscoverage['build/yuitest/yuitest.js'][2223]++;
    this.createEvent(this.TEST_PAGE_BEGIN_EVENT);
    _$jscoverage['build/yuitest/yuitest.js'][2232]++;
    this.createEvent(this.TEST_PAGE_COMPLETE_EVENT);
    _$jscoverage['build/yuitest/yuitest.js'][2239]++;
    this.createEvent(this.TEST_MANAGER_BEGIN_EVENT);
    _$jscoverage['build/yuitest/yuitest.js'][2251]++;
    this.createEvent(this.TEST_MANAGER_COMPLETE_EVENT);
    _$jscoverage['build/yuitest/yuitest.js'][2254]++;
    if ((! this._frame)) {
      _$jscoverage['build/yuitest/yuitest.js'][2255]++;
      var frame = document.createElement("iframe");
      _$jscoverage['build/yuitest/yuitest.js'][2256]++;
      frame.style.visibility = "hidden";
      _$jscoverage['build/yuitest/yuitest.js'][2257]++;
      frame.style.position = "absolute";
      _$jscoverage['build/yuitest/yuitest.js'][2258]++;
      document.body.appendChild(frame);
      _$jscoverage['build/yuitest/yuitest.js'][2259]++;
      this._frame = (frame.contentWindow || frame.contentDocument.parentWindow);
    }
    _$jscoverage['build/yuitest/yuitest.js'][2263]++;
    if ((! this._logger)) {
      _$jscoverage['build/yuitest/yuitest.js'][2264]++;
      this._logger = new (YAHOO.tool.TestLogger)();
    }
    _$jscoverage['build/yuitest/yuitest.js'][2267]++;
    this._initialized = true;
  }
  _$jscoverage['build/yuitest/yuitest.js'][2272]++;
  this._results = {passed: 0, failed: 0, ignored: 0, total: 0, type: "report", name: "YUI Test Results", duration: 0, failedPages: [], passedPages: []};
  _$jscoverage['build/yuitest/yuitest.js'][2300]++;
  this.fireEvent(this.TEST_MANAGER_BEGIN_EVENT, null);
  _$jscoverage['build/yuitest/yuitest.js'][2301]++;
  this._run();
}), stop: (function () {
  _$jscoverage['build/yuitest/yuitest.js'][2311]++;
  clearTimeout(this._timeoutId);
})};
_$jscoverage['build/yuitest/yuitest.js'][2316]++;
YAHOO.lang.augmentObject(YAHOO.tool.TestManager, YAHOO.util.EventProvider.prototype);
_$jscoverage['build/yuitest/yuitest.js'][2318]++;
YAHOO.namespace("tool");
_$jscoverage['build/yuitest/yuitest.js'][2333]++;
YAHOO.tool.TestLogger = (function (element, config) {
  _$jscoverage['build/yuitest/yuitest.js'][2334]++;
  YAHOO.tool.TestLogger.superclass.constructor.call(this, element, config);
  _$jscoverage['build/yuitest/yuitest.js'][2335]++;
  this.init();
});
_$jscoverage['build/yuitest/yuitest.js'][2338]++;
YAHOO.lang.extend(YAHOO.tool.TestLogger, YAHOO.widget.LogReader, {footerEnabled: true, newestOnTop: false, formatMsg: (function (message) {
  _$jscoverage['build/yuitest/yuitest.js'][2352]++;
  var category = message.category;
  _$jscoverage['build/yuitest/yuitest.js'][2353]++;
  var text = this.html2Text(message.msg);
  _$jscoverage['build/yuitest/yuitest.js'][2355]++;
  return ("<pre><p><span class=\"" + category + "\">" + category.toUpperCase() + "</span> " + text + "</p></pre>");
}), init: (function () {
  _$jscoverage['build/yuitest/yuitest.js'][2370]++;
  if (YAHOO.tool.TestRunner) {
    _$jscoverage['build/yuitest/yuitest.js'][2371]++;
    this.setTestRunner(YAHOO.tool.TestRunner);
  }
  _$jscoverage['build/yuitest/yuitest.js'][2375]++;
  this.hideSource("global");
  _$jscoverage['build/yuitest/yuitest.js'][2376]++;
  this.hideSource("LogReader");
  _$jscoverage['build/yuitest/yuitest.js'][2379]++;
  this.hideCategory("warn");
  _$jscoverage['build/yuitest/yuitest.js'][2380]++;
  this.hideCategory("window");
  _$jscoverage['build/yuitest/yuitest.js'][2381]++;
  this.hideCategory("time");
  _$jscoverage['build/yuitest/yuitest.js'][2384]++;
  this.clearConsole();
}), clearTestRunner: (function () {
  _$jscoverage['build/yuitest/yuitest.js'][2394]++;
  if (this._runner) {
    _$jscoverage['build/yuitest/yuitest.js'][2395]++;
    this._runner.unsubscribeAll();
    _$jscoverage['build/yuitest/yuitest.js'][2396]++;
    this._runner = null;
  }
}), setTestRunner: (function (testRunner) {
  _$jscoverage['build/yuitest/yuitest.js'][2408]++;
  if (this._runner) {
    _$jscoverage['build/yuitest/yuitest.js'][2409]++;
    this.clearTestRunner();
  }
  _$jscoverage['build/yuitest/yuitest.js'][2412]++;
  this._runner = testRunner;
  _$jscoverage['build/yuitest/yuitest.js'][2415]++;
  testRunner.subscribe(testRunner.TEST_PASS_EVENT, this._handleTestRunnerEvent, this, true);
  _$jscoverage['build/yuitest/yuitest.js'][2416]++;
  testRunner.subscribe(testRunner.TEST_FAIL_EVENT, this._handleTestRunnerEvent, this, true);
  _$jscoverage['build/yuitest/yuitest.js'][2417]++;
  testRunner.subscribe(testRunner.TEST_IGNORE_EVENT, this._handleTestRunnerEvent, this, true);
  _$jscoverage['build/yuitest/yuitest.js'][2418]++;
  testRunner.subscribe(testRunner.BEGIN_EVENT, this._handleTestRunnerEvent, this, true);
  _$jscoverage['build/yuitest/yuitest.js'][2419]++;
  testRunner.subscribe(testRunner.COMPLETE_EVENT, this._handleTestRunnerEvent, this, true);
  _$jscoverage['build/yuitest/yuitest.js'][2420]++;
  testRunner.subscribe(testRunner.TEST_SUITE_BEGIN_EVENT, this._handleTestRunnerEvent, this, true);
  _$jscoverage['build/yuitest/yuitest.js'][2421]++;
  testRunner.subscribe(testRunner.TEST_SUITE_COMPLETE_EVENT, this._handleTestRunnerEvent, this, true);
  _$jscoverage['build/yuitest/yuitest.js'][2422]++;
  testRunner.subscribe(testRunner.TEST_CASE_BEGIN_EVENT, this._handleTestRunnerEvent, this, true);
  _$jscoverage['build/yuitest/yuitest.js'][2423]++;
  testRunner.subscribe(testRunner.TEST_CASE_COMPLETE_EVENT, this._handleTestRunnerEvent, this, true);
}), _handleTestRunnerEvent: (function (data) {
  _$jscoverage['build/yuitest/yuitest.js'][2439]++;
  var TestRunner = YAHOO.tool.TestRunner;
  _$jscoverage['build/yuitest/yuitest.js'][2442]++;
  var message = "";
  _$jscoverage['build/yuitest/yuitest.js'][2443]++;
  var messageType = "";
  _$jscoverage['build/yuitest/yuitest.js'][2445]++;
  switch (data.type) {
  case TestRunner.BEGIN_EVENT:
    _$jscoverage['build/yuitest/yuitest.js'][2447]++;
    message = ("Testing began at " + new Date().toString() + ".");
    _$jscoverage['build/yuitest/yuitest.js'][2448]++;
    messageType = "info";
    _$jscoverage['build/yuitest/yuitest.js'][2449]++;
    break;
  case TestRunner.COMPLETE_EVENT:
    _$jscoverage['build/yuitest/yuitest.js'][2452]++;
    message = ("Testing completed at " + new Date().toString() + ".\nPassed:" + data.results.passed + " Failed:" + data.results.failed + " Total:" + data.results.total);
    _$jscoverage['build/yuitest/yuitest.js'][2454]++;
    messageType = "info";
    _$jscoverage['build/yuitest/yuitest.js'][2455]++;
    break;
  case TestRunner.TEST_FAIL_EVENT:
    _$jscoverage['build/yuitest/yuitest.js'][2458]++;
    message = (data.testName + ": " + data.error.getMessage());
    _$jscoverage['build/yuitest/yuitest.js'][2459]++;
    messageType = "fail";
    _$jscoverage['build/yuitest/yuitest.js'][2460]++;
    break;
  case TestRunner.TEST_IGNORE_EVENT:
    _$jscoverage['build/yuitest/yuitest.js'][2463]++;
    message = (data.testName + ": ignored.");
    _$jscoverage['build/yuitest/yuitest.js'][2464]++;
    messageType = "ignore";
    _$jscoverage['build/yuitest/yuitest.js'][2465]++;
    break;
  case TestRunner.TEST_PASS_EVENT:
    _$jscoverage['build/yuitest/yuitest.js'][2468]++;
    message = (data.testName + ": passed.");
    _$jscoverage['build/yuitest/yuitest.js'][2469]++;
    messageType = "pass";
    _$jscoverage['build/yuitest/yuitest.js'][2470]++;
    break;
  case TestRunner.TEST_SUITE_BEGIN_EVENT:
    _$jscoverage['build/yuitest/yuitest.js'][2473]++;
    message = ("Test suite \"" + data.testSuite.name + "\" started.");
    _$jscoverage['build/yuitest/yuitest.js'][2474]++;
    messageType = "info";
    _$jscoverage['build/yuitest/yuitest.js'][2475]++;
    break;
  case TestRunner.TEST_SUITE_COMPLETE_EVENT:
    _$jscoverage['build/yuitest/yuitest.js'][2478]++;
    message = ("Test suite \"" + data.testSuite.name + "\" completed.\nPassed:" + data.results.passed + " Failed:" + data.results.failed + " Total:" + data.results.total);
    _$jscoverage['build/yuitest/yuitest.js'][2480]++;
    messageType = "info";
    _$jscoverage['build/yuitest/yuitest.js'][2481]++;
    break;
  case TestRunner.TEST_CASE_BEGIN_EVENT:
    _$jscoverage['build/yuitest/yuitest.js'][2484]++;
    message = ("Test case \"" + data.testCase.name + "\" started.");
    _$jscoverage['build/yuitest/yuitest.js'][2485]++;
    messageType = "info";
    _$jscoverage['build/yuitest/yuitest.js'][2486]++;
    break;
  case TestRunner.TEST_CASE_COMPLETE_EVENT:
    _$jscoverage['build/yuitest/yuitest.js'][2489]++;
    message = ("Test case \"" + data.testCase.name + "\" completed.\nPassed:" + data.results.passed + " Failed:" + data.results.failed + " Total:" + data.results.total);
    _$jscoverage['build/yuitest/yuitest.js'][2491]++;
    messageType = "info";
    _$jscoverage['build/yuitest/yuitest.js'][2492]++;
    break;
  default:
    _$jscoverage['build/yuitest/yuitest.js'][2494]++;
    message = ("Unexpected event " + data.type);
    _$jscoverage['build/yuitest/yuitest.js'][2495]++;
    message = "info";
  }
  _$jscoverage['build/yuitest/yuitest.js'][2498]++;
  YAHOO.log(message, messageType, "TestRunner");
})});
_$jscoverage['build/yuitest/yuitest.js'][2502]++;
YAHOO.namespace("tool.TestFormat");
_$jscoverage['build/yuitest/yuitest.js'][2512]++;
YAHOO.tool.TestFormat.JSON = (function (results) {
  _$jscoverage['build/yuitest/yuitest.js'][2513]++;
  return YAHOO.lang.JSON.stringify(results);
});
_$jscoverage['build/yuitest/yuitest.js'][2524]++;
YAHOO.tool.TestFormat.XML = (function (results) {
  _$jscoverage['build/yuitest/yuitest.js'][2526]++;
  var l = YAHOO.lang;
  _$jscoverage['build/yuitest/yuitest.js'][2527]++;
  var xml = ("<" + results.type + " name=\"" + results.name.replace(/"/g, "&quot;").replace(/'/g, "&apos;") + "\"");
  _$jscoverage['build/yuitest/yuitest.js'][2529]++;
  if (l.isNumber(results.duration)) {
    _$jscoverage['build/yuitest/yuitest.js'][2530]++;
    xml += (" duration=\"" + results.duration + "\"");
  }
  _$jscoverage['build/yuitest/yuitest.js'][2533]++;
  if ((results.type == "test")) {
    _$jscoverage['build/yuitest/yuitest.js'][2534]++;
    xml += (" result=\"" + results.result + "\" message=\"" + results.message + "\">");
  }
  else {
    _$jscoverage['build/yuitest/yuitest.js'][2536]++;
    xml += (" passed=\"" + results.passed + "\" failed=\"" + results.failed + "\" ignored=\"" + results.ignored + "\" total=\"" + results.total + "\">");
    _$jscoverage['build/yuitest/yuitest.js'][2537]++;
    for (var prop in results) {
      _$jscoverage['build/yuitest/yuitest.js'][2538]++;
      if ((l.hasOwnProperty(results, prop) && l.isObject(results[prop]) && (! l.isArray(results[prop])))) {
        _$jscoverage['build/yuitest/yuitest.js'][2539]++;
        xml += arguments.callee(results[prop]);
      }
}
  }
  _$jscoverage['build/yuitest/yuitest.js'][2544]++;
  xml += ("</" + results.type + ">");
  _$jscoverage['build/yuitest/yuitest.js'][2546]++;
  return xml;
});
_$jscoverage['build/yuitest/yuitest.js'][2549]++;
YAHOO.namespace("tool");
_$jscoverage['build/yuitest/yuitest.js'][2560]++;
YAHOO.tool.TestReporter = (function (url, format) {
  _$jscoverage['build/yuitest/yuitest.js'][2567]++;
  this.url = url;
  _$jscoverage['build/yuitest/yuitest.js'][2574]++;
  this.format = (format || YAHOO.tool.TestFormat.XML);
  _$jscoverage['build/yuitest/yuitest.js'][2582]++;
  this._fields = new Object();
  _$jscoverage['build/yuitest/yuitest.js'][2590]++;
  this._form = null;
  _$jscoverage['build/yuitest/yuitest.js'][2598]++;
  this._iframe = null;
});
_$jscoverage['build/yuitest/yuitest.js'][2601]++;
YAHOO.tool.TestReporter.prototype = {constructor: YAHOO.tool.TestReporter, _convertToISOString: (function (date) {
  _$jscoverage['build/yuitest/yuitest.js'][2615]++;
  function f(n) {
    _$jscoverage['build/yuitest/yuitest.js'][2617]++;
    return ((n < 10)? ("0" + n): n);
}
  _$jscoverage['build/yuitest/yuitest.js'][2620]++;
  return (date.getUTCFullYear() + "-" + f((date.getUTCMonth() + 1)) + "-" + f(date.getUTCDate()) + "T" + f(date.getUTCHours()) + ":" + f(date.getUTCMinutes()) + ":" + f(date.getUTCSeconds()) + "Z");
}), addField: (function (name, value) {
  _$jscoverage['build/yuitest/yuitest.js'][2637]++;
  this._fields[name] = value;
}), clearFields: (function () {
  _$jscoverage['build/yuitest/yuitest.js'][2646]++;
  this._fields = new Object();
}), destroy: (function () {
  _$jscoverage['build/yuitest/yuitest.js'][2656]++;
  if (this._form) {
    _$jscoverage['build/yuitest/yuitest.js'][2657]++;
    this._form.parentNode.removeChild(this._form);
    _$jscoverage['build/yuitest/yuitest.js'][2658]++;
    this._form = null;
  }
  _$jscoverage['build/yuitest/yuitest.js'][2660]++;
  if (this._iframe) {
    _$jscoverage['build/yuitest/yuitest.js'][2661]++;
    this._iframe.parentNode.removeChild(this._iframe);
    _$jscoverage['build/yuitest/yuitest.js'][2662]++;
    this._iframe = null;
  }
  _$jscoverage['build/yuitest/yuitest.js'][2664]++;
  this._fields = null;
}), report: (function (results) {
  _$jscoverage['build/yuitest/yuitest.js'][2676]++;
  if ((! this._form)) {
    _$jscoverage['build/yuitest/yuitest.js'][2677]++;
    this._form = document.createElement("form");
    _$jscoverage['build/yuitest/yuitest.js'][2678]++;
    this._form.method = "post";
    _$jscoverage['build/yuitest/yuitest.js'][2679]++;
    this._form.style.visibility = "hidden";
    _$jscoverage['build/yuitest/yuitest.js'][2680]++;
    this._form.style.position = "absolute";
    _$jscoverage['build/yuitest/yuitest.js'][2681]++;
    this._form.style.top = 0;
    _$jscoverage['build/yuitest/yuitest.js'][2682]++;
    document.body.appendChild(this._form);
    _$jscoverage['build/yuitest/yuitest.js'][2685]++;
    if (YAHOO.env.ua.ie) {
      _$jscoverage['build/yuitest/yuitest.js'][2686]++;
      this._iframe = document.createElement("<iframe name=\"yuiTestTarget\" />");
    }
    else {
      _$jscoverage['build/yuitest/yuitest.js'][2688]++;
      this._iframe = document.createElement("iframe");
      _$jscoverage['build/yuitest/yuitest.js'][2689]++;
      this._iframe.name = "yuiTestTarget";
    }
    _$jscoverage['build/yuitest/yuitest.js'][2692]++;
    this._iframe.src = "javascript:false";
    _$jscoverage['build/yuitest/yuitest.js'][2693]++;
    this._iframe.style.visibility = "hidden";
    _$jscoverage['build/yuitest/yuitest.js'][2694]++;
    this._iframe.style.position = "absolute";
    _$jscoverage['build/yuitest/yuitest.js'][2695]++;
    this._iframe.style.top = 0;
    _$jscoverage['build/yuitest/yuitest.js'][2696]++;
    document.body.appendChild(this._iframe);
    _$jscoverage['build/yuitest/yuitest.js'][2698]++;
    this._form.target = "yuiTestTarget";
  }
  _$jscoverage['build/yuitest/yuitest.js'][2702]++;
  this._form.action = this.url;
  _$jscoverage['build/yuitest/yuitest.js'][2705]++;
  while (this._form.hasChildNodes()) {
    _$jscoverage['build/yuitest/yuitest.js'][2706]++;
    this._form.removeChild(this._form.lastChild);
}
  _$jscoverage['build/yuitest/yuitest.js'][2710]++;
  this._fields.results = this.format(results);
  _$jscoverage['build/yuitest/yuitest.js'][2711]++;
  this._fields.useragent = navigator.userAgent;
  _$jscoverage['build/yuitest/yuitest.js'][2712]++;
  this._fields.timestamp = this._convertToISOString(new Date());
  _$jscoverage['build/yuitest/yuitest.js'][2715]++;
  for (var prop in this._fields) {
    _$jscoverage['build/yuitest/yuitest.js'][2716]++;
    if ((YAHOO.lang.hasOwnProperty(this._fields, prop) && ((typeof this._fields[prop]) != "function"))) {
      _$jscoverage['build/yuitest/yuitest.js'][2717]++;
      if (YAHOO.env.ua.ie) {
        _$jscoverage['build/yuitest/yuitest.js'][2718]++;
        input = document.createElement(("<input name=\"" + prop + "\" >"));
      }
      else {
        _$jscoverage['build/yuitest/yuitest.js'][2720]++;
        input = document.createElement("input");
        _$jscoverage['build/yuitest/yuitest.js'][2721]++;
        input.name = prop;
      }
      _$jscoverage['build/yuitest/yuitest.js'][2723]++;
      input.type = "hidden";
      _$jscoverage['build/yuitest/yuitest.js'][2724]++;
      input.value = this._fields[prop];
      _$jscoverage['build/yuitest/yuitest.js'][2725]++;
      this._form.appendChild(input);
    }
}
  _$jscoverage['build/yuitest/yuitest.js'][2730]++;
  (delete this._fields.results);
  _$jscoverage['build/yuitest/yuitest.js'][2731]++;
  (delete this._fields.useragent);
  _$jscoverage['build/yuitest/yuitest.js'][2732]++;
  (delete this._fields.timestamp);
  _$jscoverage['build/yuitest/yuitest.js'][2734]++;
  if ((arguments[1] !== false)) {
    _$jscoverage['build/yuitest/yuitest.js'][2735]++;
    this._form.submit();
  }
})};
_$jscoverage['build/yuitest/yuitest.js'][2741]++;
YAHOO.register("yuitest", YAHOO.tool.TestRunner, {version: "2.8.0r4", build: "2449"});

