Hex Artifact Content Вы: nobody
Вход

Artifact 0a08332d896e3a5d4dd7b3f594b52263646a14d9:


0000: ef bb bf 24 65 6e 67 69 6e 65 20 4a 53 63 72 69  ...$engine JScri
0010: 70 74 0d 0a 24 75 6e 61 6d 65 20 6a 73 55 6e 69  pt..$uname jsUni
0020: 74 43 6f 72 65 0d 0a 24 64 6e 61 6d 65 20 d0 91  tCore..$dname ..
0030: d0 b8 d0 b1 d0 bb d0 b8 d0 be d1 82 d0 b5 d0 ba  ................
0040: d0 b0 20 d1 8e d0 bd d0 b8 d1 82 2d d1 82 d0 b5  .. ........-....
0050: d1 81 d1 82 d0 b8 d1 80 d0 be d0 b2 d0 b0 d0 bd  ................
0060: d0 b8 d1 8f 20 d0 b4 d0 bb d1 8f 20 4a 61 76 61  .... ...... Java
0070: 53 63 72 69 70 74 0d 0a 24 61 64 64 69 6e 20 67  Script..$addin g
0080: 6c 6f 62 61 6c 0d 0a 0d 0a 2f 2a 2a 0d 0a 20 2a  lobal..../**.. *
0090: 20 40 66 69 6c 65 6f 76 65 72 76 69 65 77 0d 0a   @fileoverview..
00a0: 20 2a 20 6a 73 55 6e 69 74 43 6f 72 65 2e 6a 73   * jsUnitCore.js
00b0: 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 69 6d   contains the im
00c0: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  plementation of 
00d0: 74 68 65 20 63 6f 72 65 20 4a 73 55 6e 69 74 20  the core JsUnit 
00e0: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 3a 20 61  functionality: a
00f0: 73 73 65 72 74 69 6f 6e 73 2c 20 4a 73 55 6e 69  ssertions, JsUni
0100: 74 54 65 73 74 53 75 69 74 65 73 2c 20 61 6e 64  tTestSuites, and
0110: 20 4a 73 55 6e 69 74 2e 46 61 69 6c 75 72 65 2e   JsUnit.Failure.
0120: 0d 0a 20 2a 20 41 6e 20 48 54 4d 4c 20 70 61 67  .. * An HTML pag
0130: 65 20 69 73 20 63 6f 6e 73 69 64 65 72 65 64 20  e is considered 
0140: 74 6f 20 62 65 20 61 20 4a 73 55 6e 69 74 20 54  to be a JsUnit T
0150: 65 73 74 20 50 61 67 65 20 69 66 20 69 74 20 22  est Page if it "
0160: 69 6e 63 6c 75 64 65 73 22 20 6a 73 55 6e 69 74  includes" jsUnit
0170: 43 6f 72 65 2e 6a 73 2c 20 69 2e 65 2e 20 74 68  Core.js, i.e. th
0180: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6c 69 6e 65  e following line
0190: 20 69 73 20 70 72 65 73 65 6e 74 3a 0d 0a 20 2a   is present:.. *
01a0: 20 3c 63 6f 64 65 3e 0d 0a 20 2a 20 26 6c 74 3b   <code>.. * &lt;
01b0: 73 63 72 69 70 74 20 74 79 70 65 3d 22 74 65 78  script type="tex
01c0: 74 2f 6a 61 76 61 73 63 72 69 70 74 22 20 73 72  t/javascript" sr
01d0: 63 3d 22 2f 70 61 74 68 2f 74 6f 2f 6a 73 55 6e  c="/path/to/jsUn
01e0: 69 74 43 6f 72 65 2e 6a 73 22 26 67 74 3b 26 6c  itCore.js"&gt;&l
01f0: 74 3b 2f 73 63 72 69 70 74 26 67 74 3b 0d 0a 20  t;/script&gt;.. 
0200: 2a 20 3c 2f 63 6f 64 65 3e 0d 0a 20 2a 20 40 61  * </code>.. * @a
0210: 75 74 68 6f 72 20 45 64 77 61 72 64 20 48 69 65  uthor Edward Hie
0220: 61 74 74 2c 20 65 64 77 61 72 64 40 6a 73 75 6e  att, edward@jsun
0230: 69 74 2e 6e 65 74 2c 20 68 74 74 70 3a 2f 2f 77  it.net, http://w
0240: 77 77 2e 6a 73 75 6e 69 74 2e 6e 65 74 0d 0a 20  ww.jsunit.net.. 
0250: 2a 2f 0d 0a 0d 0a 20 2f 2a 2a 0d 0a 20 2a 20 d0  */.... /**.. * .
0260: 9f d0 be d1 80 d1 82 20 d0 b1 d0 b8 d0 b1 d0 bb  ....... ........
0270: d0 b8 d0 be d1 82 d0 b5 d0 ba d0 b8 20 6a 73 55  ............ jsU
0280: 6e 69 74 43 6f 72 65 2e 6a 73 20 28 68 74 74 70  nitCore.js (http
0290: 3a 2f 2f 6a 73 75 6e 69 74 2e 6e 65 74 29 20 d0  ://jsunit.net) .
02a0: b4 d0 bb d1 8f 20 d0 bf d1 80 d0 be d0 b5 d0 ba  ..... ..........
02b0: d1 82 d0 b0 20 22 d0 a1 d0 bd d0 b5 d0 b3 d0 be  .... "..........
02c0: d0 bf d0 b0 d1 82 22 20 28 68 74 74 70 3a 2f 2f  ......" (http://
02d0: 73 6e 65 67 6f 70 61 74 2e 72 75 29 2e 0d 0a 20  snegopat.ru)... 
02e0: 2a 20 d0 90 d0 b2 d1 82 d0 be d1 80 20 d0 bf d0  * .......... ...
02f0: be d1 80 d1 82 d0 b0 3a 20 d0 90 d0 bb d0 b5 d0  .......: .......
0300: ba d1 81 d0 b0 d0 bd d0 b4 d1 80 20 d0 9a d1 83  ........... ....
0310: d0 bd d1 82 d0 b0 d1 88 d0 be d0 b2 2c 20 6b 75  ............, ku
0320: 6e 74 61 73 68 6f 76 40 67 6d 61 69 6c 2e 63 6f  ntashov@gmail.co
0330: 6d 20 0d 0a 20 2a 2f 0d 0a 0d 0a 76 61 72 20 4a  m .. */....var J
0340: 73 55 6e 69 74 20 3d 20 7b 7d 3b 0d 0a 0d 0a 2f  sUnit = {};..../
0350: 2f 53 6e 65 67 6f 70 61 74 2e 0d 0a 2f 2f 20 d0  /Snegopat...// .
0360: 9e d0 b1 d1 85 d0 be d0 b4 20 d0 bf d1 80 d0 be  ......... ......
0370: d0 b1 d0 bb d0 b5 d0 bc d1 8b 20 d0 bf d0 b5 d1  .......... .....
0380: 80 d0 b5 d1 85 d0 b2 d0 b0 d1 82 d0 b0 20 d0 b2  ............. ..
0390: 20 d0 b2 d1 8b d0 b7 d1 8b d0 b2 d0 b0 d1 8e d1   ...............
03a0: 89 d0 b5 d0 bc 20 d0 bc d0 b5 d1 82 d0 be d0 b4  ..... ..........
03b0: d0 b5 20 d0 b8 d1 81 d0 ba d0 bb d1 8e d1 87 d0  .. .............
03c0: b5 d0 bd d0 b8 d0 b9 2c 20 0d 0a 2f 2f 20 d0 b1  ......., ..// ..
03d0: d1 80 d0 be d1 88 d0 b5 d0 bd d0 bd d1 8b d1 85  ................
03e0: 20 d0 b2 20 d0 bc d0 b5 d1 82 d0 be d0 b4 d0 b5   .. ............
03f0: 20 d0 b4 d1 80 d1 83 d0 b3 d0 be d0 b3 d0 be 20   .............. 
0400: d1 81 d0 ba d1 80 d0 b8 d0 bf d1 82 d0 b0 2e 0d  ................
0410: 0a 76 61 72 20 5f 63 61 6c 6c 65 72 45 72 72 6f  .var _callerErro
0420: 72 48 61 6e 64 6c 65 72 20 3d 20 6e 75 6c 6c 3b  rHandler = null;
0430: 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 53 65 74  ....function Set
0440: 45 72 72 6f 72 48 61 6e 64 6c 65 72 28 65 72 72  ErrorHandler(err
0450: 6f 72 48 61 6e 64 6c 65 72 29 0d 0a 7b 0d 0a 20  orHandler)..{.. 
0460: 20 20 20 69 66 20 28 5f 63 61 6c 6c 65 72 45 72     if (_callerEr
0470: 72 6f 72 48 61 6e 64 6c 65 72 20 26 26 20 65 72  rorHandler && er
0480: 72 6f 72 48 61 6e 64 6c 65 72 20 26 26 20 5f 63  rorHandler && _c
0490: 61 6c 6c 65 72 45 72 72 6f 72 48 61 6e 64 6c 65  allerErrorHandle
04a0: 72 20 21 3d 20 65 72 72 6f 72 48 61 6e 64 6c 65  r != errorHandle
04b0: 72 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  r)..    {..     
04c0: 20 20 20 20 2f 2a 20 d0 9f d0 be d0 ba d0 b0 20      /* ........ 
04d0: d0 bf d0 be d0 b4 d0 b4 d0 b5 d1 80 d0 b6 d0 b8  ................
04e0: d0 b2 d0 b0 d0 b5 d0 bc 20 d1 82 d0 be d0 bb d1  ........ .......
04f0: 8c d0 ba d0 be 20 d0 be d0 b4 d0 bd d0 be d0 b3  ..... ..........
0500: d0 be 20 d0 bf d0 be d0 b4 d0 bf d0 b8 d1 81 d1  .. .............
0510: 87 d0 b8 d0 ba d0 b0 20 d0 bd d0 b0 20 d0 be d1  ....... .... ...
0520: 88 d0 b8 d0 b1 d0 ba d0 b8 2e 20 0d 0a 20 20 20  .......... ..   
0530: 20 20 20 20 20 20 d0 a7 d1 82 d0 be d0 b1 d1 8b        ..........
0540: 20 d0 b8 d1 81 d0 ba d0 bb d1 8e d1 87 d0 b8 d1   ...............
0550: 82 d1 8c 20 d1 81 d0 bb d1 83 d1 87 d0 b0 d0 b9  ... ............
0560: d0 bd d1 8b d0 b5 20 d0 b2 d1 8b d1 81 d1 82 d1  ...... .........
0570: 80 d0 b5 d0 bb d1 8b 20 d0 b2 20 d0 bd d0 be d0  ....... .. .....
0580: b3 d1 83 2c 20 d0 b8 d1 81 d0 ba d0 bb d1 8e d1  ..., ...........
0590: 87 d0 b8 d0 bc 20 d0 bb d1 8e d0 b1 d1 8b d0 b5  ..... ..........
05a0: 20 20 0d 0a 20 20 20 20 20 20 20 20 20 d0 b4 d1    ..         ...
05b0: 80 d1 83 d0 b3 d0 b8 d0 b5 20 d0 bf d0 be d0 bf  ......... ......
05c0: d1 8b d1 82 d0 ba d0 b8 20 d1 83 d1 81 d1 82 d0  ........ .......
05d0: b0 d0 bd d0 be d0 b2 d0 ba d0 b8 20 d0 be d0 b1  ........... ....
05e0: d1 80 d0 b0 d0 b1 d0 be d1 82 d1 87 d0 b8 d0 ba  ................
05f0: d0 b0 2e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  ... */..        
0600: 77 61 72 6e 28 22 6a 73 55 6e 69 74 43 6f 72 65  warn("jsUnitCore
0610: 2e 6a 73 3a 3a 47 65 74 49 6e 73 61 6e 63 65 28  .js::GetInsance(
0620: 29 3a 20 d1 82 d0 be d0 bb d1 8c d0 ba d0 be 20  ): ............ 
0630: d0 be d0 b4 d0 b8 d0 bd 20 d1 81 d0 ba d1 80 d0  ........ .......
0640: b8 d0 bf d1 82 20 d0 bc d0 be d0 b6 d0 b5 d1 82  ..... ..........
0650: 20 d1 83 d1 81 d1 82 d0 b0 d0 bd d0 be d0 b2 d0   ...............
0660: b8 d1 82 d1 8c 20 d0 be d0 b1 d1 80 d0 b0 d0 b1  ..... ..........
0670: d0 be d1 82 d1 87 d0 b8 d0 ba 20 d0 be d1 88 d0  .......... .....
0680: b8 d0 b1 d0 be d0 ba 21 22 29 3b 0d 0a 20 20 20  .......!");..   
0690: 20 20 20 20 20 0d 0a 20 20 20 20 7d 0d 0a 20 20       ..    }..  
06a0: 20 20 65 6c 73 65 20 0d 0a 20 20 20 20 7b 20 20    else ..    {  
06b0: 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20        ..        
06c0: 5f 63 61 6c 6c 65 72 45 72 72 6f 72 48 61 6e 64  _callerErrorHand
06d0: 6c 65 72 20 3d 20 65 72 72 6f 72 48 61 6e 64 6c  ler = errorHandl
06e0: 65 72 3b 0d 0a 20 20 20 20 7d 0d 0a 7d 0d 0a 0d  er;..    }..}...
06f0: 0a 66 75 6e 63 74 69 6f 6e 20 52 65 73 65 74 45  .function ResetE
0700: 72 72 6f 72 48 61 6e 64 6c 65 72 28 29 0d 0a 7b  rrorHandler()..{
0710: 0d 0a 20 20 20 20 5f 63 61 6c 6c 65 72 45 72 72  ..    _callerErr
0720: 6f 72 48 61 6e 64 6c 65 72 20 3d 20 6e 75 6c 6c  orHandler = null
0730: 3b 0d 0a 7d 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e  ;..}....function
0740: 20 53 6e 65 67 6f 70 61 74 54 68 72 6f 77 45 78   SnegopatThrowEx
0750: 63 65 70 74 69 6f 6e 28 65 78 63 65 70 74 69 6f  ception(exceptio
0760: 6e 29 0d 0a 7b 0d 0a 20 20 20 20 69 66 20 28 5f  n)..{..    if (_
0770: 63 61 6c 6c 65 72 45 72 72 6f 72 48 61 6e 64 6c  callerErrorHandl
0780: 65 72 29 0d 0a 20 20 20 20 20 20 20 20 5f 63 61  er)..        _ca
0790: 6c 6c 65 72 45 72 72 6f 72 48 61 6e 64 6c 65 72  llerErrorHandler
07a0: 2e 63 61 6c 6c 28 6e 75 6c 6c 2c 20 65 78 63 65  .call(null, exce
07b0: 70 74 69 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20 74  ption);....    t
07c0: 68 72 6f 77 20 65 78 63 65 70 74 69 6f 6e 3b 0d  hrow exception;.
07d0: 0a 7d 0d 0a 2f 2f 2f 2f 2f 53 6e 65 67 6f 70 61  .}../////Snegopa
07e0: 74 2e 0d 0a 0d 0a 2f 2a 2a 0d 0a 20 2a 20 54 68  t...../**.. * Th
07f0: 65 20 4a 73 55 6e 69 74 20 76 65 72 73 69 6f 6e  e JsUnit version
0800: 0d 0a 20 2a 20 40 76 65 72 73 69 6f 6e 0d 0a 20  .. * @version.. 
0810: 2a 2f 0d 0a 4a 73 55 6e 69 74 2e 56 45 52 53 49  */..JsUnit.VERSI
0820: 4f 4e 20 3d 20 32 2e 32 3b 0d 0a 76 61 72 20 4a  ON = 2.2;..var J
0830: 53 55 4e 49 54 5f 56 45 52 53 49 4f 4e 20 3d 20  SUNIT_VERSION = 
0840: 4a 73 55 6e 69 74 2e 56 45 52 53 49 4f 4e 3b 0d  JsUnit.VERSION;.
0850: 0a 0d 0a 2f 2a 2a 0d 0a 20 2a 20 46 6f 72 20 63  .../**.. * For c
0860: 6f 6e 76 65 6e 69 65 6e 63 65 2c 20 61 20 76 61  onvenience, a va
0870: 72 69 61 62 6c 65 20 74 68 61 74 20 65 71 75 61  riable that equa
0880: 6c 73 20 22 75 6e 64 65 66 69 6e 65 64 22 0d 0a  ls "undefined"..
0890: 20 2a 2f 0d 0a 76 61 72 20 4a 53 55 4e 49 54 5f   */..var JSUNIT_
08a0: 55 4e 44 45 46 49 4e 45 44 5f 56 41 4c 55 45 3b  UNDEFINED_VALUE;
08b0: 0d 0a 0d 0a 2f 2a 2a 0d 0a 20 2a 20 57 68 65 74  ..../**.. * Whet
08c0: 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20 63  her or not the c
08d0: 75 72 72 65 6e 74 20 74 65 73 74 20 70 61 67 65  urrent test page
08e0: 20 68 61 73 20 62 65 65 6e 20 28 63 6f 6d 70 6c   has been (compl
08f0: 65 74 65 6c 79 29 20 6c 6f 61 64 65 64 20 79 65  etely) loaded ye
0900: 74 0d 0a 20 2a 2f 0d 0a 76 61 72 20 69 73 54 65  t.. */..var isTe
0910: 73 74 50 61 67 65 4c 6f 61 64 65 64 20 3d 20 66  stPageLoaded = f
0920: 61 6c 73 65 3b 0d 0a 2f 2a 2a 0d 0a 20 2a 20 50  alse;../**.. * P
0930: 72 65 64 69 63 61 74 65 20 75 73 65 64 20 66 6f  redicate used fo
0940: 72 20 74 65 73 74 69 6e 67 20 4a 61 76 61 53 63  r testing JavaSc
0950: 72 69 70 74 20 3d 3d 20 28 69 2e 65 2e 20 65 71  ript == (i.e. eq
0960: 75 61 6c 69 74 79 20 65 78 63 6c 75 64 69 6e 67  uality excluding
0970: 20 74 79 70 65 29 0d 0a 20 2a 2f 0d 0a 4a 73 55   type).. */..JsU
0980: 6e 69 74 2e 44 4f 55 42 4c 45 5f 45 51 55 41 4c  nit.DOUBLE_EQUAL
0990: 49 54 59 5f 50 52 45 44 49 43 41 54 45 20 3d 20  ITY_PREDICATE = 
09a0: 66 75 6e 63 74 69 6f 6e 28 76 61 72 31 2c 20 76  function(var1, v
09b0: 61 72 32 29 20 7b 72 65 74 75 72 6e 20 76 61 72  ar2) {return var
09c0: 31 20 3d 3d 20 76 61 72 32 3b 7d 3b 0d 0a 0d 0a  1 == var2;};....
09d0: 2f 2a 2a 0d 0a 20 2a 20 50 72 65 64 69 63 61 74  /**.. * Predicat
09e0: 65 20 75 73 65 64 20 66 6f 72 20 74 65 73 74 69  e used for testi
09f0: 6e 67 20 4a 61 76 61 53 63 72 69 70 74 20 3d 3d  ng JavaScript ==
0a00: 3d 20 28 69 2e 65 2e 20 65 71 75 61 6c 69 74 79  = (i.e. equality
0a10: 20 69 6e 63 6c 75 64 69 6e 67 20 74 79 70 65 29   including type)
0a20: 0d 0a 20 2a 2f 0d 0a 4a 73 55 6e 69 74 2e 54 52  .. */..JsUnit.TR
0a30: 49 50 4c 45 5f 45 51 55 41 4c 49 54 59 5f 50 52  IPLE_EQUALITY_PR
0a40: 45 44 49 43 41 54 45 20 3d 20 66 75 6e 63 74 69  EDICATE = functi
0a50: 6f 6e 28 76 61 72 31 2c 20 76 61 72 32 29 20 7b  on(var1, var2) {
0a60: 72 65 74 75 72 6e 20 76 61 72 31 20 3d 3d 3d 20  return var1 === 
0a70: 76 61 72 32 3b 7d 3b 0d 0a 0d 0a 2f 2a 2a 0d 0a  var2;};..../**..
0a80: 20 2a 20 50 72 65 64 69 63 61 74 65 20 75 73 65   * Predicate use
0a90: 64 20 66 6f 72 20 74 65 73 74 69 6e 67 20 77 68  d for testing wh
0aa0: 65 74 68 65 72 20 74 77 6f 20 6f 62 65 63 74 73  ether two obects
0ab0: 27 20 74 6f 53 74 72 69 6e 67 73 20 61 72 65 20  ' toStrings are 
0ac0: 65 71 75 61 6c 0d 0a 20 2a 2f 0d 0a 4a 73 55 6e  equal.. */..JsUn
0ad0: 69 74 2e 54 4f 5f 53 54 52 49 4e 47 5f 45 51 55  it.TO_STRING_EQU
0ae0: 41 4c 49 54 59 5f 50 52 45 44 49 43 41 54 45 20  ALITY_PREDICATE 
0af0: 3d 20 66 75 6e 63 74 69 6f 6e 28 76 61 72 31 2c  = function(var1,
0b00: 20 76 61 72 32 29 20 7b 72 65 74 75 72 6e 20 76   var2) {return v
0b10: 61 72 31 2e 74 6f 53 74 72 69 6e 67 28 29 20 3d  ar1.toString() =
0b20: 3d 3d 20 76 61 72 32 2e 74 6f 53 74 72 69 6e 67  == var2.toString
0b30: 28 29 3b 7d 3b 0d 0a 0d 0a 2f 2a 2a 0d 0a 20 2a  ();};..../**.. *
0b40: 20 48 61 73 68 20 6f 66 20 70 72 65 64 69 63 61   Hash of predica
0b50: 74 65 73 20 66 6f 72 20 74 65 73 74 69 6e 67 20  tes for testing 
0b60: 65 71 75 61 6c 69 74 79 20 62 79 20 70 72 69 6d  equality by prim
0b70: 69 74 69 76 65 20 74 79 70 65 0d 0a 20 2a 2f 0d  itive type.. */.
0b80: 0a 4a 73 55 6e 69 74 2e 50 52 49 4d 49 54 49 56  .JsUnit.PRIMITIV
0b90: 45 5f 45 51 55 41 4c 49 54 59 5f 50 52 45 44 49  E_EQUALITY_PREDI
0ba0: 43 41 54 45 53 20 3d 20 7b 0d 0a 20 20 20 20 27  CATES = {..    '
0bb0: 53 74 72 69 6e 67 27 3a 20 20 20 4a 73 55 6e 69  String':   JsUni
0bc0: 74 2e 44 4f 55 42 4c 45 5f 45 51 55 41 4c 49 54  t.DOUBLE_EQUALIT
0bd0: 59 5f 50 52 45 44 49 43 41 54 45 2c 0d 0a 20 20  Y_PREDICATE,..  
0be0: 20 20 27 4e 75 6d 62 65 72 27 3a 20 20 20 4a 73    'Number':   Js
0bf0: 55 6e 69 74 2e 44 4f 55 42 4c 45 5f 45 51 55 41  Unit.DOUBLE_EQUA
0c00: 4c 49 54 59 5f 50 52 45 44 49 43 41 54 45 2c 0d  LITY_PREDICATE,.
0c10: 0a 20 20 20 20 27 42 6f 6f 6c 65 61 6e 27 3a 20  .    'Boolean': 
0c20: 20 4a 73 55 6e 69 74 2e 44 4f 55 42 4c 45 5f 45   JsUnit.DOUBLE_E
0c30: 51 55 41 4c 49 54 59 5f 50 52 45 44 49 43 41 54  QUALITY_PREDICAT
0c40: 45 2c 0d 0a 20 20 20 20 27 44 61 74 65 27 3a 20  E,..    'Date': 
0c50: 20 20 20 20 4a 73 55 6e 69 74 2e 54 52 49 50 4c      JsUnit.TRIPL
0c60: 45 5f 45 51 55 41 4c 49 54 59 5f 50 52 45 44 49  E_EQUALITY_PREDI
0c70: 43 41 54 45 2c 0d 0a 20 20 20 20 27 52 65 67 45  CATE,..    'RegE
0c80: 78 70 27 3a 20 20 20 4a 73 55 6e 69 74 2e 54 4f  xp':   JsUnit.TO
0c90: 5f 53 54 52 49 4e 47 5f 45 51 55 41 4c 49 54 59  _STRING_EQUALITY
0ca0: 5f 50 52 45 44 49 43 41 54 45 2c 0d 0a 20 20 20  _PREDICATE,..   
0cb0: 20 27 46 75 6e 63 74 69 6f 6e 27 3a 20 4a 73 55   'Function': JsU
0cc0: 6e 69 74 2e 54 4f 5f 53 54 52 49 4e 47 5f 45 51  nit.TO_STRING_EQ
0cd0: 55 41 4c 49 54 59 5f 50 52 45 44 49 43 41 54 45  UALITY_PREDICATE
0ce0: 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a 0d 0a 20 2a 20 48  ..}..../**.. * H
0cf0: 61 63 6b 20 66 6f 72 20 4e 53 36 32 20 62 75 67  ack for NS62 bug
0d00: 0d 0a 20 2a 20 40 70 72 69 76 61 74 65 0d 0a 20  .. * @private.. 
0d10: 2a 2f 0d 0a 4a 73 55 6e 69 74 2e 5f 66 69 78 54  */..JsUnit._fixT
0d20: 6f 70 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29 20  op = function() 
0d30: 7b 0d 0a 20 20 20 20 76 61 72 20 74 65 6d 70 54  {..    var tempT
0d40: 6f 70 20 3d 20 74 6f 70 3b 0d 0a 20 20 20 20 69  op = top;..    i
0d50: 66 20 28 21 74 65 6d 70 54 6f 70 29 20 7b 0d 0a  f (!tempTop) {..
0d60: 20 20 20 20 20 20 20 20 74 65 6d 70 54 6f 70 20          tempTop 
0d70: 3d 20 77 69 6e 64 6f 77 3b 0d 0a 20 20 20 20 20  = window;..     
0d80: 20 20 20 77 68 69 6c 65 20 28 74 65 6d 70 54 6f     while (tempTo
0d90: 70 2e 70 61 72 65 6e 74 29 20 7b 0d 0a 20 20 20  p.parent) {..   
0da0: 20 20 20 20 20 20 20 20 20 74 65 6d 70 54 6f 70           tempTop
0db0: 20 3d 20 74 65 6d 70 54 6f 70 2e 70 61 72 65 6e   = tempTop.paren
0dc0: 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t;..            
0dd0: 69 66 20 28 74 65 6d 70 54 6f 70 2e 74 6f 70 20  if (tempTop.top 
0de0: 26 26 20 74 65 6d 70 54 6f 70 2e 74 6f 70 2e 6a  && tempTop.top.j
0df0: 73 55 6e 69 74 54 65 73 74 53 75 69 74 65 29 20  sUnitTestSuite) 
0e00: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
0e10: 20 20 20 74 65 6d 70 54 6f 70 20 3d 20 74 65 6d     tempTop = tem
0e20: 70 54 6f 70 2e 74 6f 70 3b 0d 0a 20 20 20 20 20  pTop.top;..     
0e30: 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
0e40: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
0e50: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
0e60: 20 7d 0d 0a 20 20 20 20 74 72 79 20 7b 0d 0a 20   }..    try {.. 
0e70: 20 20 20 20 20 20 20 77 69 6e 64 6f 77 2e 74 6f         window.to
0e80: 70 20 3d 20 74 65 6d 70 54 6f 70 3b 0d 0a 20 20  p = tempTop;..  
0e90: 20 20 7d 20 63 61 74 63 68 20 28 65 29 20 7b 0d    } catch (e) {.
0ea0: 0a 20 20 20 20 7d 0d 0a 7d 0d 0a 0d 0a 2f 2f 53  .    }..}....//S
0eb0: 6e 65 67 6f 70 61 74 2e 0d 0a 2f 2f 4a 73 55 6e  negopat...//JsUn
0ec0: 69 74 2e 5f 66 69 78 54 6f 70 28 29 3b 0d 0a 2f  it._fixTop();../
0ed0: 2f 2f 2f 2f 53 6e 65 67 6f 70 61 74 2e 0d 0a 0d  ////Snegopat....
0ee0: 0a 2f 2a 2a 0d 0a 20 2a 20 40 70 61 72 61 6d 20  ./**.. * @param 
0ef0: 41 6e 79 20 6f 62 6a 65 63 74 0d 0a 20 2a 20 40  Any object.. * @
0f00: 72 65 74 75 72 6e 20 53 74 72 69 6e 67 20 2d 20  return String - 
0f10: 74 68 65 20 74 79 70 65 20 6f 66 20 74 68 65 20  the type of the 
0f20: 67 69 76 65 6e 20 6f 62 6a 65 63 74 0d 0a 20 2a  given object.. *
0f30: 20 40 70 72 69 76 61 74 65 0d 0a 20 2a 2f 0d 0a   @private.. */..
0f40: 4a 73 55 6e 69 74 2e 5f 74 72 75 65 54 79 70 65  JsUnit._trueType
0f50: 4f 66 20 3d 20 66 75 6e 63 74 69 6f 6e 28 73 6f  Of = function(so
0f60: 6d 65 74 68 69 6e 67 29 20 7b 0d 0a 20 20 20 20  mething) {..    
0f70: 76 61 72 20 72 65 73 75 6c 74 20 3d 20 74 79 70  var result = typ
0f80: 65 6f 66 20 73 6f 6d 65 74 68 69 6e 67 3b 0d 0a  eof something;..
0f90: 20 20 20 20 74 72 79 20 7b 0d 0a 20 20 20 20 20      try {..     
0fa0: 20 20 20 73 77 69 74 63 68 20 28 72 65 73 75 6c     switch (resul
0fb0: 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  t) {..          
0fc0: 20 20 63 61 73 65 20 27 73 74 72 69 6e 67 27 3a    case 'string':
0fd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
0fe0: 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20    break;..      
0ff0: 20 20 20 20 20 20 63 61 73 65 20 27 62 6f 6f 6c        case 'bool
1000: 65 61 6e 27 3a 0d 0a 20 20 20 20 20 20 20 20 20  ean':..         
1010: 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20         break;.. 
1020: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
1030: 27 6e 75 6d 62 65 72 27 3a 0d 0a 20 20 20 20 20  'number':..     
1040: 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
1050: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  ;..            c
1060: 61 73 65 20 27 6f 62 6a 65 63 74 27 3a 0d 0a 20  ase 'object':.. 
1070: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
1080: 27 66 75 6e 63 74 69 6f 6e 27 3a 0d 0a 20 20 20  'function':..   
1090: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 77 69               swi
10a0: 74 63 68 20 28 73 6f 6d 65 74 68 69 6e 67 2e 63  tch (something.c
10b0: 6f 6e 73 74 72 75 63 74 6f 72 29 20 7b 0d 0a 20  onstructor) {.. 
10c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d0: 20 20 20 63 61 73 65 20 6e 65 77 20 53 74 72 69     case new Stri
10e0: 6e 67 28 29 2e 63 6f 6e 73 74 72 75 63 74 6f 72  ng().constructor
10f0: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
1100: 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
1110: 74 20 3d 20 27 53 74 72 69 6e 67 27 3b 0d 0a 20  t = 'String';.. 
1120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1130: 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20         break;.. 
1140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1150: 20 20 20 63 61 73 65 20 6e 65 77 20 42 6f 6f 6c     case new Bool
1160: 65 61 6e 28 29 2e 63 6f 6e 73 74 72 75 63 74 6f  ean().constructo
1170: 72 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r:..            
1180: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
1190: 6c 74 20 3d 20 27 42 6f 6f 6c 65 61 6e 27 3b 0d  lt = 'Boolean';.
11a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11b0: 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d           break;.
11c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11d0: 20 20 20 20 20 63 61 73 65 20 6e 65 77 20 4e 75       case new Nu
11e0: 6d 62 65 72 28 29 2e 63 6f 6e 73 74 72 75 63 74  mber().construct
11f0: 6f 72 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or:..           
1200: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
1210: 75 6c 74 20 3d 20 27 4e 75 6d 62 65 72 27 3b 0d  ult = 'Number';.
1220: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1230: 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d           break;.
1240: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1250: 20 20 20 20 20 63 61 73 65 20 6e 65 77 20 41 72       case new Ar
1260: 72 61 79 28 29 2e 63 6f 6e 73 74 72 75 63 74 6f  ray().constructo
1270: 72 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r:..            
1280: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
1290: 6c 74 20 3d 20 27 41 72 72 61 79 27 3b 0d 0a 20  lt = 'Array';.. 
12a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b0: 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20         break;.. 
12c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d0: 20 20 20 63 61 73 65 20 6e 65 77 20 52 65 67 45     case new RegE
12e0: 78 70 28 29 2e 63 6f 6e 73 74 72 75 63 74 6f 72  xp().constructor
12f0: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
1300: 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
1310: 74 20 3d 20 27 52 65 67 45 78 70 27 3b 0d 0a 20  t = 'RegExp';.. 
1320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1330: 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20         break;.. 
1340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1350: 20 20 20 63 61 73 65 20 6e 65 77 20 44 61 74 65     case new Date
1360: 28 29 2e 63 6f 6e 73 74 72 75 63 74 6f 72 3a 0d  ().constructor:.
1370: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1380: 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20           result 
1390: 3d 20 27 44 61 74 65 27 3b 0d 0a 20 20 20 20 20  = 'Date';..     
13a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b0: 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20     break;..     
13c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
13d0: 61 73 65 20 46 75 6e 63 74 69 6f 6e 3a 0d 0a 20  ase Function:.. 
13e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13f0: 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20         result = 
1400: 27 46 75 6e 63 74 69 6f 6e 27 3b 0d 0a 20 20 20  'Function';..   
1410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1420: 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20       break;..   
1430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1440: 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20   default:..     
1450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1460: 20 20 20 69 66 20 28 73 6f 6d 65 74 68 69 6e 67     if (something
1470: 2e 63 6f 6e 73 74 72 75 63 74 6f 72 29 0d 0a 20  .constructor).. 
1480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1490: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
14a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14b0: 20 20 20 20 20 20 76 61 72 20 6d 20 3d 20 73 6f        var m = so
14c0: 6d 65 74 68 69 6e 67 2e 63 6f 6e 73 74 72 75 63  mething.construc
14d0: 74 6f 72 2e 74 6f 53 74 72 69 6e 67 28 29 2e 6d  tor.toString().m
14e0: 61 74 63 68 28 2f 66 75 6e 63 74 69 6f 6e 5c 73  atch(/function\s
14f0: 2a 28 5b 5e 28 20 5d 2b 29 5c 28 2f 29 3b 0d 0a  *([^( ]+)\(/);..
1500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1510: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1520: 6d 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m)..            
1530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1540: 20 20 20 20 72 65 73 75 6c 74 20 3d 20 6d 5b 31      result = m[1
1550: 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ];..            
1560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1570: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
1580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1590: 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20        break;..  
15a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15b0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
15c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15d0: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
15e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15f0: 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20       break;..   
1600: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1620: 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20  break;..        
1630: 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 66 69  }..    }..    fi
1640: 6e 61 6c 6c 79 20 7b 0d 0a 20 20 20 20 20 20 20  nally {..       
1650: 20 72 65 73 75 6c 74 20 3d 20 72 65 73 75 6c 74   result = result
1660: 2e 73 75 62 73 74 72 28 30 2c 20 31 29 2e 74 6f  .substr(0, 1).to
1670: 55 70 70 65 72 43 61 73 65 28 29 20 2b 20 72 65  UpperCase() + re
1680: 73 75 6c 74 2e 73 75 62 73 74 72 28 31 29 3b 0d  sult.substr(1);.
1690: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
16a0: 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 7d 0d 0a  result;..    }..
16b0: 7d 0d 0a 0d 0a 2f 2a 2a 0d 0a 20 2a 20 40 70 72  }..../**.. * @pr
16c0: 69 76 61 74 65 0d 0a 20 2a 2f 0d 0a 4a 73 55 6e  ivate.. */..JsUn
16d0: 69 74 2e 5f 64 69 73 70 6c 61 79 53 74 72 69 6e  it._displayStrin
16e0: 67 46 6f 72 56 61 6c 75 65 20 3d 20 66 75 6e 63  gForValue = func
16f0: 74 69 6f 6e 28 61 56 61 72 29 20 7b 0d 0a 20 20  tion(aVar) {..  
1700: 20 20 76 61 72 20 72 65 73 75 6c 74 20 3d 20 27    var result = '
1710: 3c 27 20 2b 20 61 56 61 72 20 2b 20 27 3e 27 3b  <' + aVar + '>';
1720: 0d 0a 20 20 20 20 69 66 20 28 21 28 61 56 61 72  ..    if (!(aVar
1730: 20 3d 3d 3d 20 6e 75 6c 6c 20 7c 7c 20 61 56 61   === null || aVa
1740: 72 20 3d 3d 3d 20 4a 53 55 4e 49 54 5f 55 4e 44  r === JSUNIT_UND
1750: 45 46 49 4e 45 44 5f 56 41 4c 55 45 29 29 20 7b  EFINED_VALUE)) {
1760: 0d 0a 20 20 20 20 20 20 20 20 72 65 73 75 6c 74  ..        result
1770: 20 2b 3d 20 27 20 28 27 20 2b 20 4a 73 55 6e 69   += ' (' + JsUni
1780: 74 2e 5f 74 72 75 65 54 79 70 65 4f 66 28 61 56  t._trueTypeOf(aV
1790: 61 72 29 20 2b 20 27 29 27 3b 0d 0a 20 20 20 20  ar) + ')';..    
17a0: 7d 0d 0a 20 20 20 20 72 65 74 75 72 6e 20 72 65  }..    return re
17b0: 73 75 6c 74 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a 0d  sult;..}..../**.
17c0: 0a 20 2a 20 40 70 72 69 76 61 74 65 0d 0a 20 2a  . * @private.. *
17d0: 2f 0d 0a 4a 73 55 6e 69 74 2e 5f 61 72 67 75 6d  /..JsUnit._argum
17e0: 65 6e 74 73 49 6e 63 6c 75 64 65 43 6f 6d 6d 65  entsIncludeComme
17f0: 6e 74 73 20 3d 20 66 75 6e 63 74 69 6f 6e 28 65  nts = function(e
1800: 78 70 65 63 74 65 64 4e 75 6d 62 65 72 4f 66 4e  xpectedNumberOfN
1810: 6f 6e 43 6f 6d 6d 65 6e 74 41 72 67 73 2c 20 61  onCommentArgs, a
1820: 72 67 73 29 20 7b 0d 0a 20 20 20 20 72 65 74 75  rgs) {..    retu
1830: 72 6e 20 61 72 67 73 2e 6c 65 6e 67 74 68 20 3d  rn args.length =
1840: 3d 20 65 78 70 65 63 74 65 64 4e 75 6d 62 65 72  = expectedNumber
1850: 4f 66 4e 6f 6e 43 6f 6d 6d 65 6e 74 41 72 67 73  OfNonCommentArgs
1860: 20 2b 20 31 3b 0d 0a 7d 0d 0a 2f 2a 2a 0d 0a 20   + 1;..}../**.. 
1870: 2a 20 40 70 72 69 76 61 74 65 0d 0a 20 2a 2f 0d  * @private.. */.
1880: 0a 4a 73 55 6e 69 74 2e 5f 63 6f 6d 6d 65 6e 74  .JsUnit._comment
1890: 41 72 67 20 3d 20 66 75 6e 63 74 69 6f 6e 28 65  Arg = function(e
18a0: 78 70 65 63 74 65 64 4e 75 6d 62 65 72 4f 66 4e  xpectedNumberOfN
18b0: 6f 6e 43 6f 6d 6d 65 6e 74 41 72 67 73 2c 20 61  onCommentArgs, a
18c0: 72 67 73 29 20 7b 0d 0a 20 20 20 20 69 66 20 28  rgs) {..    if (
18d0: 4a 73 55 6e 69 74 2e 5f 61 72 67 75 6d 65 6e 74  JsUnit._argument
18e0: 73 49 6e 63 6c 75 64 65 43 6f 6d 6d 65 6e 74 73  sIncludeComments
18f0: 28 65 78 70 65 63 74 65 64 4e 75 6d 62 65 72 4f  (expectedNumberO
1900: 66 4e 6f 6e 43 6f 6d 6d 65 6e 74 41 72 67 73 2c  fNonCommentArgs,
1910: 20 61 72 67 73 29 29 0d 0a 20 20 20 20 20 20 20   args))..       
1920: 20 72 65 74 75 72 6e 20 61 72 67 73 5b 30 5d 3b   return args[0];
1930: 0d 0a 0d 0a 20 20 20 20 72 65 74 75 72 6e 20 6e  ....    return n
1940: 75 6c 6c 3b 0d 0a 7d 0d 0a 2f 2a 2a 0d 0a 20 2a  ull;..}../**.. *
1950: 20 40 70 72 69 76 61 74 65 0d 0a 20 2a 2f 0d 0a   @private.. */..
1960: 4a 73 55 6e 69 74 2e 5f 6e 6f 6e 43 6f 6d 6d 65  JsUnit._nonComme
1970: 6e 74 41 72 67 20 3d 20 66 75 6e 63 74 69 6f 6e  ntArg = function
1980: 28 64 65 73 69 72 65 64 4e 6f 6e 43 6f 6d 6d 65  (desiredNonComme
1990: 6e 74 41 72 67 49 6e 64 65 78 2c 20 65 78 70 65  ntArgIndex, expe
19a0: 63 74 65 64 4e 75 6d 62 65 72 4f 66 4e 6f 6e 43  ctedNumberOfNonC
19b0: 6f 6d 6d 65 6e 74 41 72 67 73 2c 20 61 72 67 73  ommentArgs, args
19c0: 29 20 7b 0d 0a 20 20 20 20 72 65 74 75 72 6e 20  ) {..    return 
19d0: 4a 73 55 6e 69 74 2e 5f 61 72 67 75 6d 65 6e 74  JsUnit._argument
19e0: 73 49 6e 63 6c 75 64 65 43 6f 6d 6d 65 6e 74 73  sIncludeComments
19f0: 28 65 78 70 65 63 74 65 64 4e 75 6d 62 65 72 4f  (expectedNumberO
1a00: 66 4e 6f 6e 43 6f 6d 6d 65 6e 74 41 72 67 73 2c  fNonCommentArgs,
1a10: 20 61 72 67 73 29 20 3f 0d 0a 20 20 20 20 20 20   args) ?..      
1a20: 20 20 20 20 20 61 72 67 73 5b 64 65 73 69 72 65       args[desire
1a30: 64 4e 6f 6e 43 6f 6d 6d 65 6e 74 41 72 67 49 6e  dNonCommentArgIn
1a40: 64 65 78 5d 20 3a 0d 0a 20 20 20 20 20 20 20 20  dex] :..        
1a50: 20 20 20 61 72 67 73 5b 64 65 73 69 72 65 64 4e     args[desiredN
1a60: 6f 6e 43 6f 6d 6d 65 6e 74 41 72 67 49 6e 64 65  onCommentArgInde
1a70: 78 20 2d 20 31 5d 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a  x - 1];..}..../*
1a80: 2a 0d 0a 20 2a 20 40 70 72 69 76 61 74 65 0d 0a  *.. * @private..
1a90: 20 2a 2f 0d 0a 4a 73 55 6e 69 74 2e 5f 76 61 6c   */..JsUnit._val
1aa0: 69 64 61 74 65 41 72 67 75 6d 65 6e 74 73 20 3d  idateArguments =
1ab0: 20 66 75 6e 63 74 69 6f 6e 28 65 78 70 65 63 74   function(expect
1ac0: 65 64 4e 75 6d 62 65 72 4f 66 4e 6f 6e 43 6f 6d  edNumberOfNonCom
1ad0: 6d 65 6e 74 41 72 67 73 2c 20 61 72 67 73 29 20  mentArgs, args) 
1ae0: 7b 0d 0a 20 20 20 20 69 66 20 28 21 28 20 61 72  {..    if (!( ar
1af0: 67 73 2e 6c 65 6e 67 74 68 20 3d 3d 20 65 78 70  gs.length == exp
1b00: 65 63 74 65 64 4e 75 6d 62 65 72 4f 66 4e 6f 6e  ectedNumberOfNon
1b10: 43 6f 6d 6d 65 6e 74 41 72 67 73 20 7c 7c 0d 0a  CommentArgs ||..
1b20: 20 20 20 20 20 20 20 20 20 20 20 28 61 72 67 73             (args
1b30: 2e 6c 65 6e 67 74 68 20 3d 3d 20 65 78 70 65 63  .length == expec
1b40: 74 65 64 4e 75 6d 62 65 72 4f 66 4e 6f 6e 43 6f  tedNumberOfNonCo
1b50: 6d 6d 65 6e 74 41 72 67 73 20 2b 20 31 20 26 26  mmentArgs + 1 &&
1b60: 20 28 74 79 70 65 6f 66 28 61 72 67 73 5b 30 5d   (typeof(args[0]
1b70: 29 20 3d 3d 20 27 73 74 72 69 6e 67 27 29 20 7c  ) == 'string') |
1b80: 7c 20 61 72 67 73 5b 30 5d 20 3d 3d 20 6e 75 6c  | args[0] == nul
1b90: 6c 29 29 29 0d 0a 20 20 20 20 20 20 20 20 74 68  l)))..        th
1ba0: 72 6f 77 20 6e 65 77 20 4a 73 55 6e 69 74 2e 41  row new JsUnit.A
1bb0: 73 73 65 72 74 69 6f 6e 41 72 67 75 6d 65 6e 74  ssertionArgument
1bc0: 45 72 72 6f 72 28 27 49 6e 63 6f 72 72 65 63 74  Error('Incorrect
1bd0: 20 61 72 67 75 6d 65 6e 74 73 20 70 61 73 73 65   arguments passe
1be0: 64 20 74 6f 20 61 73 73 65 72 74 20 66 75 6e 63  d to assert func
1bf0: 74 69 6f 6e 27 29 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a  tion');..}..../*
1c00: 2a 0d 0a 20 2a 20 40 70 72 69 76 61 74 65 0d 0a  *.. * @private..
1c10: 20 2a 2f 0d 0a 4a 73 55 6e 69 74 2e 5f 63 68 65   */..JsUnit._che
1c20: 63 6b 45 71 75 61 6c 73 20 3d 20 66 75 6e 63 74  ckEquals = funct
1c30: 69 6f 6e 28 76 61 72 31 2c 20 76 61 72 32 29 20  ion(var1, var2) 
1c40: 7b 0d 0a 20 20 20 20 72 65 74 75 72 6e 20 76 61  {..    return va
1c50: 72 31 20 3d 3d 3d 20 76 61 72 32 3b 0d 0a 7d 0d  r1 === var2;..}.
1c60: 0a 0d 0a 2f 2a 2a 0d 0a 20 2a 20 40 70 72 69 76  .../**.. * @priv
1c70: 61 74 65 0d 0a 20 2a 2f 0d 0a 4a 73 55 6e 69 74  ate.. */..JsUnit
1c80: 2e 5f 63 68 65 63 6b 4e 6f 74 55 6e 64 65 66 69  ._checkNotUndefi
1c90: 6e 65 64 20 3d 20 66 75 6e 63 74 69 6f 6e 28 61  ned = function(a
1ca0: 56 61 72 29 20 7b 0d 0a 20 20 20 20 72 65 74 75  Var) {..    retu
1cb0: 72 6e 20 61 56 61 72 20 21 3d 3d 20 4a 53 55 4e  rn aVar !== JSUN
1cc0: 49 54 5f 55 4e 44 45 46 49 4e 45 44 5f 56 41 4c  IT_UNDEFINED_VAL
1cd0: 55 45 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a 0d 0a 20  UE;..}..../**.. 
1ce0: 2a 20 40 70 72 69 76 61 74 65 0d 0a 20 2a 2f 0d  * @private.. */.
1cf0: 0a 4a 73 55 6e 69 74 2e 5f 63 68 65 63 6b 4e 6f  .JsUnit._checkNo
1d00: 74 4e 75 6c 6c 20 3d 20 66 75 6e 63 74 69 6f 6e  tNull = function
1d10: 28 61 56 61 72 29 20 7b 0d 0a 20 20 20 20 72 65  (aVar) {..    re
1d20: 74 75 72 6e 20 61 56 61 72 20 21 3d 3d 20 6e 75  turn aVar !== nu
1d30: 6c 6c 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a 0d 0a 20  ll;..}..../**.. 
1d40: 2a 20 41 6c 6c 20 61 73 73 65 72 74 69 6f 6e 73  * All assertions
1d50: 20 75 6c 74 69 6d 61 74 65 6c 79 20 67 6f 20 74   ultimately go t
1d60: 68 72 6f 75 67 68 20 74 68 69 73 20 6d 65 74 68  hrough this meth
1d70: 6f 64 2e 0d 0a 20 2a 20 40 70 72 69 76 61 74 65  od... * @private
1d80: 0d 0a 20 2a 2f 0d 0a 4a 73 55 6e 69 74 2e 5f 61  .. */..JsUnit._a
1d90: 73 73 65 72 74 20 3d 20 66 75 6e 63 74 69 6f 6e  ssert = function
1da0: 28 63 6f 6d 6d 65 6e 74 2c 20 62 6f 6f 6c 65 61  (comment, boolea
1db0: 6e 56 61 6c 75 65 2c 20 66 61 69 6c 75 72 65 4d  nValue, failureM
1dc0: 65 73 73 61 67 65 29 20 7b 0d 0a 20 20 20 20 69  essage) {..    i
1dd0: 66 20 28 21 62 6f 6f 6c 65 61 6e 56 61 6c 75 65  f (!booleanValue
1de0: 29 0d 0a 20 20 20 20 20 20 20 20 53 6e 65 67 6f  )..        Snego
1df0: 70 61 74 54 68 72 6f 77 45 78 63 65 70 74 69 6f  patThrowExceptio
1e00: 6e 28 6e 65 77 20 4a 73 55 6e 69 74 2e 46 61 69  n(new JsUnit.Fai
1e10: 6c 75 72 65 28 63 6f 6d 6d 65 6e 74 2c 20 66 61  lure(comment, fa
1e20: 69 6c 75 72 65 4d 65 73 73 61 67 65 29 29 3b 0d  ilureMessage));.
1e30: 0a 20 20 20 20 20 20 20 20 2f 2f 74 68 72 6f 77  .        //throw
1e40: 20 6e 65 77 20 4a 73 55 6e 69 74 2e 46 61 69 6c   new JsUnit.Fail
1e50: 75 72 65 28 63 6f 6d 6d 65 6e 74 2c 20 66 61 69  ure(comment, fai
1e60: 6c 75 72 65 4d 65 73 73 61 67 65 29 3b 0d 0a 7d  lureMessage);..}
1e70: 0d 0a 0d 0a 2f 2a 2a 0d 0a 20 2a 20 43 68 65 63  ..../**.. * Chec
1e80: 6b 73 20 74 68 61 74 20 74 68 65 20 67 69 76 65  ks that the give
1e90: 6e 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 20  n boolean value 
1ea0: 69 73 20 74 72 75 65 2e 0d 0a 20 2a 20 40 70 61  is true... * @pa
1eb0: 72 61 6d 20 63 6f 6d 6d 65 6e 74 20 6f 70 74 69  ram comment opti
1ec0: 6f 6e 61 6c 2c 20 64 69 73 70 6c 61 79 65 64 20  onal, displayed 
1ed0: 69 6e 20 74 68 65 20 63 61 73 65 20 6f 66 20 66  in the case of f
1ee0: 61 69 6c 75 72 65 0d 0a 20 2a 20 40 76 61 6c 75  ailure.. * @valu
1ef0: 65 20 76 61 6c 75 65 20 74 68 61 74 20 69 73 20  e value that is 
1f00: 65 78 70 65 63 74 65 64 20 74 6f 20 62 65 20 74  expected to be t
1f10: 72 75 65 0d 0a 20 2a 20 40 74 68 72 6f 77 73 20  rue.. * @throws 
1f20: 4a 73 55 6e 69 74 2e 46 61 69 6c 75 72 65 20 69  JsUnit.Failure i
1f30: 66 20 74 68 65 20 67 69 76 65 6e 20 76 61 6c 75  f the given valu
1f40: 65 20 69 73 20 6e 6f 74 20 74 72 75 65 0d 0a 20  e is not true.. 
1f50: 2a 20 40 74 68 72 6f 77 73 20 4a 73 55 6e 69 74  * @throws JsUnit
1f60: 49 6e 76 61 6c 69 64 41 73 73 65 72 74 69 6f 6e  InvalidAssertion
1f70: 41 72 67 75 6d 65 6e 74 20 69 66 20 74 68 65 20  Argument if the 
1f80: 67 69 76 65 6e 20 76 61 6c 75 65 20 69 73 20 6e  given value is n
1f90: 6f 74 20 61 20 62 6f 6f 6c 65 61 6e 20 6f 72 20  ot a boolean or 
1fa0: 69 66 20 61 6e 20 69 6e 63 6f 72 72 65 63 74 20  if an incorrect 
1fb0: 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65  number of argume
1fc0: 6e 74 73 20 69 73 20 70 61 73 73 65 64 0d 0a 20  nts is passed.. 
1fd0: 2a 2f 0d 0a 66 75 6e 63 74 69 6f 6e 20 61 73 73  */..function ass
1fe0: 65 72 74 28 29 20 7b 0d 0a 20 20 20 20 4a 73 55  ert() {..    JsU
1ff0: 6e 69 74 2e 5f 76 61 6c 69 64 61 74 65 41 72 67  nit._validateArg
2000: 75 6d 65 6e 74 73 28 31 2c 20 61 72 67 75 6d 65  uments(1, argume
2010: 6e 74 73 29 3b 0d 0a 20 20 20 20 76 61 72 20 62  nts);..    var b
2020: 6f 6f 6c 65 61 6e 56 61 6c 75 65 20 3d 20 4a 73  ooleanValue = Js
2030: 55 6e 69 74 2e 5f 6e 6f 6e 43 6f 6d 6d 65 6e 74  Unit._nonComment
2040: 41 72 67 28 31 2c 20 31 2c 20 61 72 67 75 6d 65  Arg(1, 1, argume
2050: 6e 74 73 29 3b 0d 0a 0d 0a 20 20 20 20 69 66 20  nts);....    if 
2060: 28 74 79 70 65 6f 66 28 62 6f 6f 6c 65 61 6e 56  (typeof(booleanV
2070: 61 6c 75 65 29 20 21 3d 20 27 62 6f 6f 6c 65 61  alue) != 'boolea
2080: 6e 27 29 0d 0a 20 20 20 20 20 20 20 20 53 6e 65  n')..        Sne
2090: 67 6f 70 61 74 54 68 72 6f 77 45 78 63 65 70 74  gopatThrowExcept
20a0: 69 6f 6e 28 6e 65 77 20 4a 73 55 6e 69 74 2e 41  ion(new JsUnit.A
20b0: 73 73 65 72 74 69 6f 6e 41 72 67 75 6d 65 6e 74  ssertionArgument
20c0: 45 72 72 6f 72 28 27 42 61 64 20 61 72 67 75 6d  Error('Bad argum
20d0: 65 6e 74 20 74 6f 20 61 73 73 65 72 74 28 62 6f  ent to assert(bo
20e0: 6f 6c 65 61 6e 29 27 29 29 3b 0d 0a 20 20 20 20  olean)'));..    
20f0: 20 20 20 20 2f 2f 74 68 72 6f 77 20 6e 65 77 20      //throw new 
2100: 4a 73 55 6e 69 74 2e 41 73 73 65 72 74 69 6f 6e  JsUnit.Assertion
2110: 41 72 67 75 6d 65 6e 74 45 72 72 6f 72 28 27 42  ArgumentError('B
2120: 61 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 61  ad argument to a
2130: 73 73 65 72 74 28 62 6f 6f 6c 65 61 6e 29 27 29  ssert(boolean)')
2140: 3b 0d 0a 0d 0a 20 20 20 20 4a 73 55 6e 69 74 2e  ;....    JsUnit.
2150: 5f 61 73 73 65 72 74 28 4a 73 55 6e 69 74 2e 5f  _assert(JsUnit._
2160: 63 6f 6d 6d 65 6e 74 41 72 67 28 31 2c 20 61 72  commentArg(1, ar
2170: 67 75 6d 65 6e 74 73 29 2c 20 62 6f 6f 6c 65 61  guments), boolea
2180: 6e 56 61 6c 75 65 20 3d 3d 3d 20 74 72 75 65 2c  nValue === true,
2190: 20 27 43 61 6c 6c 20 74 6f 20 61 73 73 65 72 74   'Call to assert
21a0: 28 62 6f 6f 6c 65 61 6e 29 20 77 69 74 68 20 66  (boolean) with f
21b0: 61 6c 73 65 27 29 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a  alse');..}..../*
21c0: 2a 0d 0a 20 2a 20 53 79 6e 6f 6e 79 6d 20 66 6f  *.. * Synonym fo
21d0: 72 20 61 73 73 65 72 74 54 72 75 65 0d 0a 20 2a  r assertTrue.. *
21e0: 20 40 73 65 65 20 23 61 73 73 65 72 74 0d 0a 20   @see #assert.. 
21f0: 2a 2f 0d 0a 66 75 6e 63 74 69 6f 6e 20 61 73 73  */..function ass
2200: 65 72 74 54 72 75 65 28 29 20 7b 0d 0a 20 20 20  ertTrue() {..   
2210: 20 4a 73 55 6e 69 74 2e 5f 76 61 6c 69 64 61 74   JsUnit._validat
2220: 65 41 72 67 75 6d 65 6e 74 73 28 31 2c 20 61 72  eArguments(1, ar
2230: 67 75 6d 65 6e 74 73 29 3b 0d 0a 20 20 20 20 61  guments);..    a
2240: 73 73 65 72 74 28 4a 73 55 6e 69 74 2e 5f 63 6f  ssert(JsUnit._co
2250: 6d 6d 65 6e 74 41 72 67 28 31 2c 20 61 72 67 75  mmentArg(1, argu
2260: 6d 65 6e 74 73 29 2c 20 4a 73 55 6e 69 74 2e 5f  ments), JsUnit._
2270: 6e 6f 6e 43 6f 6d 6d 65 6e 74 41 72 67 28 31 2c  nonCommentArg(1,
2280: 20 31 2c 20 61 72 67 75 6d 65 6e 74 73 29 29 3b   1, arguments));
2290: 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a 0d 0a 20 2a 20 43  ..}..../**.. * C
22a0: 68 65 63 6b 73 20 74 68 61 74 20 61 20 62 6f 6f  hecks that a boo
22b0: 6c 65 61 6e 20 76 61 6c 75 65 20 69 73 20 66 61  lean value is fa
22c0: 6c 73 65 2e 0d 0a 20 2a 20 40 70 61 72 61 6d 20  lse... * @param 
22d0: 63 6f 6d 6d 65 6e 74 20 6f 70 74 69 6f 6e 61 6c  comment optional
22e0: 2c 20 64 69 73 70 6c 61 79 65 64 20 69 6e 20 74  , displayed in t
22f0: 68 65 20 63 61 73 65 20 6f 66 20 66 61 69 6c 75  he case of failu
2300: 72 65 0d 0a 20 2a 20 40 76 61 6c 75 65 20 76 61  re.. * @value va
2310: 6c 75 65 20 74 68 61 74 20 69 73 20 65 78 70 65  lue that is expe
2320: 63 74 65 64 20 74 6f 20 62 65 20 66 61 6c 73 65  cted to be false
2330: 0d 0a 20 2a 20 40 74 68 72 6f 77 73 20 4a 73 55  .. * @throws JsU
2340: 6e 69 74 2e 46 61 69 6c 75 72 65 20 69 66 20 76  nit.Failure if v
2350: 61 6c 75 65 20 69 73 20 6e 6f 74 20 66 61 6c 73  alue is not fals
2360: 65 0d 0a 20 2a 20 40 74 68 72 6f 77 73 20 4a 73  e.. * @throws Js
2370: 55 6e 69 74 49 6e 76 61 6c 69 64 41 73 73 65 72  UnitInvalidAsser
2380: 74 69 6f 6e 41 72 67 75 6d 65 6e 74 20 69 66 20  tionArgument if 
2390: 74 68 65 20 67 69 76 65 6e 20 76 61 6c 75 65 20  the given value 
23a0: 69 73 20 6e 6f 74 20 61 20 62 6f 6f 6c 65 61 6e  is not a boolean
23b0: 20 6f 72 20 69 66 20 61 6e 20 69 6e 63 6f 72 72   or if an incorr
23c0: 65 63 74 20 6e 75 6d 62 65 72 20 6f 66 20 61 72  ect number of ar
23d0: 67 75 6d 65 6e 74 73 20 69 73 20 70 61 73 73 65  guments is passe
23e0: 64 0d 0a 20 2a 2f 0d 0a 66 75 6e 63 74 69 6f 6e  d.. */..function
23f0: 20 61 73 73 65 72 74 46 61 6c 73 65 28 29 20 7b   assertFalse() {
2400: 0d 0a 20 20 20 20 4a 73 55 6e 69 74 2e 5f 76 61  ..    JsUnit._va
2410: 6c 69 64 61 74 65 41 72 67 75 6d 65 6e 74 73 28  lidateArguments(
2420: 31 2c 20 61 72 67 75 6d 65 6e 74 73 29 3b 0d 0a  1, arguments);..
2430: 20 20 20 20 76 61 72 20 62 6f 6f 6c 65 61 6e 56      var booleanV
2440: 61 6c 75 65 20 3d 20 4a 73 55 6e 69 74 2e 5f 6e  alue = JsUnit._n
2450: 6f 6e 43 6f 6d 6d 65 6e 74 41 72 67 28 31 2c 20  onCommentArg(1, 
2460: 31 2c 20 61 72 67 75 6d 65 6e 74 73 29 3b 0d 0a  1, arguments);..
2470: 0d 0a 20 20 20 20 69 66 20 28 74 79 70 65 6f 66  ..    if (typeof
2480: 28 62 6f 6f 6c 65 61 6e 56 61 6c 75 65 29 20 21  (booleanValue) !
2490: 3d 20 27 62 6f 6f 6c 65 61 6e 27 29 0d 0a 20 20  = 'boolean')..  
24a0: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
24b0: 4a 73 55 6e 69 74 2e 41 73 73 65 72 74 69 6f 6e  JsUnit.Assertion
24c0: 41 72 67 75 6d 65 6e 74 45 72 72 6f 72 28 27 42  ArgumentError('B
24d0: 61 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 61  ad argument to a
24e0: 73 73 65 72 74 46 61 6c 73 65 28 62 6f 6f 6c 65  ssertFalse(boole
24f0: 61 6e 29 27 29 3b 0d 0a 0d 0a 20 20 20 20 4a 73  an)');....    Js
2500: 55 6e 69 74 2e 5f 61 73 73 65 72 74 28 4a 73 55  Unit._assert(JsU
2510: 6e 69 74 2e 5f 63 6f 6d 6d 65 6e 74 41 72 67 28  nit._commentArg(
2520: 31 2c 20 61 72 67 75 6d 65 6e 74 73 29 2c 20 62  1, arguments), b
2530: 6f 6f 6c 65 61 6e 56 61 6c 75 65 20 3d 3d 3d 20  ooleanValue === 
2540: 66 61 6c 73 65 2c 20 27 43 61 6c 6c 20 74 6f 20  false, 'Call to 
2550: 61 73 73 65 72 74 46 61 6c 73 65 28 62 6f 6f 6c  assertFalse(bool
2560: 65 61 6e 29 20 77 69 74 68 20 74 72 75 65 27 29  ean) with true')
2570: 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a 0d 0a 20 2a 20  ;..}..../**.. * 
2580: 43 68 65 63 6b 73 20 74 68 61 74 20 74 77 6f 20  Checks that two 
2590: 76 61 6c 75 65 73 20 61 72 65 20 65 71 75 61 6c  values are equal
25a0: 20 28 75 73 69 6e 67 20 3d 3d 3d 29 0d 0a 20 2a   (using ===).. *
25b0: 20 40 70 61 72 61 6d 20 63 6f 6d 6d 65 6e 74 20   @param comment 
25c0: 6f 70 74 69 6f 6e 61 6c 2c 20 64 69 73 70 6c 61  optional, displa
25d0: 79 65 64 20 69 6e 20 74 68 65 20 63 61 73 65 20  yed in the case 
25e0: 6f 66 20 66 61 69 6c 75 72 65 0d 0a 20 2a 20 40  of failure.. * @
25f0: 70 61 72 61 6d 20 65 78 70 65 63 74 65 64 20 74  param expected t
2600: 68 65 20 65 78 70 65 63 74 65 64 20 76 61 6c 75  he expected valu
2610: 65 0d 0a 20 2a 20 40 70 61 72 61 6d 20 61 63 74  e.. * @param act
2620: 75 61 6c 20 74 68 65 20 61 63 74 75 61 6c 20 76  ual the actual v
2630: 61 6c 75 65 0d 0a 20 2a 20 40 74 68 72 6f 77 73  alue.. * @throws
2640: 20 4a 73 55 6e 69 74 2e 46 61 69 6c 75 72 65 20   JsUnit.Failure 
2650: 69 66 20 74 68 65 20 76 61 6c 75 65 73 20 61 72  if the values ar
2660: 65 20 6e 6f 74 20 65 71 75 61 6c 0d 0a 20 2a 20  e not equal.. * 
2670: 40 74 68 72 6f 77 73 20 4a 73 55 6e 69 74 49 6e  @throws JsUnitIn
2680: 76 61 6c 69 64 41 73 73 65 72 74 69 6f 6e 41 72  validAssertionAr
2690: 67 75 6d 65 6e 74 20 69 66 20 61 6e 20 69 6e 63  gument if an inc
26a0: 6f 72 72 65 63 74 20 6e 75 6d 62 65 72 20 6f 66  orrect number of
26b0: 20 61 72 67 75 6d 65 6e 74 73 20 69 73 20 70 61   arguments is pa
26c0: 73 73 65 64 0d 0a 20 2a 2f 0d 0a 66 75 6e 63 74  ssed.. */..funct
26d0: 69 6f 6e 20 61 73 73 65 72 74 45 71 75 61 6c 73  ion assertEquals
26e0: 28 29 20 7b 0d 0a 20 20 20 20 4a 73 55 6e 69 74  () {..    JsUnit
26f0: 2e 5f 76 61 6c 69 64 61 74 65 41 72 67 75 6d 65  ._validateArgume
2700: 6e 74 73 28 32 2c 20 61 72 67 75 6d 65 6e 74 73  nts(2, arguments
2710: 29 3b 0d 0a 20 20 20 20 76 61 72 20 76 61 72 31  );..    var var1
2720: 20 3d 20 4a 73 55 6e 69 74 2e 5f 6e 6f 6e 43 6f   = JsUnit._nonCo
2730: 6d 6d 65 6e 74 41 72 67 28 31 2c 20 32 2c 20 61  mmentArg(1, 2, a
2740: 72 67 75 6d 65 6e 74 73 29 3b 0d 0a 20 20 20 20  rguments);..    
2750: 76 61 72 20 76 61 72 32 20 3d 20 4a 73 55 6e 69  var var2 = JsUni
2760: 74 2e 5f 6e 6f 6e 43 6f 6d 6d 65 6e 74 41 72 67  t._nonCommentArg
2770: 28 32 2c 20 32 2c 20 61 72 67 75 6d 65 6e 74 73  (2, 2, arguments
2780: 29 3b 0d 0a 20 20 20 20 4a 73 55 6e 69 74 2e 5f  );..    JsUnit._
2790: 61 73 73 65 72 74 28 4a 73 55 6e 69 74 2e 5f 63  assert(JsUnit._c
27a0: 6f 6d 6d 65 6e 74 41 72 67 28 32 2c 20 61 72 67  ommentArg(2, arg
27b0: 75 6d 65 6e 74 73 29 2c 20 4a 73 55 6e 69 74 2e  uments), JsUnit.
27c0: 5f 63 68 65 63 6b 45 71 75 61 6c 73 28 76 61 72  _checkEquals(var
27d0: 31 2c 20 76 61 72 32 29 2c 20 27 45 78 70 65 63  1, var2), 'Expec
27e0: 74 65 64 20 27 20 2b 20 4a 73 55 6e 69 74 2e 5f  ted ' + JsUnit._
27f0: 64 69 73 70 6c 61 79 53 74 72 69 6e 67 46 6f 72  displayStringFor
2800: 56 61 6c 75 65 28 76 61 72 31 29 20 2b 20 27 20  Value(var1) + ' 
2810: 62 75 74 20 77 61 73 20 27 20 2b 20 4a 73 55 6e  but was ' + JsUn
2820: 69 74 2e 5f 64 69 73 70 6c 61 79 53 74 72 69 6e  it._displayStrin
2830: 67 46 6f 72 56 61 6c 75 65 28 76 61 72 32 29 29  gForValue(var2))
2840: 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a 0d 0a 20 2a 20  ;..}..../**.. * 
2850: 43 68 65 63 6b 73 20 74 68 61 74 20 74 77 6f 20  Checks that two 
2860: 76 61 6c 75 65 73 20 61 72 65 20 6e 6f 74 20 65  values are not e
2870: 71 75 61 6c 20 28 75 73 69 6e 67 20 21 3d 3d 29  qual (using !==)
2880: 0d 0a 20 2a 20 40 70 61 72 61 6d 20 63 6f 6d 6d  .. * @param comm
2890: 65 6e 74 20 6f 70 74 69 6f 6e 61 6c 2c 20 64 69  ent optional, di
28a0: 73 70 6c 61 79 65 64 20 69 6e 20 74 68 65 20 63  splayed in the c
28b0: 61 73 65 20 6f 66 20 66 61 69 6c 75 72 65 0d 0a  ase of failure..
28c0: 20 2a 20 40 70 61 72 61 6d 20 76 61 6c 75 65 31   * @param value1
28d0: 20 61 20 76 61 6c 75 65 0d 0a 20 2a 20 40 70 61   a value.. * @pa
28e0: 72 61 6d 20 76 61 6c 75 65 32 20 61 6e 6f 74 68  ram value2 anoth
28f0: 65 72 20 76 61 6c 75 65 0d 0a 20 2a 20 40 74 68  er value.. * @th
2900: 72 6f 77 73 20 4a 73 55 6e 69 74 2e 46 61 69 6c  rows JsUnit.Fail
2910: 75 72 65 20 69 66 20 74 68 65 20 76 61 6c 75 65  ure if the value
2920: 73 20 61 72 65 20 65 71 75 61 6c 0d 0a 20 2a 20  s are equal.. * 
2930: 40 74 68 72 6f 77 73 20 4a 73 55 6e 69 74 49 6e  @throws JsUnitIn
2940: 76 61 6c 69 64 41 73 73 65 72 74 69 6f 6e 41 72  validAssertionAr
2950: 67 75 6d 65 6e 74 20 69 66 20 61 6e 20 69 6e 63  gument if an inc
2960: 6f 72 72 65 63 74 20 6e 75 6d 62 65 72 20 6f 66  orrect number of
2970: 20 61 72 67 75 6d 65 6e 74 73 20 69 73 20 70 61   arguments is pa
2980: 73 73 65 64 0d 0a 20 2a 2f 0d 0a 66 75 6e 63 74  ssed.. */..funct
2990: 69 6f 6e 20 61 73 73 65 72 74 4e 6f 74 45 71 75  ion assertNotEqu
29a0: 61 6c 73 28 29 20 7b 0d 0a 20 20 20 20 4a 73 55  als() {..    JsU
29b0: 6e 69 74 2e 5f 76 61 6c 69 64 61 74 65 41 72 67  nit._validateArg
29c0: 75 6d 65 6e 74 73 28 32 2c 20 61 72 67 75 6d 65  uments(2, argume
29d0: 6e 74 73 29 3b 0d 0a 20 20 20 20 76 61 72 20 76  nts);..    var v
29e0: 61 72 31 20 3d 20 4a 73 55 6e 69 74 2e 5f 6e 6f  ar1 = JsUnit._no
29f0: 6e 43 6f 6d 6d 65 6e 74 41 72 67 28 31 2c 20 32  nCommentArg(1, 2
2a00: 2c 20 61 72 67 75 6d 65 6e 74 73 29 3b 0d 0a 20  , arguments);.. 
2a10: 20 20 20 76 61 72 20 76 61 72 32 20 3d 20 4a 73     var var2 = Js
2a20: 55 6e 69 74 2e 5f 6e 6f 6e 43 6f 6d 6d 65 6e 74  Unit._nonComment
2a30: 41 72 67 28 32 2c 20 32 2c 20 61 72 67 75 6d 65  Arg(2, 2, argume
2a40: 6e 74 73 29 3b 0d 0a 20 20 20 20 4a 73 55 6e 69  nts);..    JsUni
2a50: 74 2e 5f 61 73 73 65 72 74 28 4a 73 55 6e 69 74  t._assert(JsUnit
2a60: 2e 5f 63 6f 6d 6d 65 6e 74 41 72 67 28 32 2c 20  ._commentArg(2, 
2a70: 61 72 67 75 6d 65 6e 74 73 29 2c 20 76 61 72 31  arguments), var1
2a80: 20 21 3d 3d 20 76 61 72 32 2c 20 27 45 78 70 65   !== var2, 'Expe
2a90: 63 74 65 64 20 6e 6f 74 20 74 6f 20 62 65 20 27  cted not to be '
2aa0: 20 2b 20 4a 73 55 6e 69 74 2e 5f 64 69 73 70 6c   + JsUnit._displ
2ab0: 61 79 53 74 72 69 6e 67 46 6f 72 56 61 6c 75 65  ayStringForValue
2ac0: 28 76 61 72 32 29 29 3b 0d 0a 7d 0d 0a 0d 0a 2f  (var2));..}..../
2ad0: 2a 2a 0d 0a 20 2a 20 43 68 65 63 6b 73 20 74 68  **.. * Checks th
2ae0: 61 74 20 61 20 76 61 6c 75 65 20 69 73 20 6e 75  at a value is nu
2af0: 6c 6c 0d 0a 20 2a 20 40 70 61 72 61 6d 20 63 6f  ll.. * @param co
2b00: 6d 6d 65 6e 74 20 6f 70 74 69 6f 6e 61 6c 2c 20  mment optional, 
2b10: 64 69 73 70 6c 61 79 65 64 20 69 6e 20 74 68 65  displayed in the
2b20: 20 63 61 73 65 20 6f 66 20 66 61 69 6c 75 72 65   case of failure
2b30: 0d 0a 20 2a 20 40 70 61 72 61 6d 20 76 61 6c 75  .. * @param valu
2b40: 65 20 74 68 65 20 76 61 6c 75 65 0d 0a 20 2a 20  e the value.. * 
2b50: 40 74 68 72 6f 77 73 20 4a 73 55 6e 69 74 2e 46  @throws JsUnit.F
2b60: 61 69 6c 75 72 65 20 69 66 20 74 68 65 20 76 61  ailure if the va
2b70: 6c 75 65 20 69 73 20 6e 6f 74 20 6e 75 6c 6c 0d  lue is not null.
2b80: 0a 20 2a 20 40 74 68 72 6f 77 73 20 4a 73 55 6e  . * @throws JsUn
2b90: 69 74 49 6e 76 61 6c 69 64 41 73 73 65 72 74 69  itInvalidAsserti
2ba0: 6f 6e 41 72 67 75 6d 65 6e 74 20 69 66 20 61 6e  onArgument if an
2bb0: 20 69 6e 63 6f 72 72 65 63 74 20 6e 75 6d 62 65   incorrect numbe
2bc0: 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 69  r of arguments i
2bd0: 73 20 70 61 73 73 65 64 0d 0a 20 2a 2f 0d 0a 66  s passed.. */..f
2be0: 75 6e 63 74 69 6f 6e 20 61 73 73 65 72 74 4e 75  unction assertNu
2bf0: 6c 6c 28 29 20 7b 0d 0a 20 20 20 20 4a 73 55 6e  ll() {..    JsUn
2c00: 69 74 2e 5f 76 61 6c 69 64 61 74 65 41 72 67 75  it._validateArgu
2c10: 6d 65 6e 74 73 28 31 2c 20 61 72 67 75 6d 65 6e  ments(1, argumen
2c20: 74 73 29 3b 0d 0a 20 20 20 20 76 61 72 20 61 56  ts);..    var aV
2c30: 61 72 20 3d 20 4a 73 55 6e 69 74 2e 5f 6e 6f 6e  ar = JsUnit._non
2c40: 43 6f 6d 6d 65 6e 74 41 72 67 28 31 2c 20 31 2c  CommentArg(1, 1,
2c50: 20 61 72 67 75 6d 65 6e 74 73 29 3b 0d 0a 20 20   arguments);..  
2c60: 20 20 4a 73 55 6e 69 74 2e 5f 61 73 73 65 72 74    JsUnit._assert
2c70: 28 4a 73 55 6e 69 74 2e 5f 63 6f 6d 6d 65 6e 74  (JsUnit._comment
2c80: 41 72 67 28 31 2c 20 61 72 67 75 6d 65 6e 74 73  Arg(1, arguments
2c90: 29 2c 20 61 56 61 72 20 3d 3d 3d 20 6e 75 6c 6c  ), aVar === null
2ca0: 2c 20 27 45 78 70 65 63 74 65 64 20 27 20 2b 20  , 'Expected ' + 
2cb0: 4a 73 55 6e 69 74 2e 5f 64 69 73 70 6c 61 79 53  JsUnit._displayS
2cc0: 74 72 69 6e 67 46 6f 72 56 61 6c 75 65 28 6e 75  tringForValue(nu
2cd0: 6c 6c 29 20 2b 20 27 20 62 75 74 20 77 61 73 20  ll) + ' but was 
2ce0: 27 20 2b 20 4a 73 55 6e 69 74 2e 5f 64 69 73 70  ' + JsUnit._disp
2cf0: 6c 61 79 53 74 72 69 6e 67 46 6f 72 56 61 6c 75  layStringForValu
2d00: 65 28 61 56 61 72 29 29 3b 0d 0a 7d 0d 0a 0d 0a  e(aVar));..}....
2d10: 2f 2a 2a 0d 0a 20 2a 20 43 68 65 63 6b 73 20 74  /**.. * Checks t
2d20: 68 61 74 20 61 20 76 61 6c 75 65 20 69 73 20 6e  hat a value is n
2d30: 6f 74 20 6e 75 6c 6c 0d 0a 20 2a 20 40 70 61 72  ot null.. * @par
2d40: 61 6d 20 63 6f 6d 6d 65 6e 74 20 6f 70 74 69 6f  am comment optio
2d50: 6e 61 6c 2c 20 64 69 73 70 6c 61 79 65 64 20 69  nal, displayed i
2d60: 6e 20 74 68 65 20 63 61 73 65 20 6f 66 20 66 61  n the case of fa
2d70: 69 6c 75 72 65 0d 0a 20 2a 20 40 70 61 72 61 6d  ilure.. * @param
2d80: 20 76 61 6c 75 65 20 74 68 65 20 76 61 6c 75 65   value the value
2d90: 0d 0a 20 2a 20 40 74 68 72 6f 77 73 20 4a 73 55  .. * @throws JsU
2da0: 6e 69 74 2e 46 61 69 6c 75 72 65 20 69 66 20 74  nit.Failure if t
2db0: 68 65 20 76 61 6c 75 65 20 69 73 20 6e 75 6c 6c  he value is null
2dc0: 0d 0a 20 2a 20 40 74 68 72 6f 77 73 20 4a 73 55  .. * @throws JsU
2dd0: 6e 69 74 49 6e 76 61 6c 69 64 41 73 73 65 72 74  nitInvalidAssert
2de0: 69 6f 6e 41 72 67 75 6d 65 6e 74 20 69 66 20 61  ionArgument if a
2df0: 6e 20 69 6e 63 6f 72 72 65 63 74 20 6e 75 6d 62  n incorrect numb
2e00: 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20  er of arguments 
2e10: 69 73 20 70 61 73 73 65 64 0d 0a 20 2a 2f 0d 0a  is passed.. */..
2e20: 66 75 6e 63 74 69 6f 6e 20 61 73 73 65 72 74 4e  function assertN
2e30: 6f 74 4e 75 6c 6c 28 29 20 7b 0d 0a 20 20 20 20  otNull() {..    
2e40: 4a 73 55 6e 69 74 2e 5f 76 61 6c 69 64 61 74 65  JsUnit._validate
2e50: 41 72 67 75 6d 65 6e 74 73 28 31 2c 20 61 72 67  Arguments(1, arg
2e60: 75 6d 65 6e 74 73 29 3b 0d 0a 20 20 20 20 76 61  uments);..    va
2e70: 72 20 61 56 61 72 20 3d 20 4a 73 55 6e 69 74 2e  r aVar = JsUnit.
2e80: 5f 6e 6f 6e 43 6f 6d 6d 65 6e 74 41 72 67 28 31  _nonCommentArg(1
2e90: 2c 20 31 2c 20 61 72 67 75 6d 65 6e 74 73 29 3b  , 1, arguments);
2ea0: 0d 0a 20 20 20 20 4a 73 55 6e 69 74 2e 5f 61 73  ..    JsUnit._as
2eb0: 73 65 72 74 28 4a 73 55 6e 69 74 2e 5f 63 6f 6d  sert(JsUnit._com
2ec0: 6d 65 6e 74 41 72 67 28 31 2c 20 61 72 67 75 6d  mentArg(1, argum
2ed0: 65 6e 74 73 29 2c 20 4a 73 55 6e 69 74 2e 5f 63  ents), JsUnit._c
2ee0: 68 65 63 6b 4e 6f 74 4e 75 6c 6c 28 61 56 61 72  heckNotNull(aVar
2ef0: 29 2c 20 27 45 78 70 65 63 74 65 64 20 6e 6f 74  ), 'Expected not
2f00: 20 74 6f 20 62 65 20 27 20 2b 20 4a 73 55 6e 69   to be ' + JsUni
2f10: 74 2e 5f 64 69 73 70 6c 61 79 53 74 72 69 6e 67  t._displayString
2f20: 46 6f 72 56 61 6c 75 65 28 6e 75 6c 6c 29 29 3b  ForValue(null));
2f30: 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a 0d 0a 20 2a 20 43  ..}..../**.. * C
2f40: 68 65 63 6b 73 20 74 68 61 74 20 61 20 76 61 6c  hecks that a val
2f50: 75 65 20 69 73 20 75 6e 64 65 66 69 6e 65 64 0d  ue is undefined.
2f60: 0a 20 2a 20 40 70 61 72 61 6d 20 63 6f 6d 6d 65  . * @param comme
2f70: 6e 74 20 6f 70 74 69 6f 6e 61 6c 2c 20 64 69 73  nt optional, dis
2f80: 70 6c 61 79 65 64 20 69 6e 20 74 68 65 20 63 61  played in the ca
2f90: 73 65 20 6f 66 20 66 61 69 6c 75 72 65 0d 0a 20  se of failure.. 
2fa0: 2a 20 40 70 61 72 61 6d 20 76 61 6c 75 65 20 74  * @param value t
2fb0: 68 65 20 76 61 6c 75 65 0d 0a 20 2a 20 40 74 68  he value.. * @th
2fc0: 72 6f 77 73 20 4a 73 55 6e 69 74 2e 46 61 69 6c  rows JsUnit.Fail
2fd0: 75 72 65 20 69 66 20 74 68 65 20 76 61 6c 75 65  ure if the value
2fe0: 20 69 73 20 6e 6f 74 20 75 6e 64 65 66 69 6e 65   is not undefine
2ff0: 64 0d 0a 20 2a 20 40 74 68 72 6f 77 73 20 4a 73  d.. * @throws Js
3000: 55 6e 69 74 49 6e 76 61 6c 69 64 41 73 73 65 72  UnitInvalidAsser
3010: 74 69 6f 6e 41 72 67 75 6d 65 6e 74 20 69 66 20  tionArgument if 
3020: 61 6e 20 69 6e 63 6f 72 72 65 63 74 20 6e 75 6d  an incorrect num
3030: 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73  ber of arguments
3040: 20 69 73 20 70 61 73 73 65 64 0d 0a 20 2a 2f 0d   is passed.. */.
3050: 0a 66 75 6e 63 74 69 6f 6e 20 61 73 73 65 72 74  .function assert
3060: 55 6e 64 65 66 69 6e 65 64 28 29 20 7b 0d 0a 20  Undefined() {.. 
3070: 20 20 20 4a 73 55 6e 69 74 2e 5f 76 61 6c 69 64     JsUnit._valid
3080: 61 74 65 41 72 67 75 6d 65 6e 74 73 28 31 2c 20  ateArguments(1, 
3090: 61 72 67 75 6d 65 6e 74 73 29 3b 0d 0a 20 20 20  arguments);..   
30a0: 20 76 61 72 20 61 56 61 72 20 3d 20 4a 73 55 6e   var aVar = JsUn
30b0: 69 74 2e 5f 6e 6f 6e 43 6f 6d 6d 65 6e 74 41 72  it._nonCommentAr
30c0: 67 28 31 2c 20 31 2c 20 61 72 67 75 6d 65 6e 74  g(1, 1, argument
30d0: 73 29 3b 0d 0a 20 20 20 20 4a 73 55 6e 69 74 2e  s);..    JsUnit.
30e0: 5f 61 73 73 65 72 74 28 4a 73 55 6e 69 74 2e 5f  _assert(JsUnit._
30f0: 63 6f 6d 6d 65 6e 74 41 72 67 28 31 2c 20 61 72  commentArg(1, ar
3100: 67 75 6d 65 6e 74 73 29 2c 20 61 56 61 72 20 3d  guments), aVar =
3110: 3d 3d 20 4a 53 55 4e 49 54 5f 55 4e 44 45 46 49  == JSUNIT_UNDEFI
3120: 4e 45 44 5f 56 41 4c 55 45 2c 20 27 45 78 70 65  NED_VALUE, 'Expe
3130: 63 74 65 64 20 27 20 2b 20 4a 73 55 6e 69 74 2e  cted ' + JsUnit.
3140: 5f 64 69 73 70 6c 61 79 53 74 72 69 6e 67 46 6f  _displayStringFo
3150: 72 56 61 6c 75 65 28 4a 53 55 4e 49 54 5f 55 4e  rValue(JSUNIT_UN
3160: 44 45 46 49 4e 45 44 5f 56 41 4c 55 45 29 20 2b  DEFINED_VALUE) +
3170: 20 27 20 62 75 74 20 77 61 73 20 27 20 2b 20 4a   ' but was ' + J
3180: 73 55 6e 69 74 2e 5f 64 69 73 70 6c 61 79 53 74  sUnit._displaySt
3190: 72 69 6e 67 46 6f 72 56 61 6c 75 65 28 61 56 61  ringForValue(aVa
31a0: 72 29 29 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a 0d 0a  r));..}..../**..
31b0: 20 2a 20 43 68 65 63 6b 73 20 74 68 61 74 20 61   * Checks that a
31c0: 20 76 61 6c 75 65 20 69 73 20 6e 6f 74 20 75 6e   value is not un
31d0: 64 65 66 69 6e 65 64 0d 0a 20 2a 20 40 70 61 72  defined.. * @par
31e0: 61 6d 20 63 6f 6d 6d 65 6e 74 20 6f 70 74 69 6f  am comment optio
31f0: 6e 61 6c 2c 20 64 69 73 70 6c 61 79 65 64 20 69  nal, displayed i
3200: 6e 20 74 68 65 20 63 61 73 65 20 6f 66 20 66 61  n the case of fa
3210: 69 6c 75 72 65 0d 0a 20 2a 20 40 70 61 72 61 6d  ilure.. * @param
3220: 20 76 61 6c 75 65 20 74 68 65 20 76 61 6c 75 65   value the value
3230: 0d 0a 20 2a 20 40 74 68 72 6f 77 73 20 4a 73 55  .. * @throws JsU
3240: 6e 69 74 2e 46 61 69 6c 75 72 65 20 69 66 20 74  nit.Failure if t
3250: 68 65 20 76 61 6c 75 65 20 69 73 20 75 6e 64 65  he value is unde
3260: 66 69 6e 65 64 0d 0a 20 2a 20 40 74 68 72 6f 77  fined.. * @throw
3270: 73 20 4a 73 55 6e 69 74 49 6e 76 61 6c 69 64 41  s JsUnitInvalidA
3280: 73 73 65 72 74 69 6f 6e 41 72 67 75 6d 65 6e 74  ssertionArgument
3290: 20 69 66 20 61 6e 20 69 6e 63 6f 72 72 65 63 74   if an incorrect
32a0: 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d   number of argum
32b0: 65 6e 74 73 20 69 73 20 70 61 73 73 65 64 0d 0a  ents is passed..
32c0: 20 2a 2f 0d 0a 66 75 6e 63 74 69 6f 6e 20 61 73   */..function as
32d0: 73 65 72 74 4e 6f 74 55 6e 64 65 66 69 6e 65 64  sertNotUndefined
32e0: 28 29 20 7b 0d 0a 20 20 20 20 4a 73 55 6e 69 74  () {..    JsUnit
32f0: 2e 5f 76 61 6c 69 64 61 74 65 41 72 67 75 6d 65  ._validateArgume
3300: 6e 74 73 28 31 2c 20 61 72 67 75 6d 65 6e 74 73  nts(1, arguments
3310: 29 3b 0d 0a 20 20 20 20 76 61 72 20 61 56 61 72  );..    var aVar
3320: 20 3d 20 4a 73 55 6e 69 74 2e 5f 6e 6f 6e 43 6f   = JsUnit._nonCo
3330: 6d 6d 65 6e 74 41 72 67 28 31 2c 20 31 2c 20 61  mmentArg(1, 1, a
3340: 72 67 75 6d 65 6e 74 73 29 3b 0d 0a 20 20 20 20  rguments);..    
3350: 4a 73 55 6e 69 74 2e 5f 61 73 73 65 72 74 28 4a  JsUnit._assert(J
3360: 73 55 6e 69 74 2e 5f 63 6f 6d 6d 65 6e 74 41 72  sUnit._commentAr
3370: 67 28 31 2c 20 61 72 67 75 6d 65 6e 74 73 29 2c  g(1, arguments),
3380: 20 4a 73 55 6e 69 74 2e 5f 63 68 65 63 6b 4e 6f   JsUnit._checkNo
3390: 74 55 6e 64 65 66 69 6e 65 64 28 61 56 61 72 29  tUndefined(aVar)
33a0: 2c 20 27 45 78 70 65 63 74 65 64 20 6e 6f 74 20  , 'Expected not 
33b0: 74 6f 20 62 65 20 27 20 2b 20 4a 73 55 6e 69 74  to be ' + JsUnit
33c0: 2e 5f 64 69 73 70 6c 61 79 53 74 72 69 6e 67 46  ._displayStringF
33d0: 6f 72 56 61 6c 75 65 28 4a 53 55 4e 49 54 5f 55  orValue(JSUNIT_U
33e0: 4e 44 45 46 49 4e 45 44 5f 56 41 4c 55 45 29 29  NDEFINED_VALUE))
33f0: 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a 0d 0a 20 2a 20  ;..}..../**.. * 
3400: 43 68 65 63 6b 73 20 74 68 61 74 20 61 20 76 61  Checks that a va
3410: 6c 75 65 20 69 73 20 4e 61 4e 20 28 4e 6f 74 20  lue is NaN (Not 
3420: 61 20 4e 75 6d 62 65 72 29 0d 0a 20 2a 20 40 70  a Number).. * @p
3430: 61 72 61 6d 20 63 6f 6d 6d 65 6e 74 20 6f 70 74  aram comment opt
3440: 69 6f 6e 61 6c 2c 20 64 69 73 70 6c 61 79 65 64  ional, displayed
3450: 20 69 6e 20 74 68 65 20 63 61 73 65 20 6f 66 20   in the case of 
3460: 66 61 69 6c 75 72 65 0d 0a 20 2a 20 40 70 61 72  failure.. * @par
3470: 61 6d 20 76 61 6c 75 65 20 74 68 65 20 76 61 6c  am value the val
3480: 75 65 0d 0a 20 2a 20 40 74 68 72 6f 77 73 20 4a  ue.. * @throws J
3490: 73 55 6e 69 74 2e 46 61 69 6c 75 72 65 20 69 66  sUnit.Failure if
34a0: 20 74 68 65 20 76 61 6c 75 65 20 69 73 20 61 20   the value is a 
34b0: 6e 75 6d 62 65 72 0d 0a 20 2a 20 40 74 68 72 6f  number.. * @thro
34c0: 77 73 20 4a 73 55 6e 69 74 49 6e 76 61 6c 69 64  ws JsUnitInvalid
34d0: 41 73 73 65 72 74 69 6f 6e 41 72 67 75 6d 65 6e  AssertionArgumen
34e0: 74 20 69 66 20 61 6e 20 69 6e 63 6f 72 72 65 63  t if an incorrec
34f0: 74 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75  t number of argu
3500: 6d 65 6e 74 73 20 69 73 20 70 61 73 73 65 64 0d  ments is passed.
3510: 0a 20 2a 2f 0d 0a 66 75 6e 63 74 69 6f 6e 20 61  . */..function a
3520: 73 73 65 72 74 4e 61 4e 28 29 20 7b 0d 0a 20 20  ssertNaN() {..  
3530: 20 20 4a 73 55 6e 69 74 2e 5f 76 61 6c 69 64 61    JsUnit._valida
3540: 74 65 41 72 67 75 6d 65 6e 74 73 28 31 2c 20 61  teArguments(1, a
3550: 72 67 75 6d 65 6e 74 73 29 3b 0d 0a 20 20 20 20  rguments);..    
3560: 76 61 72 20 61 56 61 72 20 3d 20 4a 73 55 6e 69  var aVar = JsUni
3570: 74 2e 5f 6e 6f 6e 43 6f 6d 6d 65 6e 74 41 72 67  t._nonCommentArg
3580: 28 31 2c 20 31 2c 20 61 72 67 75 6d 65 6e 74 73  (1, 1, arguments
3590: 29 3b 0d 0a 20 20 20 20 4a 73 55 6e 69 74 2e 5f  );..    JsUnit._
35a0: 61 73 73 65 72 74 28 4a 73 55 6e 69 74 2e 5f 63  assert(JsUnit._c
35b0: 6f 6d 6d 65 6e 74 41 72 67 28 31 2c 20 61 72 67  ommentArg(1, arg
35c0: 75 6d 65 6e 74 73 29 2c 20 69 73 4e 61 4e 28 61  uments), isNaN(a
35d0: 56 61 72 29 2c 20 27 45 78 70 65 63 74 65 64 20  Var), 'Expected 
35e0: 4e 61 4e 27 29 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a  NaN');..}..../**
35f0: 0d 0a 20 2a 20 43 68 65 63 6b 73 20 74 68 61 74  .. * Checks that
3600: 20 61 20 76 61 6c 75 65 20 69 73 20 6e 6f 74 20   a value is not 
3610: 4e 61 4e 20 28 69 2e 65 2e 20 69 73 20 61 20 6e  NaN (i.e. is a n
3620: 75 6d 62 65 72 29 0d 0a 20 2a 20 40 70 61 72 61  umber).. * @para
3630: 6d 20 63 6f 6d 6d 65 6e 74 20 6f 70 74 69 6f 6e  m comment option
3640: 61 6c 2c 20 64 69 73 70 6c 61 79 65 64 20 69 6e  al, displayed in
3650: 20 74 68 65 20 63 61 73 65 20 6f 66 20 66 61 69   the case of fai
3660: 6c 75 72 65 0d 0a 20 2a 20 40 70 61 72 61 6d 20  lure.. * @param 
3670: 76 61 6c 75 65 20 74 68 65 20 76 61 6c 75 65 0d  value the value.
3680: 0a 20 2a 20 40 74 68 72 6f 77 73 20 4a 73 55 6e  . * @throws JsUn
3690: 69 74 2e 46 61 69 6c 75 72 65 20 69 66 20 74 68  it.Failure if th
36a0: 65 20 76 61 6c 75 65 20 69 73 20 6e 6f 74 20 61  e value is not a
36b0: 20 6e 75 6d 62 65 72 0d 0a 20 2a 20 40 74 68 72   number.. * @thr
36c0: 6f 77 73 20 4a 73 55 6e 69 74 49 6e 76 61 6c 69  ows JsUnitInvali
36d0: 64 41 73 73 65 72 74 69 6f 6e 41 72 67 75 6d 65  dAssertionArgume
36e0: 6e 74 20 69 66 20 61 6e 20 69 6e 63 6f 72 72 65  nt if an incorre
36f0: 63 74 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67  ct number of arg
3700: 75 6d 65 6e 74 73 20 69 73 20 70 61 73 73 65 64  uments is passed
3710: 0d 0a 20 2a 2f 0d 0a 66 75 6e 63 74 69 6f 6e 20  .. */..function 
3720: 61 73 73 65 72 74 4e 6f 74 4e 61 4e 28 29 20 7b  assertNotNaN() {
3730: 0d 0a 20 20 20 20 4a 73 55 6e 69 74 2e 5f 76 61  ..    JsUnit._va
3740: 6c 69 64 61 74 65 41 72 67 75 6d 65 6e 74 73 28  lidateArguments(
3750: 31 2c 20 61 72 67 75 6d 65 6e 74 73 29 3b 0d 0a  1, arguments);..
3760: 20 20 20 20 76 61 72 20 61 56 61 72 20 3d 20 4a      var aVar = J
3770: 73 55 6e 69 74 2e 5f 6e 6f 6e 43 6f 6d 6d 65 6e  sUnit._nonCommen
3780: 74 41 72 67 28 31 2c 20 31 2c 20 61 72 67 75 6d  tArg(1, 1, argum
3790: 65 6e 74 73 29 3b 0d 0a 20 20 20 20 4a 73 55 6e  ents);..    JsUn
37a0: 69 74 2e 5f 61 73 73 65 72 74 28 4a 73 55 6e 69  it._assert(JsUni
37b0: 74 2e 5f 63 6f 6d 6d 65 6e 74 41 72 67 28 31 2c  t._commentArg(1,
37c0: 20 61 72 67 75 6d 65 6e 74 73 29 2c 20 21 69 73   arguments), !is
37d0: 4e 61 4e 28 61 56 61 72 29 2c 20 27 45 78 70 65  NaN(aVar), 'Expe
37e0: 63 74 65 64 20 6e 6f 74 20 4e 61 4e 27 29 3b 0d  cted not NaN');.
37f0: 0a 7d 0d 0a 0d 0a 2f 2a 2a 0d 0a 20 2a 20 43 68  .}..../**.. * Ch
3800: 65 63 6b 73 20 74 68 61 74 20 61 6e 20 6f 62 6a  ecks that an obj
3810: 65 63 74 20 69 73 20 65 71 75 61 6c 20 74 6f 20  ect is equal to 
3820: 61 6e 6f 74 68 65 72 20 75 73 69 6e 67 20 3d 3d  another using ==
3830: 3d 20 66 6f 72 20 70 72 69 6d 69 74 69 76 65 73  = for primitives
3840: 20 61 6e 64 20 74 68 65 69 72 20 6f 62 6a 65 63   and their objec
3850: 74 20 63 6f 75 6e 74 65 72 70 61 72 74 73 20 62  t counterparts b
3860: 75 74 20 61 6c 73 6f 20 64 65 73 63 65 64 69 6e  ut also descedin
3870: 67 0d 0a 20 2a 20 69 6e 74 6f 20 63 6f 6c 6c 65  g.. * into colle
3880: 63 74 69 6f 6e 73 20 61 6e 64 20 63 61 6c 6c 69  ctions and calli
3890: 6e 67 20 61 73 73 65 72 74 4f 62 6a 65 63 74 45  ng assertObjectE
38a0: 71 75 61 6c 73 20 66 6f 72 20 65 61 63 68 20 65  quals for each e
38b0: 6c 65 6d 65 6e 74 0d 0a 20 2a 20 40 70 61 72 61  lement.. * @para
38c0: 6d 20 63 6f 6d 6d 65 6e 74 20 6f 70 74 69 6f 6e  m comment option
38d0: 61 6c 2c 20 64 69 73 70 6c 61 79 65 64 20 69 6e  al, displayed in
38e0: 20 74 68 65 20 63 61 73 65 20 6f 66 20 66 61 69   the case of fai
38f0: 6c 75 72 65 0d 0a 20 2a 20 40 70 61 72 61 6d 20  lure.. * @param 
3900: 76 61 6c 75 65 20 74 68 65 20 65 78 70 65 63 74  value the expect
3910: 65 64 20 76 61 6c 75 65 0d 0a 20 2a 20 40 70 61  ed value.. * @pa
3920: 72 61 6d 20 76 61 6c 75 65 20 74 68 65 20 61 63  ram value the ac
3930: 74 75 61 6c 20 76 61 6c 75 65 0d 0a 20 2a 20 40  tual value.. * @
3940: 74 68 72 6f 77 73 20 4a 73 55 6e 69 74 2e 46 61  throws JsUnit.Fa
3950: 69 6c 75 72 65 20 69 66 20 74 68 65 20 61 63 74  ilure if the act
3960: 75 61 6c 20 76 61 6c 75 65 20 64 6f 65 73 20 6e  ual value does n
3970: 6f 74 20 65 71 75 61 6c 20 74 68 65 20 65 78 70  ot equal the exp
3980: 65 63 74 65 64 20 76 61 6c 75 65 0d 0a 20 2a 20  ected value.. * 
3990: 40 74 68 72 6f 77 73 20 4a 73 55 6e 69 74 49 6e  @throws JsUnitIn
39a0: 76 61 6c 69 64 41 73 73 65 72 74 69 6f 6e 41 72  validAssertionAr
39b0: 67 75 6d 65 6e 74 20 69 66 20 61 6e 20 69 6e 63  gument if an inc
39c0: 6f 72 72 65 63 74 20 6e 75 6d 62 65 72 20 6f 66  orrect number of
39d0: 20 61 72 67 75 6d 65 6e 74 73 20 69 73 20 70 61   arguments is pa
39e0: 73 73 65 64 0d 0a 20 2a 2f 0d 0a 66 75 6e 63 74  ssed.. */..funct
39f0: 69 6f 6e 20 61 73 73 65 72 74 4f 62 6a 65 63 74  ion assertObject
3a00: 45 71 75 61 6c 73 28 29 20 7b 0d 0a 20 20 20 20  Equals() {..    
3a10: 4a 73 55 6e 69 74 2e 5f 76 61 6c 69 64 61 74 65  JsUnit._validate
3a20: 41 72 67 75 6d 65 6e 74 73 28 32 2c 20 61 72 67  Arguments(2, arg
3a30: 75 6d 65 6e 74 73 29 3b 0d 0a 20 20 20 20 76 61  uments);..    va
3a40: 72 20 76 61 72 31 20 3d 20 4a 73 55 6e 69 74 2e  r var1 = JsUnit.
3a50: 5f 6e 6f 6e 43 6f 6d 6d 65 6e 74 41 72 67 28 31  _nonCommentArg(1
3a60: 2c 20 32 2c 20 61 72 67 75 6d 65 6e 74 73 29 3b  , 2, arguments);
3a70: 0d 0a 20 20 20 20 76 61 72 20 76 61 72 32 20 3d  ..    var var2 =
3a80: 20 4a 73 55 6e 69 74 2e 5f 6e 6f 6e 43 6f 6d 6d   JsUnit._nonComm
3a90: 65 6e 74 41 72 67 28 32 2c 20 32 2c 20 61 72 67  entArg(2, 2, arg
3aa0: 75 6d 65 6e 74 73 29 3b 0d 0a 20 20 20 20 76 61  uments);..    va
3ab0: 72 20 66 61 69 6c 75 72 65 4d 65 73 73 61 67 65  r failureMessage
3ac0: 20 3d 20 4a 73 55 6e 69 74 2e 5f 63 6f 6d 6d 65   = JsUnit._comme
3ad0: 6e 74 41 72 67 28 32 2c 20 61 72 67 75 6d 65 6e  ntArg(2, argumen
3ae0: 74 73 29 20 3f 20 4a 73 55 6e 69 74 2e 5f 63 6f  ts) ? JsUnit._co
3af0: 6d 6d 65 6e 74 41 72 67 28 32 2c 20 61 72 67 75  mmentArg(2, argu
3b00: 6d 65 6e 74 73 29 20 3a 20 27 27 3b 0d 0a 20 20  ments) : '';..  
3b10: 20 20 69 66 20 28 76 61 72 31 20 3d 3d 3d 20 76    if (var1 === v
3b20: 61 72 32 29 0d 0a 20 20 20 20 20 20 20 20 72 65  ar2)..        re
3b30: 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 76 61 72  turn;....    var
3b40: 20 69 73 45 71 75 61 6c 20 3d 20 66 61 6c 73 65   isEqual = false
3b50: 3b 0d 0a 0d 0a 20 20 20 20 76 61 72 20 74 79 70  ;....    var typ
3b60: 65 4f 66 56 61 72 31 20 3d 20 4a 73 55 6e 69 74  eOfVar1 = JsUnit
3b70: 2e 5f 74 72 75 65 54 79 70 65 4f 66 28 76 61 72  ._trueTypeOf(var
3b80: 31 29 3b 0d 0a 20 20 20 20 76 61 72 20 74 79 70  1);..    var typ
3b90: 65 4f 66 56 61 72 32 20 3d 20 4a 73 55 6e 69 74  eOfVar2 = JsUnit
3ba0: 2e 5f 74 72 75 65 54 79 70 65 4f 66 28 76 61 72  ._trueTypeOf(var
3bb0: 32 29 3b 0d 0a 0d 0a 20 20 20 20 69 66 20 28 74  2);....    if (t
3bc0: 79 70 65 4f 66 56 61 72 31 20 3d 3d 20 74 79 70  ypeOfVar1 == typ
3bd0: 65 4f 66 56 61 72 32 29 20 7b 0d 0a 20 20 20 20  eOfVar2) {..    
3be0: 20 20 20 20 76 61 72 20 70 72 69 6d 69 74 69 76      var primitiv
3bf0: 65 45 71 75 61 6c 69 74 79 50 72 65 64 69 63 61  eEqualityPredica
3c00: 74 65 20 3d 20 4a 73 55 6e 69 74 2e 50 52 49 4d  te = JsUnit.PRIM
3c10: 49 54 49 56 45 5f 45 51 55 41 4c 49 54 59 5f 50  ITIVE_EQUALITY_P
3c20: 52 45 44 49 43 41 54 45 53 5b 74 79 70 65 4f 66  REDICATES[typeOf
3c30: 56 61 72 31 5d 3b 0d 0a 20 20 20 20 20 20 20 20  Var1];..        
3c40: 69 66 20 28 70 72 69 6d 69 74 69 76 65 45 71 75  if (primitiveEqu
3c50: 61 6c 69 74 79 50 72 65 64 69 63 61 74 65 29 20  alityPredicate) 
3c60: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
3c70: 73 45 71 75 61 6c 20 3d 20 70 72 69 6d 69 74 69  sEqual = primiti
3c80: 76 65 45 71 75 61 6c 69 74 79 50 72 65 64 69 63  veEqualityPredic
3c90: 61 74 65 28 76 61 72 31 2c 20 76 61 72 32 29 3b  ate(var1, var2);
3ca0: 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65  ..        } else
3cb0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3cc0: 76 61 72 20 65 78 70 65 63 74 65 64 4b 65 79 73  var expectedKeys
3cd0: 20 3d 20 4a 73 55 6e 69 74 2e 55 74 69 6c 2e 67   = JsUnit.Util.g
3ce0: 65 74 4b 65 79 73 28 76 61 72 31 29 2e 73 6f 72  etKeys(var1).sor
3cf0: 74 28 29 2e 6a 6f 69 6e 28 22 2c 20 22 29 3b 0d  t().join(", ");.
3d00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72  .            var
3d10: 20 61 63 74 75 61 6c 4b 65 79 73 20 3d 20 4a 73   actualKeys = Js
3d20: 55 6e 69 74 2e 55 74 69 6c 2e 67 65 74 4b 65 79  Unit.Util.getKey
3d30: 73 28 76 61 72 32 29 2e 73 6f 72 74 28 29 2e 6a  s(var2).sort().j
3d40: 6f 69 6e 28 22 2c 20 22 29 3b 0d 0a 20 20 20 20  oin(", ");..    
3d50: 20 20 20 20 20 20 20 20 69 66 20 28 65 78 70 65          if (expe
3d60: 63 74 65 64 4b 65 79 73 20 21 3d 20 61 63 74 75  ctedKeys != actu
3d70: 61 6c 4b 65 79 73 29 20 7b 0d 0a 20 20 20 20 20  alKeys) {..     
3d80: 20 20 20 20 20 20 20 20 20 20 20 4a 73 55 6e 69             JsUni
3d90: 74 2e 5f 61 73 73 65 72 74 28 66 61 69 6c 75 72  t._assert(failur
3da0: 65 4d 65 73 73 61 67 65 2c 20 66 61 6c 73 65 2c  eMessage, false,
3db0: 20 27 45 78 70 65 63 74 65 64 20 6b 65 79 73 20   'Expected keys 
3dc0: 22 27 20 2b 20 65 78 70 65 63 74 65 64 4b 65 79  "' + expectedKey
3dd0: 73 20 2b 20 27 22 20 62 75 74 20 66 6f 75 6e 64  s + '" but found
3de0: 20 22 27 20 2b 20 61 63 74 75 61 6c 4b 65 79 73   "' + actualKeys
3df0: 20 2b 20 27 22 27 29 3b 0d 0a 20 20 20 20 20 20   + '"');..      
3e00: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
3e10: 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 20       for (var i 
3e20: 69 6e 20 76 61 72 31 29 20 7b 0d 0a 20 20 20 20  in var1) {..    
3e30: 20 20 20 20 20 20 20 20 20 20 20 20 61 73 73 65              asse
3e40: 72 74 4f 62 6a 65 63 74 45 71 75 61 6c 73 28 66  rtObjectEquals(f
3e50: 61 69 6c 75 72 65 4d 65 73 73 61 67 65 20 2b 20  ailureMessage + 
3e60: 27 20 66 6f 75 6e 64 20 6e 65 73 74 65 64 20 27  ' found nested '
3e70: 20 2b 20 74 79 70 65 4f 66 56 61 72 31 20 2b 20   + typeOfVar1 + 
3e80: 27 40 27 20 2b 20 69 20 2b 20 27 5c 6e 27 2c 20  '@' + i + '\n', 
3e90: 76 61 72 31 5b 69 5d 2c 20 76 61 72 32 5b 69 5d  var1[i], var2[i]
3ea0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
3eb0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  }..            i
3ec0: 73 45 71 75 61 6c 20 3d 20 74 72 75 65 3b 0d 0a  sEqual = true;..
3ed0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d          }..    }
3ee0: 0d 0a 20 20 20 20 4a 73 55 6e 69 74 2e 5f 61 73  ..    JsUnit._as
3ef0: 73 65 72 74 28 66 61 69 6c 75 72 65 4d 65 73 73  sert(failureMess
3f00: 61 67 65 2c 20 69 73 45 71 75 61 6c 2c 20 27 45  age, isEqual, 'E
3f10: 78 70 65 63 74 65 64 20 27 20 2b 20 4a 73 55 6e  xpected ' + JsUn
3f20: 69 74 2e 5f 64 69 73 70 6c 61 79 53 74 72 69 6e  it._displayStrin
3f30: 67 46 6f 72 56 61 6c 75 65 28 76 61 72 31 29 20  gForValue(var1) 
3f40: 2b 20 27 20 62 75 74 20 77 61 73 20 27 20 2b 20  + ' but was ' + 
3f50: 4a 73 55 6e 69 74 2e 5f 64 69 73 70 6c 61 79 53  JsUnit._displayS
3f60: 74 72 69 6e 67 46 6f 72 56 61 6c 75 65 28 76 61  tringForValue(va
3f70: 72 32 29 29 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a 0d  r2));..}..../**.
3f80: 0a 20 2a 20 43 68 65 63 6b 73 20 74 68 61 74 20  . * Checks that 
3f90: 61 6e 20 61 72 72 61 79 20 69 73 20 65 71 75 61  an array is equa
3fa0: 6c 20 74 6f 20 61 6e 6f 74 68 65 72 20 62 79 20  l to another by 
3fb0: 63 68 65 63 6b 69 6e 67 20 74 68 61 74 20 62 6f  checking that bo
3fc0: 74 68 20 61 72 65 20 61 72 72 61 79 73 20 61 6e  th are arrays an
3fd0: 64 20 74 68 65 6e 20 63 6f 6d 70 61 72 69 6e 67  d then comparing
3fe0: 20 74 68 65 69 72 20 65 6c 65 6d 65 6e 74 73 20   their elements 
3ff0: 75 73 69 6e 67 20 61 73 73 65 72 74 4f 62 6a 65  using assertObje
4000: 63 74 45 71 75 61 6c 73 0d 0a 20 2a 20 40 70 61  ctEquals.. * @pa
4010: 72 61 6d 20 63 6f 6d 6d 65 6e 74 20 6f 70 74 69  ram comment opti
4020: 6f 6e 61 6c 2c 20 64 69 73 70 6c 61 79 65 64 20  onal, displayed 
4030: 69 6e 20 74 68 65 20 63 61 73 65 20 6f 66 20 66  in the case of f
4040: 61 69 6c 75 72 65 0d 0a 20 2a 20 40 70 61 72 61  ailure.. * @para
4050: 6d 20 76 61 6c 75 65 20 74 68 65 20 65 78 70 65  m value the expe
4060: 63 74 65 64 20 61 72 72 61 79 0d 0a 20 2a 20 40  cted array.. * @
4070: 70 61 72 61 6d 20 76 61 6c 75 65 20 74 68 65 20  param value the 
4080: 61 63 74 75 61 6c 20 61 72 72 61 79 0d 0a 20 2a  actual array.. *
4090: 20 40 74 68 72 6f 77 73 20 4a 73 55 6e 69 74 2e   @throws JsUnit.
40a0: 46 61 69 6c 75 72 65 20 69 66 20 74 68 65 20 61  Failure if the a
40b0: 63 74 75 61 6c 20 76 61 6c 75 65 20 64 6f 65 73  ctual value does
40c0: 20 6e 6f 74 20 65 71 75 61 6c 20 74 68 65 20 65   not equal the e
40d0: 78 70 65 63 74 65 64 20 76 61 6c 75 65 0d 0a 20  xpected value.. 
40e0: 2a 20 40 74 68 72 6f 77 73 20 4a 73 55 6e 69 74  * @throws JsUnit
40f0: 49 6e 76 61 6c 69 64 41 73 73 65 72 74 69 6f 6e  InvalidAssertion
4100: 41 72 67 75 6d 65 6e 74 20 69 66 20 61 6e 20 69  Argument if an i
4110: 6e 63 6f 72 72 65 63 74 20 6e 75 6d 62 65 72 20  ncorrect number 
4120: 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 69 73 20  of arguments is 
4130: 70 61 73 73 65 64 0d 0a 20 2a 2f 0d 0a 66 75 6e  passed.. */..fun
4140: 63 74 69 6f 6e 20 61 73 73 65 72 74 41 72 72 61  ction assertArra
4150: 79 45 71 75 61 6c 73 28 29 20 7b 0d 0a 20 20 20  yEquals() {..   
4160: 20 4a 73 55 6e 69 74 2e 5f 76 61 6c 69 64 61 74   JsUnit._validat
4170: 65 41 72 67 75 6d 65 6e 74 73 28 32 2c 20 61 72  eArguments(2, ar
4180: 67 75 6d 65 6e 74 73 29 3b 0d 0a 20 20 20 20 76  guments);..    v
4190: 61 72 20 61 72 72 61 79 31 20 3d 20 4a 73 55 6e  ar array1 = JsUn
41a0: 69 74 2e 5f 6e 6f 6e 43 6f 6d 6d 65 6e 74 41 72  it._nonCommentAr
41b0: 67 28 31 2c 20 32 2c 20 61 72 67 75 6d 65 6e 74  g(1, 2, argument
41c0: 73 29 3b 0d 0a 20 20 20 20 76 61 72 20 61 72 72  s);..    var arr
41d0: 61 79 32 20 3d 20 4a 73 55 6e 69 74 2e 5f 6e 6f  ay2 = JsUnit._no
41e0: 6e 43 6f 6d 6d 65 6e 74 41 72 67 28 32 2c 20 32  nCommentArg(2, 2
41f0: 2c 20 61 72 67 75 6d 65 6e 74 73 29 3b 0d 0a 20  , arguments);.. 
4200: 20 20 20 69 66 20 28 4a 73 55 6e 69 74 2e 5f 74     if (JsUnit._t
4210: 72 75 65 54 79 70 65 4f 66 28 61 72 72 61 79 31  rueTypeOf(array1
4220: 29 20 21 3d 20 27 41 72 72 61 79 27 20 7c 7c 20  ) != 'Array' || 
4230: 4a 73 55 6e 69 74 2e 5f 74 72 75 65 54 79 70 65  JsUnit._trueType
4240: 4f 66 28 61 72 72 61 79 32 29 20 21 3d 20 27 41  Of(array2) != 'A
4250: 72 72 61 79 27 29 20 7b 0d 0a 20 20 20 20 20 20  rray') {..      
4260: 20 20 74 68 72 6f 77 20 6e 65 77 20 4a 73 55 6e    throw new JsUn
4270: 69 74 2e 41 73 73 65 72 74 69 6f 6e 41 72 67 75  it.AssertionArgu
4280: 6d 65 6e 74 45 72 72 6f 72 28 27 4e 6f 6e 2d 61  mentError('Non-a
4290: 72 72 61 79 20 70 61 73 73 65 64 20 74 6f 20 61  rray passed to a
42a0: 73 73 65 72 74 41 72 72 61 79 45 71 75 61 6c 73  ssertArrayEquals
42b0: 27 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  ');..    }..    
42c0: 61 73 73 65 72 74 4f 62 6a 65 63 74 45 71 75 61  assertObjectEqua
42d0: 6c 73 28 4a 73 55 6e 69 74 2e 5f 63 6f 6d 6d 65  ls(JsUnit._comme
42e0: 6e 74 41 72 67 28 32 2c 20 61 72 67 75 6d 65 6e  ntArg(2, argumen
42f0: 74 73 29 2c 20 4a 73 55 6e 69 74 2e 5f 6e 6f 6e  ts), JsUnit._non
4300: 43 6f 6d 6d 65 6e 74 41 72 67 28 31 2c 20 32 2c  CommentArg(1, 2,
4310: 20 61 72 67 75 6d 65 6e 74 73 29 2c 20 4a 73 55   arguments), JsU
4320: 6e 69 74 2e 5f 6e 6f 6e 43 6f 6d 6d 65 6e 74 41  nit._nonCommentA
4330: 72 67 28 32 2c 20 32 2c 20 61 72 67 75 6d 65 6e  rg(2, 2, argumen
4340: 74 73 29 29 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a 0d  ts));..}..../**.
4350: 0a 20 2a 20 43 68 65 63 6b 73 20 74 68 61 74 20  . * Checks that 
4360: 61 20 76 61 6c 75 65 20 65 76 61 6c 75 61 74 65  a value evaluate
4370: 73 20 74 6f 20 74 72 75 65 20 69 6e 20 74 68 65  s to true in the
4380: 20 73 65 6e 73 65 20 74 68 61 74 20 76 61 6c 75   sense that valu
4390: 65 20 3d 3d 20 74 72 75 65 0d 0a 20 2a 20 40 70  e == true.. * @p
43a0: 61 72 61 6d 20 63 6f 6d 6d 65 6e 74 20 6f 70 74  aram comment opt
43b0: 69 6f 6e 61 6c 2c 20 64 69 73 70 6c 61 79 65 64  ional, displayed
43c0: 20 69 6e 20 74 68 65 20 63 61 73 65 20 6f 66 20   in the case of 
43d0: 66 61 69 6c 75 72 65 0d 0a 20 2a 20 40 70 61 72  failure.. * @par
43e0: 61 6d 20 76 61 6c 75 65 20 74 68 65 20 76 61 6c  am value the val
43f0: 75 65 0d 0a 20 2a 20 40 74 68 72 6f 77 73 20 4a  ue.. * @throws J
4400: 73 55 6e 69 74 2e 46 61 69 6c 75 72 65 20 69 66  sUnit.Failure if
4410: 20 74 68 65 20 61 63 74 75 61 6c 20 76 61 6c 75   the actual valu
4420: 65 20 64 6f 65 73 20 6e 6f 74 20 65 76 61 6c 75  e does not evalu
4430: 61 74 65 20 74 6f 20 74 72 75 65 0d 0a 20 2a 20  ate to true.. * 
4440: 40 74 68 72 6f 77 73 20 4a 73 55 6e 69 74 49 6e  @throws JsUnitIn
4450: 76 61 6c 69 64 41 73 73 65 72 74 69 6f 6e 41 72  validAssertionAr
4460: 67 75 6d 65 6e 74 20 69 66 20 61 6e 20 69 6e 63  gument if an inc
4470: 6f 72 72 65 63 74 20 6e 75 6d 62 65 72 20 6f 66  orrect number of
4480: 20 61 72 67 75 6d 65 6e 74 73 20 69 73 20 70 61   arguments is pa
4490: 73 73 65 64 0d 0a 20 2a 2f 0d 0a 66 75 6e 63 74  ssed.. */..funct
44a0: 69 6f 6e 20 61 73 73 65 72 74 45 76 61 6c 75 61  ion assertEvalua
44b0: 74 65 73 54 6f 54 72 75 65 28 29 20 7b 0d 0a 20  tesToTrue() {.. 
44c0: 20 20 20 4a 73 55 6e 69 74 2e 5f 76 61 6c 69 64     JsUnit._valid
44d0: 61 74 65 41 72 67 75 6d 65 6e 74 73 28 31 2c 20  ateArguments(1, 
44e0: 61 72 67 75 6d 65 6e 74 73 29 3b 0d 0a 20 20 20  arguments);..   
44f0: 20 76 61 72 20 76 61 6c 75 65 20 3d 20 4a 73 55   var value = JsU
4500: 6e 69 74 2e 5f 6e 6f 6e 43 6f 6d 6d 65 6e 74 41  nit._nonCommentA
4510: 72 67 28 31 2c 20 31 2c 20 61 72 67 75 6d 65 6e  rg(1, 1, argumen
4520: 74 73 29 3b 0d 0a 20 20 20 20 69 66 20 28 21 76  ts);..    if (!v
4530: 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 66  alue)..        f
4540: 61 69 6c 28 4a 73 55 6e 69 74 2e 5f 63 6f 6d 6d  ail(JsUnit._comm
4550: 65 6e 74 41 72 67 28 31 2c 20 61 72 67 75 6d 65  entArg(1, argume
4560: 6e 74 73 29 29 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a  nts));..}..../**
4570: 0d 0a 20 2a 20 43 68 65 63 6b 73 20 74 68 61 74  .. * Checks that
4580: 20 61 20 76 61 6c 75 65 20 65 76 61 6c 75 61 74   a value evaluat
4590: 65 73 20 74 6f 20 66 61 6c 73 65 20 69 6e 20 74  es to false in t
45a0: 68 65 20 73 65 6e 73 65 20 74 68 61 74 20 76 61  he sense that va
45b0: 6c 75 65 20 3d 3d 20 66 61 6c 73 65 0d 0a 20 2a  lue == false.. *
45c0: 20 40 70 61 72 61 6d 20 63 6f 6d 6d 65 6e 74 20   @param comment 
45d0: 6f 70 74 69 6f 6e 61 6c 2c 20 64 69 73 70 6c 61  optional, displa
45e0: 79 65 64 20 69 6e 20 74 68 65 20 63 61 73 65 20  yed in the case 
45f0: 6f 66 20 66 61 69 6c 75 72 65 0d 0a 20 2a 20 40  of failure.. * @
4600: 70 61 72 61 6d 20 76 61 6c 75 65 20 74 68 65 20  param value the 
4610: 76 61 6c 75 65 0d 0a 20 2a 20 40 74 68 72 6f 77  value.. * @throw
4620: 73 20 4a 73 55 6e 69 74 2e 46 61 69 6c 75 72 65  s JsUnit.Failure
4630: 20 69 66 20 74 68 65 20 61 63 74 75 61 6c 20 76   if the actual v
4640: 61 6c 75 65 20 64 6f 65 73 20 6e 6f 74 20 65 76  alue does not ev
4650: 61 6c 75 61 74 65 20 74 6f 20 74 72 75 65 0d 0a  aluate to true..
4660: 20 2a 20 40 74 68 72 6f 77 73 20 4a 73 55 6e 69   * @throws JsUni
4670: 74 49 6e 76 61 6c 69 64 41 73 73 65 72 74 69 6f  tInvalidAssertio
4680: 6e 41 72 67 75 6d 65 6e 74 20 69 66 20 61 6e 20  nArgument if an 
4690: 69 6e 63 6f 72 72 65 63 74 20 6e 75 6d 62 65 72  incorrect number
46a0: 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 69 73   of arguments is
46b0: 20 70 61 73 73 65 64 0d 0a 20 2a 2f 0d 0a 66 75   passed.. */..fu
46c0: 6e 63 74 69 6f 6e 20 61 73 73 65 72 74 45 76 61  nction assertEva
46d0: 6c 75 61 74 65 73 54 6f 46 61 6c 73 65 28 29 20  luatesToFalse() 
46e0: 7b 0d 0a 20 20 20 20 4a 73 55 6e 69 74 2e 5f 76  {..    JsUnit._v
46f0: 61 6c 69 64 61 74 65 41 72 67 75 6d 65 6e 74 73  alidateArguments
4700: 28 31 2c 20 61 72 67 75 6d 65 6e 74 73 29 3b 0d  (1, arguments);.
4710: 0a 20 20 20 20 76 61 72 20 76 61 6c 75 65 20 3d  .    var value =
4720: 20 4a 73 55 6e 69 74 2e 5f 6e 6f 6e 43 6f 6d 6d   JsUnit._nonComm
4730: 65 6e 74 41 72 67 28 31 2c 20 31 2c 20 61 72 67  entArg(1, 1, arg
4740: 75 6d 65 6e 74 73 29 3b 0d 0a 20 20 20 20 69 66  uments);..    if
4750: 20 28 76 61 6c 75 65 29 0d 0a 20 20 20 20 20 20   (value)..      
4760: 20 20 66 61 69 6c 28 4a 73 55 6e 69 74 2e 5f 63    fail(JsUnit._c
4770: 6f 6d 6d 65 6e 74 41 72 67 28 31 2c 20 61 72 67  ommentArg(1, arg
4780: 75 6d 65 6e 74 73 29 29 3b 0d 0a 7d 0d 0a 0d 0a  uments));..}....
4790: 2f 2a 2a 0d 0a 20 2a 20 43 68 65 63 6b 73 20 74  /**.. * Checks t
47a0: 68 61 74 20 61 20 76 61 6c 75 65 20 69 73 20 74  hat a value is t
47b0: 68 65 20 73 61 6d 65 20 61 73 20 61 6e 20 48 54  he same as an HT
47c0: 4d 4c 20 73 74 72 69 6e 67 20 62 79 20 22 73 74  ML string by "st
47d0: 61 6e 64 61 72 64 69 7a 69 6e 67 22 20 62 6f 74  andardizing" bot
47e0: 68 20 61 6e 64 20 63 6f 6d 70 61 72 69 6e 67 20  h and comparing 
47f0: 74 68 65 20 72 65 73 75 6c 74 20 66 6f 72 20 65  the result for e
4800: 71 75 61 6c 69 74 79 2e 0d 0a 20 2a 20 53 74 61  quality... * Sta
4810: 6e 64 61 72 64 69 7a 69 6e 67 20 69 73 20 64 6f  ndardizing is do
4820: 6e 65 20 62 79 20 74 65 6d 70 6f 72 61 72 69 6c  ne by temporaril
4830: 79 20 63 72 65 61 74 69 6e 67 20 61 20 44 49 56  y creating a DIV
4840: 2c 20 73 65 74 74 69 6e 67 20 74 68 65 20 69 6e  , setting the in
4850: 6e 65 72 48 54 4d 4c 20 6f 66 20 74 68 65 20 44  nerHTML of the D
4860: 49 56 20 74 6f 20 74 68 65 20 73 74 72 69 6e 67  IV to the string
4870: 2c 20 61 6e 64 20 61 73 6b 69 6e 67 20 66 6f 72  , and asking for
4880: 0d 0a 20 2a 20 74 68 65 20 69 6e 6e 65 72 48 54  .. * the innerHT
4890: 4d 4c 20 62 61 63 6b 2e 0d 0a 20 2a 20 40 70 61  ML back... * @pa
48a0: 72 61 6d 20 63 6f 6d 6d 65 6e 74 20 6f 70 74 69  ram comment opti
48b0: 6f 6e 61 6c 2c 20 64 69 73 70 6c 61 79 65 64 20  onal, displayed 
48c0: 69 6e 20 74 68 65 20 63 61 73 65 20 6f 66 20 66  in the case of f
48d0: 61 69 6c 75 72 65 0d 0a 20 2a 20 40 70 61 72 61  ailure.. * @para
48e0: 6d 20 76 61 6c 75 65 31 20 74 68 65 20 65 78 70  m value1 the exp
48f0: 65 63 74 65 64 20 48 54 4d 4c 20 73 74 72 69 6e  ected HTML strin
4900: 67 0d 0a 20 2a 20 40 70 61 72 61 6d 20 76 61 6c  g.. * @param val
4910: 75 65 32 20 74 68 65 20 61 63 74 75 61 6c 20 48  ue2 the actual H
4920: 54 4d 4c 20 73 74 72 69 6e 67 0d 0a 20 2a 20 40  TML string.. * @
4930: 74 68 72 6f 77 73 20 4a 73 55 6e 69 74 2e 46 61  throws JsUnit.Fa
4940: 69 6c 75 72 65 20 69 66 20 74 68 65 20 73 74 61  ilure if the sta
4950: 6e 64 61 72 64 69 7a 65 64 20 61 63 74 75 61 6c  ndardized actual
4960: 20 76 61 6c 75 65 20 64 6f 65 73 20 6e 6f 74 20   value does not 
4970: 65 71 75 61 6c 20 74 68 65 20 73 74 61 6e 64 61  equal the standa
4980: 72 64 69 7a 65 64 20 65 78 70 65 63 74 65 64 20  rdized expected 
4990: 76 61 6c 75 65 0d 0a 20 2a 20 40 74 68 72 6f 77  value.. * @throw
49a0: 73 20 4a 73 55 6e 69 74 49 6e 76 61 6c 69 64 41  s JsUnitInvalidA
49b0: 73 73 65 72 74 69 6f 6e 41 72 67 75 6d 65 6e 74  ssertionArgument
49c0: 20 69 66 20 61 6e 20 69 6e 63 6f 72 72 65 63 74   if an incorrect
49d0: 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d   number of argum
49e0: 65 6e 74 73 20 69 73 20 70 61 73 73 65 64 0d 0a  ents is passed..
49f0: 20 2a 2f 0d 0a 66 75 6e 63 74 69 6f 6e 20 61 73   */..function as
4a00: 73 65 72 74 48 54 4d 4c 45 71 75 61 6c 73 28 29  sertHTMLEquals()
4a10: 20 7b 0d 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2f   {..    ..    //
4a20: 53 6e 65 67 6f 70 61 74 2e 0d 0a 20 20 20 20 4a  Snegopat...    J
4a30: 73 55 6e 69 74 2e 65 72 72 6f 72 28 22 61 73 73  sUnit.error("ass
4a40: 65 72 74 48 54 4d 4c 45 71 75 61 6c 73 28 29 20  ertHTMLEquals() 
4a50: d0 bd d0 b5 20 d0 bf d0 be d0 b4 d0 b4 d0 b5 d1  .... ...........
4a60: 80 d0 b6 d0 b8 d0 b2 d0 b0 d0 b5 d1 82 d1 81 d1  ................
4a70: 8f 20 d0 b2 20 d0 a1 d0 bd d0 b5 d0 b3 d0 be d0  . .. ...........
4a80: bf d0 b0 d1 82 d0 b5 2e 22 29 3b 0d 0a 20 20 20  ........");..   
4a90: 20 0d 0a 20 20 20 20 2f 2f 4a 73 55 6e 69 74 2e   ..    //JsUnit.
4aa0: 5f 76 61 6c 69 64 61 74 65 41 72 67 75 6d 65 6e  _validateArgumen
4ab0: 74 73 28 32 2c 20 61 72 67 75 6d 65 6e 74 73 29  ts(2, arguments)
4ac0: 3b 0d 0a 20 20 20 20 2f 2f 76 61 72 20 76 61 72  ;..    //var var
4ad0: 31 20 3d 20 4a 73 55 6e 69 74 2e 5f 6e 6f 6e 43  1 = JsUnit._nonC
4ae0: 6f 6d 6d 65 6e 74 41 72 67 28 31 2c 20 32 2c 20  ommentArg(1, 2, 
4af0: 61 72 67 75 6d 65 6e 74 73 29 3b 0d 0a 20 20 20  arguments);..   
4b00: 20 2f 2f 76 61 72 20 76 61 72 32 20 3d 20 4a 73   //var var2 = Js
4b10: 55 6e 69 74 2e 5f 6e 6f 6e 43 6f 6d 6d 65 6e 74  Unit._nonComment
4b20: 41 72 67 28 32 2c 20 32 2c 20 61 72 67 75 6d 65  Arg(2, 2, argume
4b30: 6e 74 73 29 3b 0d 0a 20 20 20 20 2f 2f 76 61 72  nts);..    //var
4b40: 20 76 61 72 31 53 74 61 6e 64 61 72 64 69 7a 65   var1Standardize
4b50: 64 20 3d 20 4a 73 55 6e 69 74 2e 55 74 69 6c 2e  d = JsUnit.Util.
4b60: 73 74 61 6e 64 61 72 64 69 7a 65 48 54 4d 4c 28  standardizeHTML(
4b70: 76 61 72 31 29 3b 0d 0a 20 20 20 20 2f 2f 76 61  var1);..    //va
4b80: 72 20 76 61 72 32 53 74 61 6e 64 61 72 64 69 7a  r var2Standardiz
4b90: 65 64 20 3d 20 4a 73 55 6e 69 74 2e 55 74 69 6c  ed = JsUnit.Util
4ba0: 2e 73 74 61 6e 64 61 72 64 69 7a 65 48 54 4d 4c  .standardizeHTML
4bb0: 28 76 61 72 32 29 3b 0d 0a 0d 0a 20 20 20 20 2f  (var2);....    /
4bc0: 2f 4a 73 55 6e 69 74 2e 5f 61 73 73 65 72 74 28  /JsUnit._assert(
4bd0: 4a 73 55 6e 69 74 2e 5f 63 6f 6d 6d 65 6e 74 41  JsUnit._commentA
4be0: 72 67 28 32 2c 20 61 72 67 75 6d 65 6e 74 73 29  rg(2, arguments)
4bf0: 2c 20 76 61 72 31 53 74 61 6e 64 61 72 64 69 7a  , var1Standardiz
4c00: 65 64 20 3d 3d 3d 20 76 61 72 32 53 74 61 6e 64  ed === var2Stand
4c10: 61 72 64 69 7a 65 64 2c 20 27 45 78 70 65 63 74  ardized, 'Expect
4c20: 65 64 20 27 20 2b 20 4a 73 55 6e 69 74 2e 5f 64  ed ' + JsUnit._d
4c30: 69 73 70 6c 61 79 53 74 72 69 6e 67 46 6f 72 56  isplayStringForV
4c40: 61 6c 75 65 28 76 61 72 31 53 74 61 6e 64 61 72  alue(var1Standar
4c50: 64 69 7a 65 64 29 20 2b 20 27 20 62 75 74 20 77  dized) + ' but w
4c60: 61 73 20 27 20 2b 20 4a 73 55 6e 69 74 2e 5f 64  as ' + JsUnit._d
4c70: 69 73 70 6c 61 79 53 74 72 69 6e 67 46 6f 72 56  isplayStringForV
4c80: 61 6c 75 65 28 76 61 72 32 53 74 61 6e 64 61 72  alue(var2Standar
4c90: 64 69 7a 65 64 29 29 3b 0d 0a 20 20 20 20 2f 2f  dized));..    //
4ca0: 2f 2f 2f 53 6e 65 67 6f 70 61 74 2e 0d 0a 7d 0d  ///Snegopat...}.
4cb0: 0a 0d 0a 2f 2a 2a 0d 0a 20 2a 20 43 68 65 63 6b  .../**.. * Check
4cc0: 73 20 74 68 61 74 20 61 20 68 61 73 68 20 69 73  s that a hash is
4cd0: 20 68 61 73 20 74 68 65 20 73 61 6d 65 20 63 6f   has the same co
4ce0: 6e 74 65 6e 74 73 20 61 73 20 61 6e 6f 74 68 65  ntents as anothe
4cf0: 72 20 62 79 20 69 74 65 72 61 74 69 6e 67 20 6f  r by iterating o
4d00: 76 65 72 20 74 68 65 20 65 78 70 65 63 74 65 64  ver the expected
4d10: 20 68 61 73 68 20 61 6e 64 20 63 68 65 63 6b 69   hash and checki
4d20: 6e 67 20 74 68 61 74 20 65 61 63 68 0d 0a 20 2a  ng that each.. *
4d30: 20 6b 65 79 27 73 20 76 61 6c 75 65 20 69 73 20   key's value is 
4d40: 70 72 65 73 65 6e 74 20 69 6e 20 74 68 65 20 61  present in the a
4d50: 63 74 75 61 6c 20 68 61 73 68 20 61 6e 64 20 63  ctual hash and c
4d60: 61 6c 6c 69 6e 67 20 61 73 73 65 72 74 45 71 75  alling assertEqu
4d70: 61 6c 73 20 6f 6e 20 74 68 65 20 74 77 6f 20 76  als on the two v
4d80: 61 6c 75 65 73 2c 20 61 6e 64 20 74 68 65 6e 20  alues, and then 
4d90: 63 68 65 63 6b 69 6e 67 20 74 68 61 74 20 74 68  checking that th
4da0: 65 72 65 20 69 73 0d 0a 20 2a 20 6e 6f 20 6b 65  ere is.. * no ke
4db0: 79 20 69 6e 20 74 68 65 20 61 63 74 75 61 6c 20  y in the actual 
4dc0: 68 61 73 68 20 74 68 61 74 20 69 73 6e 27 74 20  hash that isn't 
4dd0: 70 72 65 73 65 6e 74 20 69 6e 20 74 68 65 20 65  present in the e
4de0: 78 70 65 63 74 65 64 20 68 61 73 68 2e 0d 0a 20  xpected hash... 
4df0: 2a 20 40 70 61 72 61 6d 20 63 6f 6d 6d 65 6e 74  * @param comment
4e00: 20 6f 70 74 69 6f 6e 61 6c 2c 20 64 69 73 70 6c   optional, displ
4e10: 61 79 65 64 20 69 6e 20 74 68 65 20 63 61 73 65  ayed in the case
4e20: 20 6f 66 20 66 61 69 6c 75 72 65 0d 0a 20 2a 20   of failure.. * 
4e30: 40 70 61 72 61 6d 20 76 61 6c 75 65 20 74 68 65  @param value the
4e40: 20 65 78 70 65 63 74 65 64 20 68 61 73 68 0d 0a   expected hash..
4e50: 20 2a 20 40 70 61 72 61 6d 20 76 61 6c 75 65 20   * @param value 
4e60: 74 68 65 20 61 63 74 75 61 6c 20 68 61 73 68 0d  the actual hash.
4e70: 0a 20 2a 20 40 74 68 72 6f 77 73 20 4a 73 55 6e  . * @throws JsUn
4e80: 69 74 2e 46 61 69 6c 75 72 65 20 69 66 20 74 68  it.Failure if th
4e90: 65 20 61 63 74 75 61 6c 20 68 61 73 68 20 64 6f  e actual hash do
4ea0: 65 73 20 6e 6f 74 20 65 76 61 6c 75 61 74 65 20  es not evaluate 
4eb0: 74 6f 20 74 72 75 65 0d 0a 20 2a 20 40 74 68 72  to true.. * @thr
4ec0: 6f 77 73 20 4a 73 55 6e 69 74 49 6e 76 61 6c 69  ows JsUnitInvali
4ed0: 64 41 73 73 65 72 74 69 6f 6e 41 72 67 75 6d 65  dAssertionArgume
4ee0: 6e 74 20 69 66 20 61 6e 20 69 6e 63 6f 72 72 65  nt if an incorre
4ef0: 63 74 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67  ct number of arg
4f00: 75 6d 65 6e 74 73 20 69 73 20 70 61 73 73 65 64  uments is passed
4f10: 0d 0a 20 2a 2f 0d 0a 66 75 6e 63 74 69 6f 6e 20  .. */..function 
4f20: 61 73 73 65 72 74 48 61 73 68 45 71 75 61 6c 73  assertHashEquals
4f30: 28 29 20 7b 0d 0a 20 20 20 20 4a 73 55 6e 69 74  () {..    JsUnit
4f40: 2e 5f 76 61 6c 69 64 61 74 65 41 72 67 75 6d 65  ._validateArgume
4f50: 6e 74 73 28 32 2c 20 61 72 67 75 6d 65 6e 74 73  nts(2, arguments
4f60: 29 3b 0d 0a 20 20 20 20 76 61 72 20 76 61 72 31  );..    var var1
4f70: 20 3d 20 4a 73 55 6e 69 74 2e 5f 6e 6f 6e 43 6f   = JsUnit._nonCo
4f80: 6d 6d 65 6e 74 41 72 67 28 31 2c 20 32 2c 20 61  mmentArg(1, 2, a
4f90: 72 67 75 6d 65 6e 74 73 29 3b 0d 0a 20 20 20 20  rguments);..    
4fa0: 76 61 72 20 76 61 72 32 20 3d 20 4a 73 55 6e 69  var var2 = JsUni
4fb0: 74 2e 5f 6e 6f 6e 43 6f 6d 6d 65 6e 74 41 72 67  t._nonCommentArg
4fc0: 28 32 2c 20 32 2c 20 61 72 67 75 6d 65 6e 74 73  (2, 2, arguments
4fd0: 29 3b 0d 0a 20 20 20 20 66 6f 72 20 28 76 61 72  );..    for (var
4fe0: 20 6b 65 79 20 69 6e 20 76 61 72 31 29 20 7b 0d   key in var1) {.
4ff0: 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 4e  .        assertN
5000: 6f 74 55 6e 64 65 66 69 6e 65 64 28 22 45 78 70  otUndefined("Exp
5010: 65 63 74 65 64 20 68 61 73 68 20 68 61 64 20 6b  ected hash had k
5020: 65 79 20 22 20 2b 20 6b 65 79 20 2b 20 22 20 74  ey " + key + " t
5030: 68 61 74 20 77 61 73 20 6e 6f 74 20 66 6f 75 6e  hat was not foun
5040: 64 22 2c 20 76 61 72 32 5b 6b 65 79 5d 29 3b 0d  d", var2[key]);.
5050: 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 45  .        assertE
5060: 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20  quals(..        
5070: 20 20 20 20 22 56 61 6c 75 65 20 66 6f 72 20 6b      "Value for k
5080: 65 79 20 22 20 2b 20 6b 65 79 20 2b 20 22 20 6d  ey " + key + " m
5090: 69 73 6d 61 74 63 68 20 2d 20 65 78 70 65 63 74  ismatch - expect
50a0: 65 64 20 3d 20 22 20 2b 20 76 61 72 31 5b 6b 65  ed = " + var1[ke
50b0: 79 5d 20 2b 20 22 2c 20 61 63 74 75 61 6c 20 3d  y] + ", actual =
50c0: 20 22 20 2b 20 76 61 72 32 5b 6b 65 79 5d 2c 0d   " + var2[key],.
50d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72  .            var
50e0: 31 5b 6b 65 79 5d 2c 20 76 61 72 32 5b 6b 65 79  1[key], var2[key
50f0: 5d 0d 0a 20 20 20 20 20 20 20 20 29 3b 0d 0a 20  ]..        );.. 
5100: 20 20 20 7d 0d 0a 20 20 20 20 66 6f 72 20 28 76     }..    for (v
5110: 61 72 20 6b 65 79 20 69 6e 20 76 61 72 32 29 20  ar key in var2) 
5120: 7b 0d 0a 20 20 20 20 20 20 20 20 61 73 73 65 72  {..        asser
5130: 74 4e 6f 74 55 6e 64 65 66 69 6e 65 64 28 22 41  tNotUndefined("A
5140: 63 74 75 61 6c 20 68 61 73 68 20 68 61 64 20 6b  ctual hash had k
5150: 65 79 20 22 20 2b 20 6b 65 79 20 2b 20 22 20 74  ey " + key + " t
5160: 68 61 74 20 77 61 73 20 6e 6f 74 20 65 78 70 65  hat was not expe
5170: 63 74 65 64 22 2c 20 76 61 72 31 5b 6b 65 79 5d  cted", var1[key]
5180: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 7d 0d 0a 0d 0a  );..    }..}....
5190: 2f 2a 2a 0d 0a 20 2a 20 43 68 65 63 6b 73 20 74  /**.. * Checks t
51a0: 68 61 74 20 74 77 6f 20 76 61 6c 75 65 20 61 72  hat two value ar
51b0: 65 20 77 69 74 68 69 6e 20 61 20 74 6f 6c 65 72  e within a toler
51c0: 61 6e 63 65 20 6f 66 20 6f 6e 65 20 61 6e 6f 74  ance of one anot
51d0: 68 65 72 0d 0a 20 2a 20 40 70 61 72 61 6d 20 63  her.. * @param c
51e0: 6f 6d 6d 65 6e 74 20 6f 70 74 69 6f 6e 61 6c 2c  omment optional,
51f0: 20 64 69 73 70 6c 61 79 65 64 20 69 6e 20 74 68   displayed in th
5200: 65 20 63 61 73 65 20 6f 66 20 66 61 69 6c 75 72  e case of failur
5210: 65 0d 0a 20 2a 20 40 70 61 72 61 6d 20 76 61 6c  e.. * @param val
5220: 75 65 31 20 61 20 76 61 6c 75 65 0d 0a 20 2a 20  ue1 a value.. * 
5230: 40 70 61 72 61 6d 20 76 61 6c 75 65 31 20 61 6e  @param value1 an
5240: 6f 74 68 65 72 20 76 61 6c 75 65 0d 0a 20 2a 20  other value.. * 
5250: 40 70 61 72 61 6d 20 74 6f 6c 65 72 61 6e 63 65  @param tolerance
5260: 20 74 68 65 20 74 6f 6c 65 72 61 6e 63 65 0d 0a   the tolerance..
5270: 20 2a 20 40 74 68 72 6f 77 73 20 4a 73 55 6e 69   * @throws JsUni
5280: 74 2e 46 61 69 6c 75 72 65 20 69 66 20 74 68 65  t.Failure if the
5290: 20 74 77 6f 20 76 61 6c 75 65 73 20 61 72 65 20   two values are 
52a0: 6e 6f 74 20 77 69 74 68 69 6e 20 74 6f 6c 65 72  not within toler
52b0: 61 6e 63 65 20 6f 66 20 65 61 63 68 20 6f 74 68  ance of each oth
52c0: 65 72 0d 0a 20 2a 20 40 74 68 72 6f 77 73 20 4a  er.. * @throws J
52d0: 73 55 6e 69 74 49 6e 76 61 6c 69 64 41 73 73 65  sUnitInvalidAsse
52e0: 72 74 69 6f 6e 41 72 67 75 6d 65 6e 74 20 69 66  rtionArgument if
52f0: 20 61 6e 20 69 6e 63 6f 72 72 65 63 74 20 6e 75   an incorrect nu
5300: 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74  mber of argument
5310: 73 20 69 73 20 70 61 73 73 65 64 0d 0a 20 2a 2f  s is passed.. */
5320: 0d 0a 66 75 6e 63 74 69 6f 6e 20 61 73 73 65 72  ..function asser
5330: 74 52 6f 75 67 68 6c 79 45 71 75 61 6c 73 28 29  tRoughlyEquals()
5340: 20 7b 0d 0a 20 20 20 20 4a 73 55 6e 69 74 2e 5f   {..    JsUnit._
5350: 76 61 6c 69 64 61 74 65 41 72 67 75 6d 65 6e 74  validateArgument
5360: 73 28 33 2c 20 61 72 67 75 6d 65 6e 74 73 29 3b  s(3, arguments);
5370: 0d 0a 20 20 20 20 76 61 72 20 65 78 70 65 63 74  ..    var expect
5380: 65 64 20 3d 20 4a 73 55 6e 69 74 2e 5f 6e 6f 6e  ed = JsUnit._non
5390: 43 6f 6d 6d 65 6e 74 41 72 67 28 31 2c 20 33 2c  CommentArg(1, 3,
53a0: 20 61 72 67 75 6d 65 6e 74 73 29 3b 0d 0a 20 20   arguments);..  
53b0: 20 20 76 61 72 20 61 63 74 75 61 6c 20 3d 20 4a    var actual = J
53c0: 73 55 6e 69 74 2e 5f 6e 6f 6e 43 6f 6d 6d 65 6e  sUnit._nonCommen
53d0: 74 41 72 67 28 32 2c 20 33 2c 20 61 72 67 75 6d  tArg(2, 3, argum
53e0: 65 6e 74 73 29 3b 0d 0a 20 20 20 20 76 61 72 20  ents);..    var 
53f0: 74 6f 6c 65 72 61 6e 63 65 20 3d 20 4a 73 55 6e  tolerance = JsUn
5400: 69 74 2e 5f 6e 6f 6e 43 6f 6d 6d 65 6e 74 41 72  it._nonCommentAr
5410: 67 28 33 2c 20 33 2c 20 61 72 67 75 6d 65 6e 74  g(3, 3, argument
5420: 73 29 3b 0d 0a 20 20 20 20 61 73 73 65 72 74 54  s);..    assertT
5430: 72 75 65 28 0d 0a 20 20 20 20 20 20 20 20 22 45  rue(..        "E
5440: 78 70 65 63 74 65 64 20 22 20 2b 20 65 78 70 65  xpected " + expe
5450: 63 74 65 64 20 2b 20 22 2c 20 62 75 74 20 67 6f  cted + ", but go
5460: 74 20 22 20 2b 20 61 63 74 75 61 6c 20 2b 20 22  t " + actual + "
5470: 20 77 68 69 63 68 20 77 61 73 20 6d 6f 72 65 20   which was more 
5480: 74 68 61 6e 20 22 20 2b 20 74 6f 6c 65 72 61 6e  than " + toleran
5490: 63 65 20 2b 20 22 20 61 77 61 79 22 2c 0d 0a 20  ce + " away",.. 
54a0: 20 20 20 20 20 20 20 4d 61 74 68 2e 61 62 73 28         Math.abs(
54b0: 65 78 70 65 63 74 65 64 20 2d 20 61 63 74 75 61  expected - actua
54c0: 6c 29 20 3c 20 74 6f 6c 65 72 61 6e 63 65 0d 0a  l) < tolerance..
54d0: 20 20 20 20 29 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a      );..}..../**
54e0: 0d 0a 20 2a 20 43 68 65 63 6b 73 20 74 68 61 74  .. * Checks that
54f0: 20 61 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 63 6f   a collection co
5500: 6e 74 61 69 6e 73 20 61 20 76 61 6c 75 65 20 62  ntains a value b
5510: 79 20 63 68 65 63 6b 69 6e 67 20 74 68 61 74 20  y checking that 
5520: 63 6f 6c 6c 65 63 74 69 6f 6e 2e 69 6e 64 65 78  collection.index
5530: 4f 66 28 76 61 6c 75 65 29 20 69 73 20 6e 6f 74  Of(value) is not
5540: 20 2d 31 0d 0a 20 2a 20 40 70 61 72 61 6d 20 63   -1.. * @param c
5550: 6f 6d 6d 65 6e 74 20 6f 70 74 69 6f 6e 61 6c 2c  omment optional,
5560: 20 64 69 73 70 6c 61 79 65 64 20 69 6e 20 74 68   displayed in th
5570: 65 20 63 61 73 65 20 6f 66 20 66 61 69 6c 75 72  e case of failur
5580: 65 0d 0a 20 2a 20 40 70 61 72 61 6d 20 63 6f 6c  e.. * @param col
5590: 6c 65 63 74 69 6f 6e 20 74 68 65 20 63 6f 6c 6c  lection the coll
55a0: 65 63 74 69 6f 6e 0d 0a 20 2a 20 40 70 61 72 61  ection.. * @para
55b0: 6d 20 76 61 6c 75 65 20 74 68 65 20 76 61 6c 75  m value the valu
55c0: 65 0d 0a 20 2a 20 40 74 68 72 6f 77 73 20 4a 73  e.. * @throws Js
55d0: 55 6e 69 74 2e 46 61 69 6c 75 72 65 20 69 66 20  Unit.Failure if 
55e0: 74 68 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 64  the collection d
55f0: 6f 65 73 20 6e 6f 74 20 63 6f 6e 74 61 69 6e 20  oes not contain 
5600: 74 68 65 20 76 61 6c 75 65 0d 0a 20 2a 20 40 74  the value.. * @t
5610: 68 72 6f 77 73 20 4a 73 55 6e 69 74 49 6e 76 61  hrows JsUnitInva
5620: 6c 69 64 41 73 73 65 72 74 69 6f 6e 41 72 67 75  lidAssertionArgu
5630: 6d 65 6e 74 20 69 66 20 61 6e 20 69 6e 63 6f 72  ment if an incor
5640: 72 65 63 74 20 6e 75 6d 62 65 72 20 6f 66 20 61  rect number of a
5650: 72 67 75 6d 65 6e 74 73 20 61 72 65 20 70 61 73  rguments are pas
5660: 73 65 64 0d 0a 20 2a 2f 0d 0a 66 75 6e 63 74 69  sed.. */..functi
5670: 6f 6e 20 61 73 73 65 72 74 43 6f 6e 74 61 69 6e  on assertContain
5680: 73 28 29 20 7b 0d 0a 20 20 20 20 4a 73 55 6e 69  s() {..    JsUni
5690: 74 2e 5f 76 61 6c 69 64 61 74 65 41 72 67 75 6d  t._validateArgum
56a0: 65 6e 74 73 28 32 2c 20 61 72 67 75 6d 65 6e 74  ents(2, argument
56b0: 73 29 3b 0d 0a 20 20 20 20 76 61 72 20 76 61 6c  s);..    var val
56c0: 75 65 20 3d 20 4a 73 55 6e 69 74 2e 5f 6e 6f 6e  ue = JsUnit._non
56d0: 43 6f 6d 6d 65 6e 74 41 72 67 28 31 2c 20 32 2c  CommentArg(1, 2,
56e0: 20 61 72 67 75 6d 65 6e 74 73 29 3b 0d 0a 20 20   arguments);..  
56f0: 20 20 76 61 72 20 63 6f 6c 6c 65 63 74 69 6f 6e    var collection
5700: 20 3d 20 4a 73 55 6e 69 74 2e 5f 6e 6f 6e 43 6f   = JsUnit._nonCo
5710: 6d 6d 65 6e 74 41 72 67 28 32 2c 20 32 2c 20 61  mmentArg(2, 2, a
5720: 72 67 75 6d 65 6e 74 73 29 3b 0d 0a 20 20 20 20  rguments);..    
5730: 61 73 73 65 72 74 54 72 75 65 28 0d 0a 20 20 20  assertTrue(..   
5740: 20 20 20 20 20 22 45 78 70 65 63 74 65 64 20 27       "Expected '
5750: 22 20 2b 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 2b  " + collection +
5760: 20 22 27 20 74 6f 20 63 6f 6e 74 61 69 6e 20 27   "' to contain '
5770: 22 20 2b 20 76 61 6c 75 65 20 2b 20 22 27 22 2c  " + value + "'",
5780: 0d 0a 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63  ..        collec
5790: 74 69 6f 6e 2e 69 6e 64 65 78 4f 66 28 76 61 6c  tion.indexOf(val
57a0: 75 65 29 20 21 3d 20 2d 31 0d 0a 20 20 20 20 29  ue) != -1..    )
57b0: 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a 0d 0a 20 2a 20  ;..}..../**.. * 
57c0: 43 68 65 63 6b 73 20 74 68 61 74 20 74 77 6f 20  Checks that two 
57d0: 61 72 72 61 79 73 20 68 61 76 65 20 74 68 65 20  arrays have the 
57e0: 73 61 6d 65 20 63 6f 6e 74 65 6e 74 73 2c 20 69  same contents, i
57f0: 67 6e 6f 72 69 6e 67 20 74 68 65 20 6f 72 64 65  gnoring the orde
5800: 72 20 6f 66 20 74 68 65 20 63 6f 6e 74 65 6e 74  r of the content
5810: 73 0d 0a 20 2a 20 40 70 61 72 61 6d 20 63 6f 6d  s.. * @param com
5820: 6d 65 6e 74 20 6f 70 74 69 6f 6e 61 6c 2c 20 64  ment optional, d
5830: 69 73 70 6c 61 79 65 64 20 69 6e 20 74 68 65 20  isplayed in the 
5840: 63 61 73 65 20 6f 66 20 66 61 69 6c 75 72 65 0d  case of failure.
5850: 0a 20 2a 20 40 70 61 72 61 6d 20 61 72 72 61 79  . * @param array
5860: 31 20 66 69 72 73 74 20 61 72 72 61 79 0d 0a 20  1 first array.. 
5870: 2a 20 40 70 61 72 61 6d 20 61 72 72 61 79 32 20  * @param array2 
5880: 73 65 63 6f 6e 64 20 61 72 72 61 79 0d 0a 20 2a  second array.. *
5890: 20 40 74 68 72 6f 77 73 20 4a 73 55 6e 69 74 2e   @throws JsUnit.
58a0: 46 61 69 6c 75 72 65 20 69 66 20 74 68 65 20 74  Failure if the t
58b0: 77 6f 20 61 72 72 61 79 73 20 63 6f 6e 74 61 69  wo arrays contai
58c0: 6e 20 64 69 66 66 65 72 65 6e 74 20 63 6f 6e 74  n different cont
58d0: 65 6e 74 73 0d 0a 20 2a 20 40 74 68 72 6f 77 73  ents.. * @throws
58e0: 20 4a 73 55 6e 69 74 49 6e 76 61 6c 69 64 41 73   JsUnitInvalidAs
58f0: 73 65 72 74 69 6f 6e 41 72 67 75 6d 65 6e 74 20  sertionArgument 
5900: 69 66 20 61 6e 20 69 6e 63 6f 72 72 65 63 74 20  if an incorrect 
5910: 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65  number of argume
5920: 6e 74 73 20 61 72 65 20 70 61 73 73 65 64 0d 0a  nts are passed..
5930: 20 2a 2f 0d 0a 66 75 6e 63 74 69 6f 6e 20 61 73   */..function as
5940: 73 65 72 74 41 72 72 61 79 45 71 75 61 6c 73 49  sertArrayEqualsI
5950: 67 6e 6f 72 69 6e 67 4f 72 64 65 72 28 29 20 7b  gnoringOrder() {
5960: 0d 0a 20 20 20 20 4a 73 55 6e 69 74 2e 5f 76 61  ..    JsUnit._va
5970: 6c 69 64 61 74 65 41 72 67 75 6d 65 6e 74 73 28  lidateArguments(
5980: 32 2c 20 61 72 67 75 6d 65 6e 74 73 29 3b 0d 0a  2, arguments);..
5990: 20 20 20 20 76 61 72 20 76 61 72 31 20 3d 20 4a      var var1 = J
59a0: 73 55 6e 69 74 2e 5f 6e 6f 6e 43 6f 6d 6d 65 6e  sUnit._nonCommen
59b0: 74 41 72 67 28 31 2c 20 32 2c 20 61 72 67 75 6d  tArg(1, 2, argum
59c0: 65 6e 74 73 29 3b 0d 0a 20 20 20 20 76 61 72 20  ents);..    var 
59d0: 76 61 72 32 20 3d 20 4a 73 55 6e 69 74 2e 5f 6e  var2 = JsUnit._n
59e0: 6f 6e 43 6f 6d 6d 65 6e 74 41 72 67 28 32 2c 20  onCommentArg(2, 
59f0: 32 2c 20 61 72 67 75 6d 65 6e 74 73 29 3b 0d 0a  2, arguments);..
5a00: 0d 0a 20 20 20 20 76 61 72 20 6e 6f 74 45 71 75  ..    var notEqu
5a10: 61 6c 73 4d 65 73 73 61 67 65 20 3d 20 22 45 78  alsMessage = "Ex
5a20: 70 65 63 74 65 64 20 61 72 72 61 79 73 20 22 20  pected arrays " 
5a30: 2b 20 4a 73 55 6e 69 74 2e 5f 64 69 73 70 6c 61  + JsUnit._displa
5a40: 79 53 74 72 69 6e 67 46 6f 72 56 61 6c 75 65 28  yStringForValue(
5a50: 76 61 72 31 29 20 2b 20 22 20 61 6e 64 20 22 20  var1) + " and " 
5a60: 2b 20 4a 73 55 6e 69 74 2e 5f 64 69 73 70 6c 61  + JsUnit._displa
5a70: 79 53 74 72 69 6e 67 46 6f 72 56 61 6c 75 65 28  yStringForValue(
5a80: 76 61 72 32 29 20 2b 20 22 20 74 6f 20 62 65 20  var2) + " to be 
5a90: 65 71 75 61 6c 20 28 69 67 6e 6f 72 69 6e 67 20  equal (ignoring 
5aa0: 6f 72 64 65 72 29 22 3b 0d 0a 20 20 20 20 76 61  order)";..    va
5ab0: 72 20 6e 6f 74 41 72 72 61 79 73 4d 65 73 73 61  r notArraysMessa
5ac0: 67 65 20 3d 20 22 45 78 70 65 63 74 65 64 20 61  ge = "Expected a
5ad0: 72 67 75 6d 65 6e 74 73 20 22 20 2b 20 4a 73 55  rguments " + JsU
5ae0: 6e 69 74 2e 5f 64 69 73 70 6c 61 79 53 74 72 69  nit._displayStri
5af0: 6e 67 46 6f 72 56 61 6c 75 65 28 76 61 72 31 29  ngForValue(var1)
5b00: 20 2b 20 22 20 61 6e 64 20 22 20 2b 20 4a 73 55   + " and " + JsU
5b10: 6e 69 74 2e 5f 64 69 73 70 6c 61 79 53 74 72 69  nit._displayStri
5b20: 6e 67 46 6f 72 56 61 6c 75 65 28 76 61 72 32 29  ngForValue(var2)
5b30: 20 2b 20 22 20 74 6f 20 62 65 20 61 72 72 61 79   + " to be array
5b40: 73 22 3b 0d 0a 0d 0a 20 20 20 20 4a 73 55 6e 69  s";....    JsUni
5b50: 74 2e 5f 61 73 73 65 72 74 28 4a 73 55 6e 69 74  t._assert(JsUnit
5b60: 2e 5f 63 6f 6d 6d 65 6e 74 41 72 67 28 32 2c 20  ._commentArg(2, 
5b70: 61 72 67 75 6d 65 6e 74 73 29 2c 20 4a 73 55 6e  arguments), JsUn
5b80: 69 74 2e 5f 63 68 65 63 6b 4e 6f 74 4e 75 6c 6c  it._checkNotNull
5b90: 28 76 61 72 31 29 2c 20 6e 6f 74 45 71 75 61 6c  (var1), notEqual
5ba0: 73 4d 65 73 73 61 67 65 29 3b 0d 0a 20 20 20 20  sMessage);..    
5bb0: 4a 73 55 6e 69 74 2e 5f 61 73 73 65 72 74 28 4a  JsUnit._assert(J
5bc0: 73 55 6e 69 74 2e 5f 63 6f 6d 6d 65 6e 74 41 72  sUnit._commentAr
5bd0: 67 28 32 2c 20 61 72 67 75 6d 65 6e 74 73 29 2c  g(2, arguments),
5be0: 20 4a 73 55 6e 69 74 2e 5f 63 68 65 63 6b 4e 6f   JsUnit._checkNo
5bf0: 74 4e 75 6c 6c 28 76 61 72 32 29 2c 20 6e 6f 74  tNull(var2), not
5c00: 45 71 75 61 6c 73 4d 65 73 73 61 67 65 29 3b 0d  EqualsMessage);.
5c10: 0a 0d 0a 20 20 20 20 4a 73 55 6e 69 74 2e 5f 61  ...    JsUnit._a
5c20: 73 73 65 72 74 28 4a 73 55 6e 69 74 2e 5f 63 6f  ssert(JsUnit._co
5c30: 6d 6d 65 6e 74 41 72 67 28 32 2c 20 61 72 67 75  mmentArg(2, argu
5c40: 6d 65 6e 74 73 29 2c 20 4a 73 55 6e 69 74 2e 5f  ments), JsUnit._
5c50: 63 68 65 63 6b 4e 6f 74 55 6e 64 65 66 69 6e 65  checkNotUndefine
5c60: 64 28 76 61 72 31 2e 6c 65 6e 67 74 68 29 2c 20  d(var1.length), 
5c70: 6e 6f 74 41 72 72 61 79 73 4d 65 73 73 61 67 65  notArraysMessage
5c80: 29 3b 0d 0a 20 20 20 20 4a 73 55 6e 69 74 2e 5f  );..    JsUnit._
5c90: 61 73 73 65 72 74 28 4a 73 55 6e 69 74 2e 5f 63  assert(JsUnit._c
5ca0: 6f 6d 6d 65 6e 74 41 72 67 28 32 2c 20 61 72 67  ommentArg(2, arg
5cb0: 75 6d 65 6e 74 73 29 2c 20 4a 73 55 6e 69 74 2e  uments), JsUnit.
5cc0: 5f 63 68 65 63 6b 4e 6f 74 55 6e 64 65 66 69 6e  _checkNotUndefin
5cd0: 65 64 28 76 61 72 31 2e 6a 6f 69 6e 29 2c 20 6e  ed(var1.join), n
5ce0: 6f 74 41 72 72 61 79 73 4d 65 73 73 61 67 65 29  otArraysMessage)
5cf0: 3b 0d 0a 20 20 20 20 4a 73 55 6e 69 74 2e 5f 61  ;..    JsUnit._a
5d00: 73 73 65 72 74 28 4a 73 55 6e 69 74 2e 5f 63 6f  ssert(JsUnit._co
5d10: 6d 6d 65 6e 74 41 72 67 28 32 2c 20 61 72 67 75  mmentArg(2, argu
5d20: 6d 65 6e 74 73 29 2c 20 4a 73 55 6e 69 74 2e 5f  ments), JsUnit._
5d30: 63 68 65 63 6b 4e 6f 74 55 6e 64 65 66 69 6e 65  checkNotUndefine
5d40: 64 28 76 61 72 32 2e 6c 65 6e 67 74 68 29 2c 20  d(var2.length), 
5d50: 6e 6f 74 41 72 72 61 79 73 4d 65 73 73 61 67 65  notArraysMessage
5d60: 29 3b 0d 0a 20 20 20 20 4a 73 55 6e 69 74 2e 5f  );..    JsUnit._
5d70: 61 73 73 65 72 74 28 4a 73 55 6e 69 74 2e 5f 63  assert(JsUnit._c
5d80: 6f 6d 6d 65 6e 74 41 72 67 28 32 2c 20 61 72 67  ommentArg(2, arg
5d90: 75 6d 65 6e 74 73 29 2c 20 4a 73 55 6e 69 74 2e  uments), JsUnit.
5da0: 5f 63 68 65 63 6b 4e 6f 74 55 6e 64 65 66 69 6e  _checkNotUndefin
5db0: 65 64 28 76 61 72 32 2e 6a 6f 69 6e 29 2c 20 6e  ed(var2.join), n
5dc0: 6f 74 41 72 72 61 79 73 4d 65 73 73 61 67 65 29  otArraysMessage)
5dd0: 3b 0d 0a 0d 0a 20 20 20 20 4a 73 55 6e 69 74 2e  ;....    JsUnit.
5de0: 5f 61 73 73 65 72 74 28 4a 73 55 6e 69 74 2e 5f  _assert(JsUnit._
5df0: 63 6f 6d 6d 65 6e 74 41 72 67 28 31 2c 20 61 72  commentArg(1, ar
5e00: 67 75 6d 65 6e 74 73 29 2c 20 4a 73 55 6e 69 74  guments), JsUnit
5e10: 2e 5f 63 68 65 63 6b 45 71 75 61 6c 73 28 76 61  ._checkEquals(va
5e20: 72 31 2e 6c 65 6e 67 74 68 2c 20 76 61 72 32 2e  r1.length, var2.
5e30: 6c 65 6e 67 74 68 29 2c 20 6e 6f 74 45 71 75 61  length), notEqua
5e40: 6c 73 4d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20  lsMessage);.... 
5e50: 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20     for (var i = 
5e60: 30 3b 20 69 20 3c 20 76 61 72 31 2e 6c 65 6e 67  0; i < var1.leng
5e70: 74 68 3b 20 69 2b 2b 29 20 7b 0d 0a 20 20 20 20  th; i++) {..    
5e80: 20 20 20 20 76 61 72 20 66 6f 75 6e 64 20 3d 20      var found = 
5e90: 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
5ea0: 66 6f 72 20 28 76 61 72 20 6a 20 3d 20 30 3b 20  for (var j = 0; 
5eb0: 6a 20 3c 20 76 61 72 32 2e 6c 65 6e 67 74 68 3b  j < var2.length;
5ec0: 20 6a 2b 2b 29 20 7b 0d 0a 20 20 20 20 20 20 20   j++) {..       
5ed0: 20 20 20 20 20 74 72 79 20 7b 0d 0a 20 20 20 20       try {..    
5ee0: 20 20 20 20 20 20 20 20 20 20 20 20 61 73 73 65              asse
5ef0: 72 74 4f 62 6a 65 63 74 45 71 75 61 6c 73 28 6e  rtObjectEquals(n
5f00: 6f 74 45 71 75 61 6c 73 4d 65 73 73 61 67 65 2c  otEqualsMessage,
5f10: 20 76 61 72 31 5b 69 5d 2c 20 76 61 72 32 5b 6a   var1[i], var2[j
5f20: 5d 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ]);..           
5f30: 20 20 20 20 20 66 6f 75 6e 64 20 3d 20 74 72 75       found = tru
5f40: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
5f50: 7d 20 63 61 74 63 68 20 28 69 67 6e 6f 72 65 64  } catch (ignored
5f60: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
5f70: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
5f80: 20 20 20 20 20 20 20 4a 73 55 6e 69 74 2e 5f 61         JsUnit._a
5f90: 73 73 65 72 74 28 4a 73 55 6e 69 74 2e 5f 63 6f  ssert(JsUnit._co
5fa0: 6d 6d 65 6e 74 41 72 67 28 32 2c 20 61 72 67 75  mmentArg(2, argu
5fb0: 6d 65 6e 74 73 29 2c 20 66 6f 75 6e 64 2c 20 6e  ments), found, n
5fc0: 6f 74 45 71 75 61 6c 73 4d 65 73 73 61 67 65 29  otEqualsMessage)
5fd0: 3b 0d 0a 20 20 20 20 7d 0d 0a 7d 0d 0a 0d 0a 2f  ;..    }..}..../
5fe0: 2a 2a 0d 0a 20 2a 20 53 79 6e 6f 6e 79 6d 20 66  **.. * Synonym f
5ff0: 6f 72 20 61 73 73 65 72 74 41 72 72 61 79 45 71  or assertArrayEq
6000: 75 61 6c 73 49 67 6e 6f 72 69 6e 67 4f 72 64 65  ualsIgnoringOrde
6010: 72 0d 0a 20 2a 20 40 73 65 65 20 23 61 73 73 65  r.. * @see #asse
6020: 72 74 41 72 72 61 79 45 71 75 61 6c 73 49 67 6e  rtArrayEqualsIgn
6030: 6f 72 69 6e 67 4f 72 64 65 72 0d 0a 20 2a 2f 0d  oringOrder.. */.
6040: 0a 66 75 6e 63 74 69 6f 6e 20 61 73 73 65 72 74  .function assert
6050: 45 71 75 61 6c 73 49 67 6e 6f 72 69 6e 67 4f 72  EqualsIgnoringOr
6060: 64 65 72 28 29 20 7b 0d 0a 20 20 20 20 4a 73 55  der() {..    JsU
6070: 6e 69 74 2e 5f 76 61 6c 69 64 61 74 65 41 72 67  nit._validateArg
6080: 75 6d 65 6e 74 73 28 32 2c 20 61 72 67 75 6d 65  uments(2, argume
6090: 6e 74 73 29 3b 0d 0a 20 20 20 20 61 73 73 65 72  nts);..    asser
60a0: 74 41 72 72 61 79 45 71 75 61 6c 73 49 67 6e 6f  tArrayEqualsIgno
60b0: 72 69 6e 67 4f 72 64 65 72 28 4a 73 55 6e 69 74  ringOrder(JsUnit
60c0: 2e 5f 63 6f 6d 6d 65 6e 74 41 72 67 28 32 2c 20  ._commentArg(2, 
60d0: 61 72 67 75 6d 65 6e 74 73 29 2c 20 4a 73 55 6e  arguments), JsUn
60e0: 69 74 2e 5f 6e 6f 6e 43 6f 6d 6d 65 6e 74 41 72  it._nonCommentAr
60f0: 67 28 31 2c 20 32 2c 20 61 72 67 75 6d 65 6e 74  g(1, 2, argument
6100: 73 29 2c 20 4a 73 55 6e 69 74 2e 5f 6e 6f 6e 43  s), JsUnit._nonC
6110: 6f 6d 6d 65 6e 74 41 72 67 28 32 2c 20 32 2c 20  ommentArg(2, 2, 
6120: 61 72 67 75 6d 65 6e 74 73 29 29 3b 0d 0a 7d 0d  arguments));..}.
6130: 0a 0d 0a 2f 2a 2a 0d 0a 20 2a 20 43 61 75 73 65  .../**.. * Cause
6140: 73 20 61 20 66 61 69 6c 75 72 65 0d 0a 20 2a 20  s a failure.. * 
6150: 40 70 61 72 61 6d 20 66 61 69 6c 75 72 65 4d 65  @param failureMe
6160: 73 73 61 67 65 20 74 68 65 20 6d 65 73 73 61 67  ssage the messag
6170: 65 20 66 6f 72 20 74 68 65 20 66 61 69 6c 75 72  e for the failur
6180: 65 0d 0a 20 2a 2f 0d 0a 66 75 6e 63 74 69 6f 6e  e.. */..function
6190: 20 66 61 69 6c 28 66 61 69 6c 75 72 65 4d 65 73   fail(failureMes
61a0: 73 61 67 65 29 20 7b 0d 0a 20 20 20 20 74 68 72  sage) {..    thr
61b0: 6f 77 20 6e 65 77 20 4a 73 55 6e 69 74 2e 46 61  ow new JsUnit.Fa
61c0: 69 6c 75 72 65 28 22 43 61 6c 6c 20 74 6f 20 66  ilure("Call to f
61d0: 61 69 6c 28 29 22 2c 20 66 61 69 6c 75 72 65 4d  ail()", failureM
61e0: 65 73 73 61 67 65 29 3b 0d 0a 7d 0d 0a 0d 0a 2f  essage);..}..../
61f0: 2a 2a 0d 0a 20 2a 20 43 61 75 73 65 73 20 61 6e  **.. * Causes an
6200: 20 65 72 72 6f 72 0d 0a 20 2a 20 40 70 61 72 61   error.. * @para
6210: 6d 20 65 72 72 6f 72 4d 65 73 73 61 67 65 20 74  m errorMessage t
6220: 68 65 20 6d 65 73 73 61 67 65 20 66 6f 72 20 74  he message for t
6230: 68 65 20 65 72 72 6f 72 0d 0a 20 2a 2f 0d 0a 66  he error.. */..f
6240: 75 6e 63 74 69 6f 6e 20 65 72 72 6f 72 28 65 72  unction error(er
6250: 72 6f 72 4d 65 73 73 61 67 65 29 20 7b 0d 0a 20  rorMessage) {.. 
6260: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4a 73 55     throw new JsU
6270: 6e 69 74 45 72 72 6f 72 28 65 72 72 6f 72 4d 65  nitError(errorMe
6280: 73 73 61 67 65 29 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a  ssage);..}..../*
6290: 2a 0d 0a 20 2a 20 40 63 6c 61 73 73 0d 0a 20 2a  *.. * @class.. *
62a0: 20 41 20 4a 73 55 6e 69 74 2e 46 61 69 6c 75 72   A JsUnit.Failur
62b0: 65 20 72 65 70 72 65 73 65 6e 74 73 20 61 6e 20  e represents an 
62c0: 61 73 73 65 72 74 69 6f 6e 20 66 61 69 6c 75 72  assertion failur
62d0: 65 20 28 6f 72 20 61 20 63 61 6c 6c 20 74 6f 20  e (or a call to 
62e0: 66 61 69 6c 28 29 29 20 64 75 72 69 6e 67 20 74  fail()) during t
62f0: 68 65 20 65 78 65 63 75 74 69 6f 6e 20 6f 66 20  he execution of 
6300: 61 20 54 65 73 74 20 46 75 6e 63 74 69 6f 6e 0d  a Test Function.
6310: 0a 20 2a 20 40 70 61 72 61 6d 20 63 6f 6d 6d 65  . * @param comme
6320: 6e 74 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 63  nt an optional c
6330: 6f 6d 6d 65 6e 74 20 61 62 6f 75 74 20 74 68 65  omment about the
6340: 20 66 61 69 6c 75 72 65 0d 0a 20 2a 20 40 70 61   failure.. * @pa
6350: 72 61 6d 20 6d 65 73 73 61 67 65 20 74 68 65 20  ram message the 
6360: 72 65 61 73 6f 6e 20 66 6f 72 20 74 68 65 20 66  reason for the f
6370: 61 69 6c 75 72 65 0d 0a 20 2a 2f 0d 0a 4a 73 55  ailure.. */..JsU
6380: 6e 69 74 2e 46 61 69 6c 75 72 65 20 3d 20 66 75  nit.Failure = fu
6390: 6e 63 74 69 6f 6e 28 63 6f 6d 6d 65 6e 74 2c 20  nction(comment, 
63a0: 6d 65 73 73 61 67 65 29 20 7b 0d 0a 20 20 20 20  message) {..    
63b0: 2f 2a 2a 0d 0a 20 20 20 20 20 2a 20 44 65 63 6c  /**..     * Decl
63c0: 61 72 61 74 69 6f 6e 20 74 68 61 74 20 74 68 69  aration that thi
63d0: 73 20 69 73 20 61 20 4a 73 55 6e 69 74 2e 46 61  s is a JsUnit.Fa
63e0: 69 6c 75 72 65 0d 0a 20 20 20 20 20 2a 20 40 69  ilure..     * @i
63f0: 67 6e 6f 72 65 0d 0a 20 20 20 20 20 2a 2f 0d 0a  gnore..     */..
6400: 20 20 20 20 74 68 69 73 2e 69 73 4a 73 55 6e 69      this.isJsUni
6410: 74 46 61 69 6c 75 72 65 20 3d 20 74 72 75 65 3b  tFailure = true;
6420: 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 20  ..    /**..     
6430: 2a 20 41 6e 20 6f 70 74 69 6f 6e 61 6c 20 63 6f  * An optional co
6440: 6d 6d 65 6e 74 20 61 62 6f 75 74 20 74 68 65 20  mment about the 
6450: 66 61 69 6c 75 72 65 0d 0a 20 20 20 20 20 2a 2f  failure..     */
6460: 0d 0a 20 20 20 20 74 68 69 73 2e 63 6f 6d 6d 65  ..    this.comme
6470: 6e 74 20 3d 20 63 6f 6d 6d 65 6e 74 3b 0d 0a 20  nt = comment;.. 
6480: 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 20 2a 20 54     /**..     * T
6490: 68 65 20 72 65 61 73 6f 6e 20 66 6f 72 20 74 68  he reason for th
64a0: 65 20 66 61 69 6c 75 72 65 0d 0a 20 20 20 20 20  e failure..     
64b0: 2a 2f 0d 0a 20 20 20 20 74 68 69 73 2e 6a 73 55  */..    this.jsU
64c0: 6e 69 74 4d 65 73 73 61 67 65 20 3d 20 6d 65 73  nitMessage = mes
64d0: 73 61 67 65 3b 0d 0a 20 20 20 20 2f 2a 2a 0d 0a  sage;..    /**..
64e0: 20 20 20 20 20 2a 20 54 68 65 20 73 74 61 63 6b       * The stack
64f0: 20 74 72 61 63 65 20 61 74 20 74 68 65 20 70 6f   trace at the po
6500: 69 6e 74 20 61 74 20 77 68 69 63 68 20 74 68 65  int at which the
6510: 20 66 61 69 6c 75 72 65 20 77 61 73 20 65 6e 63   failure was enc
6520: 6f 75 6e 74 65 72 65 64 0d 0a 20 20 20 20 20 2a  ountered..     *
6530: 2f 0d 0a 20 20 20 20 74 68 69 73 2e 73 74 61 63  /..    this.stac
6540: 6b 54 72 61 63 65 20 3d 20 4a 73 55 6e 69 74 2e  kTrace = JsUnit.
6550: 55 74 69 6c 2e 67 65 74 53 74 61 63 6b 54 72 61  Util.getStackTra
6560: 63 65 28 29 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a 0d  ce();..}..../**.
6570: 0a 20 2a 20 40 64 65 70 72 65 63 61 74 65 64 0d  . * @deprecated.
6580: 0a 20 2a 2f 0d 0a 4a 73 55 6e 69 74 46 61 69 6c  . */..JsUnitFail
6590: 75 72 65 20 3d 20 4a 73 55 6e 69 74 2e 46 61 69  ure = JsUnit.Fai
65a0: 6c 75 72 65 3b 0d 0a 0d 0a 2f 2a 2a 0d 0a 20 2a  lure;..../**.. *
65b0: 20 40 63 6c 61 73 73 0d 0a 20 2a 20 41 20 4a 73   @class.. * A Js
65c0: 55 6e 69 74 45 72 72 6f 72 20 72 65 70 72 65 73  UnitError repres
65d0: 65 6e 74 73 20 61 6e 20 65 72 72 6f 72 20 28 61  ents an error (a
65e0: 6e 20 65 78 63 65 70 74 69 6f 6e 20 6f 72 20 61  n exception or a
65f0: 20 63 61 6c 6c 20 74 6f 20 65 72 72 6f 72 28 29   call to error()
6600: 29 20 64 75 72 69 6e 67 20 74 68 65 20 65 78 65  ) during the exe
6610: 63 75 74 69 6f 6e 20 6f 66 20 61 20 54 65 73 74  cution of a Test
6620: 20 46 75 6e 63 74 69 6f 6e 0d 0a 20 2a 20 40 70   Function.. * @p
6630: 61 72 61 6d 20 64 65 73 63 72 69 70 74 69 6f 6e  aram description
6640: 20 74 68 65 20 72 65 61 73 6f 6e 20 66 6f 72 20   the reason for 
6650: 74 68 65 20 66 61 69 6c 75 72 65 0d 0a 20 2a 2f  the failure.. */
6660: 0d 0a 4a 73 55 6e 69 74 2e 45 72 72 6f 72 20 3d  ..JsUnit.Error =
6670: 20 66 75 6e 63 74 69 6f 6e 28 64 65 73 63 72 69   function(descri
6680: 70 74 69 6f 6e 29 20 7b 0d 0a 20 20 20 20 2f 2a  ption) {..    /*
6690: 2a 0d 0a 20 20 20 20 20 2a 20 54 68 65 20 64 65  *..     * The de
66a0: 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74 68 65  scription of the
66b0: 20 65 72 72 6f 72 0d 0a 20 20 20 20 20 2a 2f 0d   error..     */.
66c0: 0a 20 20 20 20 74 68 69 73 2e 64 65 73 63 72 69  .    this.descri
66d0: 70 74 69 6f 6e 20 3d 20 64 65 73 63 72 69 70 74  ption = descript
66e0: 69 6f 6e 3b 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20  ion;..    /**.. 
66f0: 20 20 20 20 2a 20 54 68 65 20 73 74 61 63 6b 20      * The stack 
6700: 74 72 61 63 65 20 61 74 20 74 68 65 20 70 6f 69  trace at the poi
6710: 6e 74 20 61 74 20 77 68 69 63 68 20 74 68 65 20  nt at which the 
6720: 65 72 72 6f 72 20 77 61 73 20 65 6e 63 6f 75 6e  error was encoun
6730: 74 65 72 65 64 0d 0a 20 20 20 20 20 2a 2f 0d 0a  tered..     */..
6740: 20 20 20 20 74 68 69 73 2e 73 74 61 63 6b 54 72      this.stackTr
6750: 61 63 65 20 3d 20 4a 73 55 6e 69 74 2e 55 74 69  ace = JsUnit.Uti
6760: 6c 2e 67 65 74 53 74 61 63 6b 54 72 61 63 65 28  l.getStackTrace(
6770: 29 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a 0d 0a 20 2a  );..}..../**.. *
6780: 20 40 64 65 70 72 65 63 61 74 65 64 0d 0a 20 2a   @deprecated.. *
6790: 2f 0d 0a 4a 73 55 6e 69 74 45 72 72 6f 72 20 3d  /..JsUnitError =
67a0: 20 4a 73 55 6e 69 74 2e 45 72 72 6f 72 3b 0d 0a   JsUnit.Error;..
67b0: 0d 0a 2f 2a 2a 0d 0a 20 2a 20 40 63 6c 61 73 73  ../**.. * @class
67c0: 0d 0a 20 2a 20 41 20 4a 73 55 6e 69 74 41 73 73  .. * A JsUnitAss
67d0: 65 72 74 69 6f 6e 41 72 67 75 6d 65 6e 74 45 72  ertionArgumentEr
67e0: 72 6f 72 20 72 65 70 72 65 73 65 6e 74 73 20 61  ror represents a
67f0: 6e 20 69 6e 76 61 6c 69 64 20 63 61 6c 6c 20 74  n invalid call t
6800: 6f 20 61 6e 20 61 73 73 65 72 74 69 6f 6e 20 66  o an assertion f
6810: 75 6e 63 74 69 6f 6e 20 2d 20 65 69 74 68 65 72  unction - either
6820: 20 61 6e 20 69 6e 76 61 6c 69 64 20 61 72 67 75   an invalid argu
6830: 6d 65 6e 74 20 74 79 70 65 0d 0a 20 2a 20 6f 72  ment type.. * or
6840: 20 61 6e 20 69 6e 63 6f 72 72 65 63 74 20 6e 75   an incorrect nu
6850: 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74  mber of argument
6860: 73 0d 0a 20 2a 20 40 70 61 72 61 6d 20 64 65 73  s.. * @param des
6870: 63 72 69 70 74 69 6f 6e 20 61 20 64 65 73 63 72  cription a descr
6880: 69 70 74 69 6f 6e 20 6f 66 20 74 68 65 20 61 72  iption of the ar
6890: 67 75 6d 65 6e 74 20 65 72 72 6f 72 0d 0a 20 2a  gument error.. *
68a0: 2f 0d 0a 4a 73 55 6e 69 74 2e 41 73 73 65 72 74  /..JsUnit.Assert
68b0: 69 6f 6e 41 72 67 75 6d 65 6e 74 45 72 72 6f 72  ionArgumentError
68c0: 20 3d 20 66 75 6e 63 74 69 6f 6e 28 64 65 73 63   = function(desc
68d0: 72 69 70 74 69 6f 6e 29 20 7b 0d 0a 20 20 20 20  ription) {..    
68e0: 2f 2a 2a 0d 0a 20 20 20 20 20 2a 20 41 20 64 65  /**..     * A de
68f0: 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74 68 65  scription of the
6900: 20 61 72 67 75 6d 65 6e 74 20 65 72 72 6f 72 0d   argument error.
6910: 0a 20 20 20 20 20 2a 2f 0d 0a 20 20 20 20 74 68  .     */..    th
6920: 69 73 2e 64 65 73 63 72 69 70 74 69 6f 6e 20 3d  is.description =
6930: 20 64 65 73 63 72 69 70 74 69 6f 6e 3b 0d 0a 7d   description;..}
6940: 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 69 73 4c  ....function isL
6950: 6f 61 64 65 64 28 29 20 7b 0d 0a 20 20 20 20 72  oaded() {..    r
6960: 65 74 75 72 6e 20 69 73 54 65 73 74 50 61 67 65  eturn isTestPage
6970: 4c 6f 61 64 65 64 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a  Loaded;..}..../*
6980: 2a 0d 0a 20 2a 20 40 70 72 69 76 61 74 65 0d 0a  *.. * @private..
6990: 20 2a 2f 0d 0a 66 75 6e 63 74 69 6f 6e 20 73 65   */..function se
69a0: 74 55 70 28 29 20 7b 0d 0a 7d 0d 0a 0d 0a 2f 2a  tUp() {..}..../*
69b0: 2a 0d 0a 20 2a 20 40 70 72 69 76 61 74 65 0d 0a  *.. * @private..
69c0: 20 2a 2f 0d 0a 66 75 6e 63 74 69 6f 6e 20 74 65   */..function te
69d0: 61 72 44 6f 77 6e 28 29 20 7b 0d 0a 7d 0d 0a 0d  arDown() {..}...
69e0: 0a 2f 2f 53 6e 65 67 6f 70 61 74 2e 0d 0a 2f 2f  .//Snegopat...//
69f0: 20 54 4f 44 4f 3a 20 d1 80 d0 b5 d0 b0 d0 bb d0   TODO: .........
6a00: b8 d0 b7 d0 be d0 b2 d0 b0 d1 82 d1 8c 20 d0 bf  ............. ..
6a10: d0 be d0 bb d0 bd d0 be d1 86 d0 b5 d0 bd d0 bd  ................
6a20: d1 8b d0 b9 20 d1 82 d1 80 d0 b5 d0 b9 d1 81 d0  .... ...........
6a30: b5 d1 80 2f d0 bb d0 be d0 b3 d0 b3 d0 b5 d1 80  .../............
6a40: 2e 0d 0a 66 75 6e 63 74 69 6f 6e 20 53 6e 65 67  ...function Sneg
6a50: 6f 70 61 74 54 72 61 63 65 28 6d 65 73 73 61 67  opatTrace(messag
6a60: 65 2c 20 76 61 6c 75 65 2c 20 6d 61 72 6b 65 72  e, value, marker
6a70: 29 0d 0a 7b 0d 0a 20 20 20 20 76 61 72 20 74 65  )..{..    var te
6a80: 78 74 20 3d 20 6d 65 73 73 61 67 65 3b 0d 0a 20  xt = message;.. 
6a90: 20 20 20 0d 0a 20 20 20 20 69 66 20 28 76 61 6c     ..    if (val
6aa0: 75 65 29 0d 0a 20 20 20 20 20 20 20 20 74 65 78  ue)..        tex
6ab0: 74 20 2b 3d 20 27 3a 20 27 20 2b 20 4a 73 55 6e  t += ': ' + JsUn
6ac0: 69 74 2e 5f 64 69 73 70 6c 61 79 53 74 72 69 6e  it._displayStrin
6ad0: 67 46 6f 72 56 61 6c 75 65 28 76 61 6c 75 65 29  gForValue(value)
6ae0: 3b 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20  ;..        ..   
6af0: 20 4d 65 73 73 61 67 65 28 74 65 78 74 2c 20 6d   Message(text, m
6b00: 61 72 6b 65 72 29 3b 0d 0a 7d 0d 0a 2f 2f 2f 2f  arker);..}..////
6b10: 2f 53 6e 65 67 6f 70 61 74 2e 0d 0a 0d 0a 66 75  /Snegopat.....fu
6b20: 6e 63 74 69 6f 6e 20 77 61 72 6e 28 29 20 7b 0d  nction warn() {.
6b30: 0a 20 20 20 20 53 6e 65 67 6f 70 61 74 54 72 61  .    SnegopatTra
6b40: 63 65 28 61 72 67 75 6d 65 6e 74 73 5b 30 5d 2c  ce(arguments[0],
6b50: 20 61 72 67 75 6d 65 6e 74 73 5b 31 5d 2c 20 6d   arguments[1], m
6b60: 45 78 63 31 29 3b 0d 0a 7d 0d 0a 0d 0a 66 75 6e  Exc1);..}....fun
6b70: 63 74 69 6f 6e 20 69 6e 66 6f 72 6d 28 29 20 7b  ction inform() {
6b80: 0d 0a 20 20 20 20 53 6e 65 67 6f 70 61 74 54 72  ..    SnegopatTr
6b90: 61 63 65 28 61 72 67 75 6d 65 6e 74 73 5b 30 5d  ace(arguments[0]
6ba0: 2c 20 61 72 67 75 6d 65 6e 74 73 5b 31 5d 2c 20  , arguments[1], 
6bb0: 6d 49 6e 66 6f 29 3b 0d 0a 7d 0d 0a 0d 0a 66 75  mInfo);..}....fu
6bc0: 6e 63 74 69 6f 6e 20 69 6e 66 6f 28 29 20 7b 0d  nction info() {.
6bd0: 0a 20 20 20 20 53 6e 65 67 6f 70 61 74 54 72 61  .    SnegopatTra
6be0: 63 65 28 61 72 67 75 6d 65 6e 74 73 5b 30 5d 2c  ce(arguments[0],
6bf0: 20 61 72 67 75 6d 65 6e 74 73 5b 31 5d 29 3b 0d   arguments[1]);.
6c00: 0a 7d 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 64  .}....function d
6c10: 65 62 75 67 28 29 20 7b 0d 0a 20 20 20 20 53 6e  ebug() {..    Sn
6c20: 65 67 6f 70 61 74 54 72 61 63 65 28 61 72 67 75  egopatTrace(argu
6c30: 6d 65 6e 74 73 5b 30 5d 2c 20 61 72 67 75 6d 65  ments[0], argume
6c40: 6e 74 73 5b 31 5d 2c 20 6d 4e 6f 6e 65 29 3b 0d  nts[1], mNone);.
6c50: 0a 7d 0d 0a 0d 0a 2f 2a 2a 0d 0a 20 2a 20 40 63  .}..../**.. * @c
6c60: 6c 61 73 73 0d 0a 20 2a 20 41 20 4a 73 55 6e 69  lass.. * A JsUni
6c70: 74 54 65 73 74 53 75 69 74 65 20 72 65 70 72 65  tTestSuite repre
6c80: 73 65 6e 74 73 20 61 20 73 75 69 74 65 20 6f 66  sents a suite of
6c90: 20 4a 73 55 6e 69 74 20 54 65 73 74 20 50 61 67   JsUnit Test Pag
6ca0: 65 73 2e 20 20 54 65 73 74 20 50 61 67 65 73 20  es.  Test Pages 
6cb0: 61 6e 64 20 54 65 73 74 20 53 75 69 74 65 73 20  and Test Suites 
6cc0: 63 61 6e 20 62 65 20 61 64 64 65 64 20 74 6f 20  can be added to 
6cd0: 61 0d 0a 20 2a 20 4a 73 55 6e 69 74 54 65 73 74  a.. * JsUnitTest
6ce0: 53 75 69 74 65 0d 0a 20 2a 20 40 63 6f 6e 73 74  Suite.. * @const
6cf0: 72 75 63 74 6f 72 0d 0a 20 2a 2f 0d 0a 66 75 6e  ructor.. */..fun
6d00: 63 74 69 6f 6e 20 4a 73 55 6e 69 74 54 65 73 74  ction JsUnitTest
6d10: 53 75 69 74 65 28 29 20 7b 0d 0a 20 20 20 20 2f  Suite() {..    /
6d20: 2a 2a 0d 0a 20 20 20 20 20 2a 20 44 65 63 6c 61  **..     * Decla
6d30: 72 65 73 20 74 68 61 74 20 74 68 69 73 20 6f 62  res that this ob
6d40: 6a 65 63 74 20 69 73 20 61 20 4a 73 55 6e 69 74  ject is a JsUnit
6d50: 54 65 73 74 53 75 69 74 65 0d 0a 20 20 20 20 20  TestSuite..     
6d60: 2a 2f 0d 0a 20 20 20 20 74 68 69 73 2e 69 73 4a  */..    this.isJ
6d70: 73 55 6e 69 74 54 65 73 74 53 75 69 74 65 20 3d  sUnitTestSuite =
6d80: 20 74 72 75 65 3b 0d 0a 20 20 20 20 2f 2a 2a 0d   true;..    /**.
6d90: 0a 20 20 20 20 20 2a 20 40 70 72 69 76 61 74 65  .     * @private
6da0: 0d 0a 20 20 20 20 20 2a 2f 0d 0a 20 20 20 20 74  ..     */..    t
6db0: 68 69 73 2e 5f 74 65 73 74 50 61 67 65 73 20 3d  his._testPages =
6dc0: 20 41 72 72 61 79 28 29 3b 0d 0a 20 20 20 20 2f   Array();..    /
6dd0: 2a 2a 0d 0a 20 20 20 20 20 2a 20 40 70 72 69 76  **..     * @priv
6de0: 61 74 65 0d 0a 20 20 20 20 20 2a 2f 0d 0a 20 20  ate..     */..  
6df0: 20 20 74 68 69 73 2e 5f 70 61 67 65 49 6e 64 65    this._pageInde
6e00: 78 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 66 6f  x = 0;....    fo
6e10: 72 20 28 76 61 72 20 69 20 3d 20 30 3b 20 69 20  r (var i = 0; i 
6e20: 3c 20 61 72 67 75 6d 65 6e 74 73 2e 6c 65 6e 67  < arguments.leng
6e30: 74 68 3b 20 69 2b 2b 29 20 7b 0d 0a 20 20 20 20  th; i++) {..    
6e40: 20 20 20 20 69 66 20 28 61 72 67 75 6d 65 6e 74      if (argument
6e50: 73 5b 69 5d 2e 5f 74 65 73 74 50 61 67 65 73 29  s[i]._testPages)
6e60: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
6e70: 74 68 69 73 2e 61 64 64 54 65 73 74 53 75 69 74  this.addTestSuit
6e80: 65 28 61 72 67 75 6d 65 6e 74 73 5b 69 5d 29 3b  e(arguments[i]);
6e90: 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65  ..        } else
6ea0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
6eb0: 74 68 69 73 2e 61 64 64 54 65 73 74 50 61 67 65  this.addTestPage
6ec0: 28 61 72 67 75 6d 65 6e 74 73 5b 69 5d 29 3b 0d  (arguments[i]);.
6ed0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
6ee0: 7d 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a 0d 0a 20 2a 20  }..}..../**.. * 
6ef0: 41 64 64 73 20 61 20 54 65 73 74 20 50 61 67 65  Adds a Test Page
6f00: 20 74 6f 20 74 68 65 20 73 75 69 74 65 0d 0a 20   to the suite.. 
6f10: 2a 20 40 70 61 72 61 6d 20 70 61 67 65 4e 61 6d  * @param pageNam
6f20: 65 20 74 68 65 20 70 61 74 68 20 74 6f 20 74 68  e the path to th
6f30: 65 20 54 65 73 74 20 50 61 67 65 0d 0a 20 2a 2f  e Test Page.. */
6f40: 0d 0a 4a 73 55 6e 69 74 54 65 73 74 53 75 69 74  ..JsUnitTestSuit
6f50: 65 2e 70 72 6f 74 6f 74 79 70 65 2e 61 64 64 54  e.prototype.addT
6f60: 65 73 74 50 61 67 65 20 3d 20 66 75 6e 63 74 69  estPage = functi
6f70: 6f 6e 20 28 70 61 67 65 29 20 7b 0d 0a 20 20 20  on (page) {..   
6f80: 20 74 68 69 73 2e 5f 74 65 73 74 50 61 67 65 73   this._testPages
6f90: 5b 74 68 69 73 2e 5f 74 65 73 74 50 61 67 65 73  [this._testPages
6fa0: 2e 6c 65 6e 67 74 68 5d 20 3d 20 70 61 67 65 3b  .length] = page;
6fb0: 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a 0d 0a 20 2a 20 41  ..}..../**.. * A
6fc0: 64 64 73 20 61 20 54 65 73 74 20 53 75 69 74 65  dds a Test Suite
6fd0: 20 74 6f 20 74 68 65 20 73 75 69 74 65 0d 0a 20   to the suite.. 
6fe0: 2a 20 40 70 61 72 61 6d 20 73 75 69 74 65 20 61  * @param suite a
6ff0: 6e 6f 74 68 65 72 20 4a 73 55 6e 69 74 54 65 73  nother JsUnitTes
7000: 74 53 75 69 74 65 20 6f 62 6a 65 63 74 0d 0a 20  tSuite object.. 
7010: 2a 2f 0d 0a 0d 0a 4a 73 55 6e 69 74 54 65 73 74  */....JsUnitTest
7020: 53 75 69 74 65 2e 70 72 6f 74 6f 74 79 70 65 2e  Suite.prototype.
7030: 61 64 64 54 65 73 74 53 75 69 74 65 20 3d 20 66  addTestSuite = f
7040: 75 6e 63 74 69 6f 6e 20 28 73 75 69 74 65 29 20  unction (suite) 
7050: 7b 0d 0a 20 20 20 20 66 6f 72 20 28 76 61 72 20  {..    for (var 
7060: 69 20 3d 20 30 3b 20 69 20 3c 20 73 75 69 74 65  i = 0; i < suite
7070: 2e 5f 74 65 73 74 50 61 67 65 73 2e 6c 65 6e 67  ._testPages.leng
7080: 74 68 3b 20 69 2b 2b 29 0d 0a 20 20 20 20 20 20  th; i++)..      
7090: 20 20 74 68 69 73 2e 61 64 64 54 65 73 74 50 61    this.addTestPa
70a0: 67 65 28 73 75 69 74 65 2e 5f 74 65 73 74 50 61  ge(suite._testPa
70b0: 67 65 73 5b 69 5d 29 3b 0d 0a 7d 0d 0a 0d 0a 2f  ges[i]);..}..../
70c0: 2a 2a 0d 0a 20 2a 20 57 68 65 74 68 65 72 20 74  **.. * Whether t
70d0: 68 65 20 73 75 69 74 65 20 63 6f 6e 74 61 69 6e  he suite contain
70e0: 73 20 61 6e 79 20 54 65 73 74 20 50 61 67 65 73  s any Test Pages
70f0: 0d 0a 20 2a 2f 0d 0a 4a 73 55 6e 69 74 54 65 73  .. */..JsUnitTes
7100: 74 53 75 69 74 65 2e 70 72 6f 74 6f 74 79 70 65  tSuite.prototype
7110: 2e 63 6f 6e 74 61 69 6e 73 54 65 73 74 50 61 67  .containsTestPag
7120: 65 73 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29  es = function ()
7130: 20 7b 0d 0a 20 20 20 20 72 65 74 75 72 6e 20 74   {..    return t
7140: 68 69 73 2e 5f 74 65 73 74 50 61 67 65 73 2e 6c  his._testPages.l
7150: 65 6e 67 74 68 20 3e 20 30 3b 0d 0a 7d 0d 0a 0d  ength > 0;..}...
7160: 0a 2f 2a 2a 0d 0a 20 2a 20 4d 6f 76 65 73 20 74  ./**.. * Moves t
7170: 68 65 20 73 75 69 74 65 20 6f 6e 20 74 6f 20 69  he suite on to i
7180: 74 73 20 6e 65 78 74 20 54 65 73 74 20 50 61 67  ts next Test Pag
7190: 65 0d 0a 20 2a 2f 0d 0a 4a 73 55 6e 69 74 54 65  e.. */..JsUnitTe
71a0: 73 74 53 75 69 74 65 2e 70 72 6f 74 6f 74 79 70  stSuite.prototyp
71b0: 65 2e 6e 65 78 74 50 61 67 65 20 3d 20 66 75 6e  e.nextPage = fun
71c0: 63 74 69 6f 6e 20 28 29 20 7b 0d 0a 20 20 20 20  ction () {..    
71d0: 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 74 65 73  return this._tes
71e0: 74 50 61 67 65 73 5b 74 68 69 73 2e 5f 70 61 67  tPages[this._pag
71f0: 65 49 6e 64 65 78 2b 2b 5d 3b 0d 0a 7d 0d 0a 0d  eIndex++];..}...
7200: 0a 2f 2a 2a 0d 0a 20 2a 20 57 68 65 74 68 65 72  ./**.. * Whether
7210: 20 74 68 65 20 73 75 69 74 65 20 68 61 73 20 6d   the suite has m
7220: 6f 72 65 20 54 65 73 74 20 50 61 67 65 73 0d 0a  ore Test Pages..
7230: 20 2a 2f 0d 0a 4a 73 55 6e 69 74 54 65 73 74 53   */..JsUnitTestS
7240: 75 69 74 65 2e 70 72 6f 74 6f 74 79 70 65 2e 68  uite.prototype.h
7250: 61 73 4d 6f 72 65 50 61 67 65 73 20 3d 20 66 75  asMorePages = fu
7260: 6e 63 74 69 6f 6e 20 28 29 20 7b 0d 0a 20 20 20  nction () {..   
7270: 20 72 65 74 75 72 6e 20 74 68 69 73 2e 5f 70 61   return this._pa
7280: 67 65 49 6e 64 65 78 20 3c 20 74 68 69 73 2e 5f  geIndex < this._
7290: 74 65 73 74 50 61 67 65 73 2e 6c 65 6e 67 74 68  testPages.length
72a0: 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a 0d 0a 20 2a 20  ;..}..../**.. * 
72b0: 50 72 6f 64 75 63 65 73 20 61 20 63 6f 70 79 20  Produces a copy 
72c0: 6f 66 20 74 68 65 20 73 75 69 74 65 0d 0a 20 2a  of the suite.. *
72d0: 2f 0d 0a 4a 73 55 6e 69 74 54 65 73 74 53 75 69  /..JsUnitTestSui
72e0: 74 65 2e 70 72 6f 74 6f 74 79 70 65 2e 63 6c 6f  te.prototype.clo
72f0: 6e 65 20 3d 20 66 75 6e 63 74 69 6f 6e 20 28 29  ne = function ()
7300: 20 7b 0d 0a 20 20 20 20 76 61 72 20 63 6c 6f 6e   {..    var clon
7310: 65 20 3d 20 6e 65 77 20 4a 73 55 6e 69 74 54 65  e = new JsUnitTe
7320: 73 74 53 75 69 74 65 28 29 3b 0d 0a 20 20 20 20  stSuite();..    
7330: 63 6c 6f 6e 65 2e 5f 74 65 73 74 50 61 67 65 73  clone._testPages
7340: 20 3d 20 74 68 69 73 2e 5f 74 65 73 74 50 61 67   = this._testPag
7350: 65 73 3b 0d 0a 20 20 20 20 72 65 74 75 72 6e 20  es;..    return 
7360: 63 6c 6f 6e 65 3b 0d 0a 7d 0d 0a 0d 0a 2f 2f 46  clone;..}....//F
7370: 6f 72 20 6c 65 67 61 63 79 20 73 75 70 70 6f 72  or legacy suppor
7380: 74 20 2d 20 4a 73 55 6e 69 74 54 65 73 74 53 75  t - JsUnitTestSu
7390: 69 74 65 20 75 73 65 64 20 74 6f 20 62 65 20 63  ite used to be c
73a0: 61 6c 6c 65 64 20 6a 73 55 6e 69 74 54 65 73 74  alled jsUnitTest
73b0: 53 75 69 74 65 0d 0a 2f 2f 53 6e 65 67 6f 70 61  Suite..//Snegopa
73c0: 74 2e 20 0d 0a 2f 2f 20 d0 9f d0 be 20 d0 bd d0  t. ..// .... ...
73d0: b5 d0 b8 d0 b7 d0 b2 d0 b5 d1 81 d1 82 d0 bd d1  ................
73e0: 8b d0 bc 20 d0 bc d0 bd d0 b5 20 d0 bf d1 80 d0  ... ...... .....
73f0: b8 d1 87 d0 b8 d0 bd d0 b0 d0 bc 20 d1 8d d1 82  ........... ....
7400: d0 b0 20 d0 ba d0 be d0 bd d1 81 d1 82 d1 80 d1  .. .............
7410: 83 d0 ba d1 86 d0 b8 d1 8f 20 d0 bf d1 80 d0 b8  ......... ......
7420: d0 b2 d0 be d0 b4 d0 b8 d1 82 20 d0 ba 20 d1 82  .......... .. ..
7430: d0 be d0 bc d1 83 2c 20 d1 87 d1 82 d0 be 0d 0a  ......, ........
7440: 2f 2f 20 d0 b4 d0 b2 d0 b8 d0 b6 d0 be d0 ba 20  // ............ 
7450: d0 a1 d0 bd d0 b5 d0 b3 d0 be d0 bf d0 b0 d1 82  ................
7460: d0 b0 20 d0 bf d0 b5 d1 80 d0 b5 d1 81 d1 82 d0  .. .............
7470: b0 d0 b5 d1 82 20 d0 b2 d0 b8 d0 b4 d0 b5 d1 82  ..... ..........
7480: d1 8c 20 d0 bc d0 b0 d0 ba d1 80 d0 be d1 81 d1  .. .............
7490: 8b 2e 0d 0a 2f 2f 76 61 72 20 6a 73 55 6e 69 74  ....//var jsUnit
74a0: 54 65 73 74 53 75 69 74 65 20 3d 20 4a 73 55 6e  TestSuite = JsUn
74b0: 69 74 54 65 73 74 53 75 69 74 65 3b 0d 0a 2f 2f  itTestSuite;..//
74c0: 2f 2f 2f 53 6e 65 67 6f 70 61 74 2e 0d 0a 0d 0a  ///Snegopat.....
74d0: 66 75 6e 63 74 69 6f 6e 20 73 65 74 4a 73 55 6e  function setJsUn
74e0: 69 74 54 72 61 63 65 72 28 61 4a 73 55 6e 69 74  itTracer(aJsUnit
74f0: 54 72 61 63 65 72 29 20 7b 0d 0a 20 20 20 20 74  Tracer) {..    t
7500: 6f 70 2e 74 72 61 63 65 72 20 3d 20 61 4a 73 55  op.tracer = aJsU
7510: 6e 69 74 54 72 61 63 65 72 3b 0d 0a 7d 0d 0a 0d  nitTracer;..}...
7520: 0a 66 75 6e 63 74 69 6f 6e 20 6a 73 55 6e 69 74  .function jsUnit
7530: 47 65 74 50 61 72 6d 28 6e 61 6d 65 29 20 7b 0d  GetParm(name) {.
7540: 0a 20 20 20 20 72 65 74 75 72 6e 20 74 6f 70 2e  .    return top.
7550: 70 61 72 61 6d 73 2e 67 65 74 28 6e 61 6d 65 29  params.get(name)
7560: 3b 0d 0a 7d 0d 0a 0d 0a 4a 73 55 6e 69 74 2e 5f  ;..}....JsUnit._
7570: 6e 65 77 4f 6e 4c 6f 61 64 45 76 65 6e 74 20 3d  newOnLoadEvent =
7580: 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0d 0a 20   function() {.. 
7590: 20 20 20 69 73 54 65 73 74 50 61 67 65 4c 6f 61     isTestPageLoa
75a0: 64 65 64 20 3d 20 74 72 75 65 3b 0d 0a 7d 0d 0a  ded = true;..}..
75b0: 0d 0a 4a 73 55 6e 69 74 2e 5f 73 65 74 4f 6e 4c  ..JsUnit._setOnL
75c0: 6f 61 64 20 3d 20 66 75 6e 63 74 69 6f 6e 28 77  oad = function(w
75d0: 69 6e 64 6f 77 52 65 66 2c 20 6f 6e 6c 6f 61 64  indowRef, onload
75e0: 48 61 6e 64 6c 65 72 29 20 7b 0d 0a 20 20 20 20  Handler) {..    
75f0: 20 20 20 0d 0a 20 20 20 20 2f 2f 53 6e 65 67 6f     ..    //Snego
7600: 70 61 74 2e 0d 0a 20 20 20 20 4a 73 55 6e 69 74  pat...    JsUnit
7610: 2e 66 61 69 6c 28 22 5f 73 65 74 4f 6e 4c 6f 61  .fail("_setOnLoa
7620: 64 28 29 20 d0 bd d0 b5 20 d0 bf d0 be d0 b4 d0  d() .... .......
7630: b4 d0 b5 d1 80 d0 b6 d0 b8 d0 b2 d0 b0 d0 b5 d1  ................
7640: 82 d1 81 d1 8f 20 d0 b2 20 d0 a1 d0 bd d0 b5 d0  ..... .. .......
7650: b3 d0 be d0 bf d0 b0 d1 82 d0 b5 2e 22 29 3b 0d  ............");.
7660: 0a 20 20 20 20 2f 2f 2f 2f 2f 53 6e 65 67 6f 70  .    /////Snegop
7670: 61 74 2e 0d 0a 20 20 20 20 0d 0a 20 20 20 20 2f  at...    ..    /
7680: 2a 0d 0a 20 20 20 20 76 61 72 20 69 73 4b 6f 6e  *..    var isKon
7690: 71 75 65 72 6f 72 20 3d 20 6e 61 76 69 67 61 74  queror = navigat
76a0: 6f 72 2e 75 73 65 72 41 67 65 6e 74 2e 69 6e 64  or.userAgent.ind
76b0: 65 78 4f 66 28 27 4b 6f 6e 71 75 65 72 6f 72 2f  exOf('Konqueror/
76c0: 27 29 20 21 3d 20 2d 31 3b 0d 0a 0d 0a 20 20 20  ') != -1;....   
76d0: 20 69 66 20 28 74 79 70 65 6f 66 28 77 69 6e 64   if (typeof(wind
76e0: 6f 77 52 65 66 2e 61 74 74 61 63 68 45 76 65 6e  owRef.attachEven
76f0: 74 29 20 21 3d 20 27 75 6e 64 65 66 69 6e 65 64  t) != 'undefined
7700: 27 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ') {..        //
7710: 20 49 6e 74 65 72 6e 65 74 20 45 78 70 6c 6f 72   Internet Explor
7720: 65 72 2c 20 4f 70 65 72 61 0d 0a 20 20 20 20 20  er, Opera..     
7730: 20 20 20 77 69 6e 64 6f 77 52 65 66 2e 61 74 74     windowRef.att
7740: 61 63 68 45 76 65 6e 74 28 22 6f 6e 6c 6f 61 64  achEvent("onload
7750: 22 2c 20 6f 6e 6c 6f 61 64 48 61 6e 64 6c 65 72  ", onloadHandler
7760: 29 3b 0d 0a 20 20 20 20 7d 20 65 6c 73 65 20 69  );..    } else i
7770: 66 20 28 74 79 70 65 6f 66 28 77 69 6e 64 6f 77  f (typeof(window
7780: 52 65 66 2e 61 64 64 45 76 65 6e 74 4c 69 73 74  Ref.addEventList
7790: 65 6e 65 72 29 20 21 3d 20 27 75 6e 64 65 66 69  ener) != 'undefi
77a0: 6e 65 64 27 20 26 26 20 21 69 73 4b 6f 6e 71 75  ned' && !isKonqu
77b0: 65 72 6f 72 29 20 7b 0d 0a 20 20 20 20 20 20 20  eror) {..       
77c0: 20 2f 2f 20 4d 6f 7a 69 6c 6c 61 0d 0a 20 20 20   // Mozilla..   
77d0: 20 20 20 20 20 2f 2f 20 65 78 63 6c 75 64 65 20       // exclude 
77e0: 4b 6f 6e 71 75 65 72 6f 72 20 64 75 65 20 74 6f  Konqueror due to
77f0: 20 6c 6f 61 64 20 69 73 73 75 65 73 0d 0a 20 20   load issues..  
7800: 20 20 20 20 20 20 77 69 6e 64 6f 77 52 65 66 2e        windowRef.
7810: 61 64 64 45 76 65 6e 74 4c 69 73 74 65 6e 65 72  addEventListener
7820: 28 22 6c 6f 61 64 22 2c 20 6f 6e 6c 6f 61 64 48  ("load", onloadH
7830: 61 6e 64 6c 65 72 2c 20 66 61 6c 73 65 29 3b 0d  andler, false);.
7840: 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28  .    } else if (
7850: 74 79 70 65 6f 66 28 77 69 6e 64 6f 77 52 65 66  typeof(windowRef
7860: 2e 64 6f 63 75 6d 65 6e 74 2e 61 64 64 45 76 65  .document.addEve
7870: 6e 74 4c 69 73 74 65 6e 65 72 29 20 21 3d 20 27  ntListener) != '
7880: 75 6e 64 65 66 69 6e 65 64 27 20 26 26 20 21 69  undefined' && !i
7890: 73 4b 6f 6e 71 75 65 72 6f 72 29 20 7b 0d 0a 20  sKonqueror) {.. 
78a0: 20 20 20 20 20 20 20 2f 2f 20 44 4f 4d 20 32 20         // DOM 2 
78b0: 45 76 65 6e 74 73 0d 0a 20 20 20 20 20 20 20 20  Events..        
78c0: 2f 2f 20 65 78 63 6c 75 64 65 20 4d 6f 7a 69 6c  // exclude Mozil
78d0: 6c 61 2c 20 4b 6f 6e 71 75 65 72 6f 72 20 64 75  la, Konqueror du
78e0: 65 20 74 6f 20 6c 6f 61 64 20 69 73 73 75 65 73  e to load issues
78f0: 0d 0a 20 20 20 20 20 20 20 20 77 69 6e 64 6f 77  ..        window
7900: 52 65 66 2e 64 6f 63 75 6d 65 6e 74 2e 61 64 64  Ref.document.add
7910: 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 22 6c  EventListener("l
7920: 6f 61 64 22 2c 20 6f 6e 6c 6f 61 64 48 61 6e 64  oad", onloadHand
7930: 6c 65 72 2c 20 66 61 6c 73 65 29 3b 0d 0a 20 20  ler, false);..  
7940: 20 20 7d 20 65 6c 73 65 20 69 66 20 28 74 79 70    } else if (typ
7950: 65 6f 66 28 77 69 6e 64 6f 77 52 65 66 2e 6f 6e  eof(windowRef.on
7960: 6c 6f 61 64 29 20 21 3d 20 27 75 6e 64 65 66 69  load) != 'undefi
7970: 6e 65 64 27 20 26 26 20 77 69 6e 64 6f 77 52 65  ned' && windowRe
7980: 66 2e 6f 6e 6c 6f 61 64 29 20 7b 0d 0a 20 20 20  f.onload) {..   
7990: 20 20 20 20 20 77 69 6e 64 6f 77 52 65 66 2e 6a       windowRef.j
79a0: 73 75 6e 69 74 5f 6f 72 69 67 69 6e 61 6c 5f 6f  sunit_original_o
79b0: 6e 6c 6f 61 64 20 3d 20 77 69 6e 64 6f 77 52 65  nload = windowRe
79c0: 66 2e 6f 6e 6c 6f 61 64 3b 0d 0a 20 20 20 20 20  f.onload;..     
79d0: 20 20 20 77 69 6e 64 6f 77 52 65 66 2e 6f 6e 6c     windowRef.onl
79e0: 6f 61 64 20 3d 20 66 75 6e 63 74 69 6f 6e 28 29  oad = function()
79f0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
7a00: 77 69 6e 64 6f 77 52 65 66 2e 6a 73 75 6e 69 74  windowRef.jsunit
7a10: 5f 6f 72 69 67 69 6e 61 6c 5f 6f 6e 6c 6f 61 64  _original_onload
7a20: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
7a30: 20 6f 6e 6c 6f 61 64 48 61 6e 64 6c 65 72 28 29   onloadHandler()
7a40: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 3b 0d 0a 20  ;..        };.. 
7a50: 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20     } else {..   
7a60: 20 20 20 20 20 2f 2f 20 62 72 6f 77 73 65 72 73       // browsers
7a70: 20 74 68 61 74 20 64 6f 20 6e 6f 74 20 73 75 70   that do not sup
7a80: 70 6f 72 74 20 77 69 6e 64 6f 77 52 65 66 2e 61  port windowRef.a
7a90: 74 74 61 63 68 45 76 65 6e 74 20 6f 72 0d 0a 20  ttachEvent or.. 
7aa0: 20 20 20 20 20 20 20 2f 2f 20 77 69 6e 64 6f 77         // window
7ab0: 52 65 66 2e 61 64 64 45 76 65 6e 74 4c 69 73 74  Ref.addEventList
7ac0: 65 6e 65 72 20 77 69 6c 6c 20 6f 76 65 72 72 69  ener will overri
7ad0: 64 65 20 61 20 70 61 67 65 27 73 20 6f 77 6e 20  de a page's own 
7ae0: 6f 6e 6c 6f 61 64 20 65 76 65 6e 74 0d 0a 20 20  onload event..  
7af0: 20 20 20 20 20 20 77 69 6e 64 6f 77 52 65 66 2e        windowRef.
7b00: 6f 6e 6c 6f 61 64 20 3d 20 6f 6e 6c 6f 61 64 48  onload = onloadH
7b10: 61 6e 64 6c 65 72 3b 0d 0a 20 20 20 20 7d 0d 0a  andler;..    }..
7b20: 20 20 20 20 2a 2f 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a      */..}..../**
7b30: 0d 0a 20 2a 20 40 63 6c 61 73 73 0d 0a 20 2a 20  .. * @class.. * 
7b40: 40 63 6f 6e 73 74 72 75 63 74 6f 72 0d 0a 20 2a  @constructor.. *
7b50: 20 43 6f 6e 74 61 69 6e 73 20 75 74 69 6c 69 74   Contains utilit
7b60: 79 20 66 75 6e 63 74 69 6f 6e 73 20 66 6f 72 20  y functions for 
7b70: 74 68 65 20 4a 73 55 6e 69 74 20 66 72 61 6d 65  the JsUnit frame
7b80: 77 6f 72 6b 0d 0a 20 2a 2f 0d 0a 4a 73 55 6e 69  work.. */..JsUni
7b90: 74 2e 55 74 69 6c 20 3d 20 7b 7d 3b 0d 0a 0d 0a  t.Util = {};....
7ba0: 2f 2a 2a 0d 0a 20 2a 20 53 74 61 6e 64 61 72 64  /**.. * Standard
7bb0: 69 7a 65 73 20 61 6e 20 48 54 4d 4c 20 73 74 72  izes an HTML str
7bc0: 69 6e 67 20 62 79 20 74 65 6d 70 6f 72 61 72 69  ing by temporari
7bd0: 6c 79 20 63 72 65 61 74 69 6e 67 20 61 20 44 49  ly creating a DI
7be0: 56 2c 20 73 65 74 74 69 6e 67 20 69 74 73 20 69  V, setting its i
7bf0: 6e 6e 65 72 48 54 4d 4c 20 74 6f 20 74 68 65 20  nnerHTML to the 
7c00: 73 74 72 69 6e 67 2c 20 61 6e 64 20 74 68 65 20  string, and the 
7c10: 61 73 6b 69 6e 67 20 66 6f 72 0d 0a 20 2a 20 74  asking for.. * t
7c20: 68 65 20 69 6e 6e 65 72 48 54 4d 4c 20 62 61 63  he innerHTML bac
7c30: 6b 0d 0a 20 2a 20 40 70 61 72 61 6d 20 68 74 6d  k.. * @param htm
7c40: 6c 0d 0a 20 2a 2f 0d 0a 4a 73 55 6e 69 74 2e 55  l.. */..JsUnit.U
7c50: 74 69 6c 2e 73 74 61 6e 64 61 72 64 69 7a 65 48  til.standardizeH
7c60: 54 4d 4c 20 3d 20 66 75 6e 63 74 69 6f 6e 28 68  TML = function(h
7c70: 74 6d 6c 29 20 7b 0d 0a 20 20 20 20 2f 2f 53 6e  tml) {..    //Sn
7c80: 65 67 6f 70 61 74 2e 0d 0a 20 20 20 20 4a 73 55  egopat...    JsU
7c90: 6e 69 74 2e 66 61 69 6c 28 22 73 74 61 6e 64 61  nit.fail("standa
7ca0: 72 64 69 7a 65 48 54 4d 4c 28 29 20 d0 bd d0 b5  rdizeHTML() ....
7cb0: 20 d0 bf d0 be d0 b4 d0 b4 d0 b5 d1 80 d0 b6 d0   ...............
7cc0: b8 d0 b2 d0 b0 d0 b5 d1 82 d1 81 d1 8f 20 d0 b2  ............. ..
7cd0: 20 d0 a1 d0 bd d0 b5 d0 b3 d0 be d0 bf d0 b0 d1   ...............
7ce0: 82 d0 b5 2e 22 29 3b 0d 0a 20 20 20 20 2f 2f 76  ....");..    //v
7cf0: 61 72 20 74 72 61 6e 73 6c 61 74 6f 72 20 3d 20  ar translator = 
7d00: 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 45  document.createE
7d10: 6c 65 6d 65 6e 74 28 22 44 49 56 22 29 3b 0d 0a  lement("DIV");..
7d20: 20 20 20 20 2f 2f 74 72 61 6e 73 6c 61 74 6f 72      //translator
7d30: 2e 69 6e 6e 65 72 48 54 4d 4c 20 3d 20 68 74 6d  .innerHTML = htm
7d40: 6c 3b 0d 0a 20 20 20 20 2f 2f 72 65 74 75 72 6e  l;..    //return
7d50: 20 4a 73 55 6e 69 74 2e 55 74 69 6c 2e 74 72 69   JsUnit.Util.tri
7d60: 6d 28 74 72 61 6e 73 6c 61 74 6f 72 2e 69 6e 6e  m(translator.inn
7d70: 65 72 48 54 4d 4c 29 3b 0d 0a 20 20 20 20 2f 2f  erHTML);..    //
7d80: 2f 2f 2f 53 6e 65 67 6f 70 61 74 2e 0d 0a 7d 0d  ///Snegopat...}.
7d90: 0a 0d 0a 2f 2a 2a 0d 0a 20 2a 20 52 65 74 75 72  .../**.. * Retur
7da0: 6e 73 20 77 68 65 74 68 65 72 20 74 68 65 20 67  ns whether the g
7db0: 69 76 65 6e 20 73 74 72 69 6e 67 20 69 73 20 62  iven string is b
7dc0: 6c 61 6e 6b 20 61 66 74 65 72 20 62 65 69 6e 67  lank after being
7dd0: 20 74 72 69 6d 6d 65 64 20 6f 66 20 77 68 69 74   trimmed of whit
7de0: 65 73 70 61 63 65 0d 0a 20 2a 20 40 70 61 72 61  espace.. * @para
7df0: 6d 20 73 74 72 69 6e 67 0d 0a 20 2a 2f 0d 0a 4a  m string.. */..J
7e00: 73 55 6e 69 74 2e 55 74 69 6c 2e 69 73 42 6c 61  sUnit.Util.isBla
7e10: 6e 6b 20 3d 20 66 75 6e 63 74 69 6f 6e 28 73 74  nk = function(st
7e20: 72 69 6e 67 29 20 7b 0d 0a 20 20 20 20 72 65 74  ring) {..    ret
7e30: 75 72 6e 20 4a 73 55 6e 69 74 2e 55 74 69 6c 2e  urn JsUnit.Util.
7e40: 74 72 69 6d 28 73 74 72 69 6e 67 29 20 3d 3d 20  trim(string) == 
7e50: 27 27 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a 0d 0a 20  '';..}..../**.. 
7e60: 2a 20 49 6d 70 6c 65 6d 65 6e 74 65 64 20 68 65  * Implemented he
7e70: 72 65 20 62 65 63 61 75 73 65 20 74 68 65 20 4a  re because the J
7e80: 61 76 61 53 63 72 69 70 74 20 41 72 72 61 79 2e  avaScript Array.
7e90: 70 75 73 68 28 61 6e 4f 62 6a 65 63 74 29 20 61  push(anObject) a
7ea0: 6e 64 20 41 72 72 61 79 2e 70 6f 70 28 29 20 66  nd Array.pop() f
7eb0: 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 6e 6f 74  unctions are not
7ec0: 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 49 45   available in IE
7ed0: 20 35 2e 30 0d 0a 20 2a 20 40 70 61 72 61 6d 20   5.0.. * @param 
7ee0: 61 6e 41 72 72 61 79 20 74 68 65 20 61 72 72 61  anArray the arra
7ef0: 79 20 6f 6e 74 6f 20 77 68 69 63 68 20 74 6f 20  y onto which to 
7f00: 70 75 73 68 0d 0a 20 2a 20 40 70 61 72 61 6d 20  push.. * @param 
7f10: 61 6e 4f 62 6a 65 63 74 20 74 68 65 20 6f 62 6a  anObject the obj
7f20: 65 63 74 20 74 6f 20 70 75 73 68 20 6f 6e 74 6f  ect to push onto
7f30: 20 74 68 65 20 61 72 72 61 79 0d 0a 20 2a 2f 0d   the array.. */.
7f40: 0a 4a 73 55 6e 69 74 2e 55 74 69 6c 2e 70 75 73  .JsUnit.Util.pus
7f50: 68 20 3d 20 66 75 6e 63 74 69 6f 6e 28 61 6e 41  h = function(anA
7f60: 72 72 61 79 2c 20 61 6e 4f 62 6a 65 63 74 29 20  rray, anObject) 
7f70: 7b 0d 0a 20 20 20 20 61 6e 41 72 72 61 79 5b 61  {..    anArray[a
7f80: 6e 41 72 72 61 79 2e 6c 65 6e 67 74 68 5d 20 3d  nArray.length] =
7f90: 20 61 6e 4f 62 6a 65 63 74 3b 0d 0a 7d 0d 0a 0d   anObject;..}...
7fa0: 0a 2f 2a 2a 0d 0a 20 2a 20 49 6d 70 6c 65 6d 65  ./**.. * Impleme
7fb0: 6e 74 65 64 20 68 65 72 65 20 62 65 63 61 75 73  nted here becaus
7fc0: 65 20 74 68 65 20 4a 61 76 61 53 63 72 69 70 74  e the JavaScript
7fd0: 20 41 72 72 61 79 2e 70 75 73 68 28 61 6e 4f 62   Array.push(anOb
7fe0: 6a 65 63 74 29 20 61 6e 64 20 41 72 72 61 79 2e  ject) and Array.
7ff0: 70 6f 70 28 29 20 66 75 6e 63 74 69 6f 6e 73 20  pop() functions 
8000: 61 72 65 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c  are not availabl
8010: 65 20 69 6e 20 49 45 20 35 2e 30 0d 0a 20 2a 20  e in IE 5.0.. * 
8020: 40 70 61 72 61 6d 20 61 6e 41 72 72 61 79 20 74  @param anArray t
8030: 68 65 20 61 72 72 61 79 20 66 72 6f 6d 20 77 68  he array from wh
8040: 69 63 68 20 74 6f 20 70 6f 70 0d 0a 20 2a 2f 0d  ich to pop.. */.
8050: 0a 4a 73 55 6e 69 74 2e 55 74 69 6c 2e 70 6f 70  .JsUnit.Util.pop
8060: 20 3d 20 66 75 6e 63 74 69 6f 6e 20 70 6f 70 28   = function pop(
8070: 61 6e 41 72 72 61 79 29 20 7b 0d 0a 20 20 20 20  anArray) {..    
8080: 69 66 20 28 61 6e 41 72 72 61 79 2e 6c 65 6e 67  if (anArray.leng
8090: 74 68 20 3e 3d 20 31 29 20 7b 0d 0a 20 20 20 20  th >= 1) {..    
80a0: 20 20 20 20 64 65 6c 65 74 65 20 61 6e 41 72 72      delete anArr
80b0: 61 79 5b 61 6e 41 72 72 61 79 2e 6c 65 6e 67 74  ay[anArray.lengt
80c0: 68 20 2d 20 31 5d 3b 0d 0a 20 20 20 20 20 20 20  h - 1];..       
80d0: 20 61 6e 41 72 72 61 79 2e 6c 65 6e 67 74 68 2d   anArray.length-
80e0: 2d 3b 0d 0a 20 20 20 20 7d 0d 0a 7d 0d 0a 0d 0a  -;..    }..}....
80f0: 2f 2a 2a 0d 0a 20 2a 20 52 65 74 75 72 6e 73 20  /**.. * Returns 
8100: 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
8110: 67 69 76 65 6e 20 66 75 6e 63 74 69 6f 6e 2c 20  given function, 
8120: 6f 72 20 27 61 6e 6f 6e 79 6d 6f 75 73 27 20 69  or 'anonymous' i
8130: 66 20 69 74 20 68 61 73 20 6e 6f 20 6e 61 6d 65  f it has no name
8140: 0d 0a 20 2a 20 40 70 61 72 61 6d 20 61 46 75 6e  .. * @param aFun
8150: 63 74 69 6f 6e 0d 0a 20 2a 2f 0d 0a 4a 73 55 6e  ction.. */..JsUn
8160: 69 74 2e 55 74 69 6c 2e 67 65 74 46 75 6e 63 74  it.Util.getFunct
8170: 69 6f 6e 4e 61 6d 65 20 3d 20 66 75 6e 63 74 69  ionName = functi
8180: 6f 6e 28 61 46 75 6e 63 74 69 6f 6e 29 20 7b 0d  on(aFunction) {.
8190: 0a 20 20 20 20 76 61 72 20 72 65 67 65 78 70 52  .    var regexpR
81a0: 65 73 75 6c 74 20 3d 20 61 46 75 6e 63 74 69 6f  esult = aFunctio
81b0: 6e 2e 74 6f 53 74 72 69 6e 67 28 29 2e 6d 61 74  n.toString().mat
81c0: 63 68 28 2f 66 75 6e 63 74 69 6f 6e 28 5c 73 2a  ch(/function(\s*
81d0: 29 28 5c 77 2a 29 2f 29 3b 0d 0a 20 20 20 20 69  )(\w*)/);..    i
81e0: 66 20 28 72 65 67 65 78 70 52 65 73 75 6c 74 20  f (regexpResult 
81f0: 26 26 20 72 65 67 65 78 70 52 65 73 75 6c 74 2e  && regexpResult.
8200: 6c 65 6e 67 74 68 20 3e 3d 20 32 20 26 26 20 72  length >= 2 && r
8210: 65 67 65 78 70 52 65 73 75 6c 74 5b 32 5d 29 20  egexpResult[2]) 
8220: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
8230: 65 74 75 72 6e 20 72 65 67 65 78 70 52 65 73 75  eturn regexpResu
8240: 6c 74 5b 32 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 20  lt[2];..    }.. 
8250: 20 20 20 72 65 74 75 72 6e 20 27 61 6e 6f 6e 79     return 'anony
8260: 6d 6f 75 73 27 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 2a  mous';..}..../**
8270: 0d 0a 20 2a 20 52 65 74 75 72 6e 73 20 74 68 65  .. * Returns the
8280: 20 63 75 72 72 65 6e 74 20 73 74 61 63 6b 20 74   current stack t
8290: 72 61 63 65 0d 0a 20 2a 2f 0d 0a 4a 73 55 6e 69  race.. */..JsUni
82a0: 74 2e 55 74 69 6c 2e 67 65 74 53 74 61 63 6b 54  t.Util.getStackT
82b0: 72 61 63 65 20 3d 20 66 75 6e 63 74 69 6f 6e 28  race = function(
82c0: 29 20 7b 0d 0a 20 20 20 20 76 61 72 20 72 65 73  ) {..    var res
82d0: 75 6c 74 20 3d 20 27 27 3b 0d 0a 0d 0a 20 20 20  ult = '';....   
82e0: 20 69 66 20 28 74 79 70 65 6f 66 28 61 72 67 75   if (typeof(argu
82f0: 6d 65 6e 74 73 2e 63 61 6c 6c 65 72 29 20 21 3d  ments.caller) !=
8300: 20 27 75 6e 64 65 66 69 6e 65 64 27 29 20 7b 20   'undefined') { 
8310: 2f 2f 20 49 45 2c 20 6e 6f 74 20 45 43 4d 41 0d  // IE, not ECMA.
8320: 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61  .        for (va
8330: 72 20 61 20 3d 20 61 72 67 75 6d 65 6e 74 73 2e  r a = arguments.
8340: 63 61 6c 6c 65 72 3b 20 61 20 21 3d 20 6e 75 6c  caller; a != nul
8350: 6c 3b 20 61 20 3d 20 61 2e 63 61 6c 6c 65 72 29  l; a = a.caller)
8360: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8370: 72 65 73 75 6c 74 20 2b 3d 20 27 3e 20 27 20 2b  result += '> ' +
8380: 20 4a 73 55 6e 69 74 2e 55 74 69 6c 2e 67 65 74   JsUnit.Util.get
8390: 46 75 6e 63 74 69 6f 6e 4e 61 6d 65 28 61 2e 63  FunctionName(a.c
83a0: 61 6c 6c 65 65 29 20 2b 20 27 5c 6e 27 3b 0d 0a  allee) + '\n';..
83b0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
83c0: 61 2e 63 61 6c 6c 65 72 20 3d 3d 20 61 29 20 7b  a.caller == a) {
83d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
83e0: 20 20 72 65 73 75 6c 74 20 2b 3d 20 27 2a 27 3b    result += '*';
83f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8400: 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20    break;..      
8410: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
8420: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 65   }..    }..    e
8430: 6c 73 65 20 7b 20 2f 2f 20 4d 6f 7a 69 6c 6c 61  lse { // Mozilla
8440: 2c 20 6e 6f 74 20 45 43 4d 41 0d 0a 20 20 20 20  , not ECMA..    
8450: 20 20 20 20 2f 2f 20 66 61 6b 65 20 61 6e 20 65      // fake an e
8460: 78 63 65 70 74 69 6f 6e 20 73 6f 20 77 65 20 63  xception so we c
8470: 61 6e 20 67 65 74 20 4d 6f 7a 69 6c 6c 61 27 73  an get Mozilla's
8480: 20 65 72 72 6f 72 20 73 74 61 63 6b 0d 0a 20 20   error stack..  
8490: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
84a0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
84b0: 20 20 66 6f 6f 2e 62 61 72 3b 0d 0a 20 20 20 20    foo.bar;..    
84c0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 63      }..        c
84d0: 61 74 63 68 28 65 78 63 65 70 74 69 6f 6e 29 0d  atch(exception).
84e0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
84f0: 20 20 20 20 20 20 20 20 76 61 72 20 73 74 61 63          var stac
8500: 6b 20 3d 20 4a 73 55 6e 69 74 2e 55 74 69 6c 2e  k = JsUnit.Util.
8510: 70 61 72 73 65 45 72 72 6f 72 53 74 61 63 6b 28  parseErrorStack(
8520: 65 78 63 65 70 74 69 6f 6e 29 3b 0d 0a 20 20 20  exception);..   
8530: 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61           for (va
8540: 72 20 69 20 3d 20 31 3b 20 69 20 3c 20 73 74 61  r i = 1; i < sta
8550: 63 6b 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 0d  ck.length; i++).
8560: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
8570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8580: 72 65 73 75 6c 74 20 2b 3d 20 27 3e 20 27 20 2b  result += '> ' +
8590: 20 73 74 61 63 6b 5b 69 5d 20 2b 20 27 5c 6e 27   stack[i] + '\n'
85a0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
85b0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
85c0: 20 7d 0d 0a 0d 0a 20 20 20 20 72 65 74 75 72 6e   }....    return
85d0: 20 72 65 73 75 6c 74 3b 0d 0a 7d 0d 0a 0d 0a 2f   result;..}..../
85e0: 2a 2a 0d 0a 20 2a 20 52 65 74 75 72 6e 73 20 61  **.. * Returns a
85f0: 6e 20 61 72 72 61 79 20 6f 66 20 73 74 61 63 6b  n array of stack
8600: 20 74 72 61 63 65 20 65 6c 65 6d 65 6e 74 73 20   trace elements 
8610: 66 72 6f 6d 20 74 68 65 20 67 69 76 65 6e 20 65  from the given e
8620: 78 63 65 70 74 69 6f 6e 0d 0a 20 2a 20 40 70 61  xception.. * @pa
8630: 72 61 6d 20 65 78 63 65 70 74 69 6f 6e 0d 0a 20  ram exception.. 
8640: 2a 2f 0d 0a 4a 73 55 6e 69 74 2e 55 74 69 6c 2e  */..JsUnit.Util.
8650: 70 61 72 73 65 45 72 72 6f 72 53 74 61 63 6b 20  parseErrorStack 
8660: 3d 20 66 75 6e 63 74 69 6f 6e 28 65 78 63 65 70  = function(excep
8670: 74 69 6f 6e 29 20 7b 0d 0a 20 20 20 20 76 61 72  tion) {..    var
8680: 20 73 74 61 63 6b 20 3d 20 5b 5d 3b 0d 0a 20 20   stack = [];..  
8690: 20 20 76 61 72 20 6e 61 6d 65 3b 0d 0a 0d 0a 20    var name;.... 
86a0: 20 20 20 69 66 20 28 21 65 78 63 65 70 74 69 6f     if (!exceptio
86b0: 6e 20 7c 7c 20 21 65 78 63 65 70 74 69 6f 6e 2e  n || !exception.
86c0: 73 74 61 63 6b 29 20 7b 0d 0a 20 20 20 20 20 20  stack) {..      
86d0: 20 20 72 65 74 75 72 6e 20 73 74 61 63 6b 3b 0d    return stack;.
86e0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 76 61  .    }....    va
86f0: 72 20 73 74 61 63 6b 6c 69 73 74 20 3d 20 65 78  r stacklist = ex
8700: 63 65 70 74 69 6f 6e 2e 73 74 61 63 6b 2e 73 70  ception.stack.sp
8710: 6c 69 74 28 27 5c 6e 27 29 3b 0d 0a 0d 0a 20 20  lit('\n');....  
8720: 20 20 66 6f 72 20 28 76 61 72 20 69 20 3d 20 30    for (var i = 0
8730: 3b 20 69 20 3c 20 73 74 61 63 6b 6c 69 73 74 2e  ; i < stacklist.
8740: 6c 65 6e 67 74 68 20 2d 20 31 3b 20 69 2b 2b 29  length - 1; i++)
8750: 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20   {..        var 
8760: 66 72 61 6d 65 64 61 74 61 20 3d 20 73 74 61 63  framedata = stac
8770: 6b 6c 69 73 74 5b 69 5d 3b 0d 0a 0d 0a 20 20 20  klist[i];....   
8780: 20 20 20 20 20 6e 61 6d 65 20 3d 20 66 72 61 6d       name = fram
8790: 65 64 61 74 61 2e 6d 61 74 63 68 28 2f 5e 28 5c  edata.match(/^(\
87a0: 77 2a 29 2f 29 5b 31 5d 3b 0d 0a 20 20 20 20 20  w*)/)[1];..     
87b0: 20 20 20 69 66 20 28 21 6e 61 6d 65 29 20 7b 0d     if (!name) {.
87c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d  .            nam
87d0: 65 20 3d 20 27 61 6e 6f 6e 79 6d 6f 75 73 27 3b  e = 'anonymous';
87e0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
87f0: 20 20 20 20 20 20 20 73 74 61 63 6b 5b 73 74 61         stack[sta
8800: 63 6b 2e 6c 65 6e 67 74 68 5d 20 3d 20 6e 61 6d  ck.length] = nam
8810: 65 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 2f  e;..    }..    /
8820: 2f 20 72 65 6d 6f 76 65 20 74 6f 70 20 6c 65 76  / remove top lev
8830: 65 6c 20 61 6e 6f 6e 79 6d 6f 75 73 20 66 75 6e  el anonymous fun
8840: 63 74 69 6f 6e 73 20 74 6f 20 6d 61 74 63 68 20  ctions to match 
8850: 49 45 0d 0a 0d 0a 20 20 20 20 77 68 69 6c 65 20  IE....    while 
8860: 28 73 74 61 63 6b 2e 6c 65 6e 67 74 68 20 26 26  (stack.length &&
8870: 20 73 74 61 63 6b 5b 73 74 61 63 6b 2e 6c 65 6e   stack[stack.len
8880: 67 74 68 20 2d 20 31 5d 20 3d 3d 20 27 61 6e 6f  gth - 1] == 'ano
8890: 6e 79 6d 6f 75 73 27 29 20 7b 0d 0a 20 20 20 20  nymous') {..    
88a0: 20 20 20 20 73 74 61 63 6b 2e 6c 65 6e 67 74 68      stack.length
88b0: 20 3d 20 73 74 61 63 6b 2e 6c 65 6e 67 74 68 20   = stack.length 
88c0: 2d 20 31 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20  - 1;..    }..   
88d0: 20 72 65 74 75 72 6e 20 73 74 61 63 6b 3b 0d 0a   return stack;..
88e0: 7d 0d 0a 0d 0a 2f 2a 2a 0d 0a 20 2a 20 53 74 72  }..../**.. * Str
88f0: 69 70 73 20 77 68 69 74 65 73 70 61 63 65 20 66  ips whitespace f
8900: 72 6f 6d 20 65 69 74 68 65 72 20 65 6e 64 20 6f  rom either end o
8910: 66 20 74 68 65 20 67 69 76 65 6e 20 73 74 72 69  f the given stri
8920: 6e 67 0d 0a 20 2a 20 40 70 61 72 61 6d 20 73 74  ng.. * @param st
8930: 72 69 6e 67 0d 0a 20 2a 2f 0d 0a 4a 73 55 6e 69  ring.. */..JsUni
8940: 74 2e 55 74 69 6c 2e 74 72 69 6d 20 3d 20 66 75  t.Util.trim = fu
8950: 6e 63 74 69 6f 6e 28 73 74 72 69 6e 67 29 20 7b  nction(string) {
8960: 0d 0a 20 20 20 20 69 66 20 28 73 74 72 69 6e 67  ..    if (string
8970: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
8980: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
8990: 0a 0d 0a 20 20 20 20 76 61 72 20 73 74 61 72 74  ...    var start
89a0: 69 6e 67 49 6e 64 65 78 20 3d 20 30 3b 0d 0a 20  ingIndex = 0;.. 
89b0: 20 20 20 76 61 72 20 65 6e 64 69 6e 67 49 6e 64     var endingInd
89c0: 65 78 20 3d 20 73 74 72 69 6e 67 2e 6c 65 6e 67  ex = string.leng
89d0: 74 68 20 2d 20 31 3b 0d 0a 0d 0a 20 20 20 20 76  th - 1;....    v
89e0: 61 72 20 73 69 6e 67 6c 65 57 68 69 74 65 73 70  ar singleWhitesp
89f0: 61 63 65 52 65 67 65 78 20 3d 20 2f 5c 73 2f 3b  aceRegex = /\s/;
8a00: 0d 0a 20 20 20 20 77 68 69 6c 65 20 28 73 74 72  ..    while (str
8a10: 69 6e 67 2e 73 75 62 73 74 72 69 6e 67 28 73 74  ing.substring(st
8a20: 61 72 74 69 6e 67 49 6e 64 65 78 2c 20 73 74 61  artingIndex, sta
8a30: 72 74 69 6e 67 49 6e 64 65 78 20 2b 20 31 29 2e  rtingIndex + 1).
8a40: 6d 61 74 63 68 28 73 69 6e 67 6c 65 57 68 69 74  match(singleWhit
8a50: 65 73 70 61 63 65 52 65 67 65 78 29 29 0d 0a 20  espaceRegex)).. 
8a60: 20 20 20 20 20 20 20 73 74 61 72 74 69 6e 67 49         startingI
8a70: 6e 64 65 78 2b 2b 3b 0d 0a 0d 0a 20 20 20 20 77  ndex++;....    w
8a80: 68 69 6c 65 20 28 73 74 72 69 6e 67 2e 73 75 62  hile (string.sub
8a90: 73 74 72 69 6e 67 28 65 6e 64 69 6e 67 49 6e 64  string(endingInd
8aa0: 65 78 2c 20 65 6e 64 69 6e 67 49 6e 64 65 78 20  ex, endingIndex 
8ab0: 2b 20 31 29 2e 6d 61 74 63 68 28 73 69 6e 67 6c  + 1).match(singl
8ac0: 65 57 68 69 74 65 73 70 61 63 65 52 65 67 65 78  eWhitespaceRegex
8ad0: 29 29 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 69  ))..        endi
8ae0: 6e 67 49 6e 64 65 78 2d 2d 3b 0d 0a 0d 0a 20 20  ngIndex--;....  
8af0: 20 20 69 66 20 28 65 6e 64 69 6e 67 49 6e 64 65    if (endingInde
8b00: 78 20 3c 20 73 74 61 72 74 69 6e 67 49 6e 64 65  x < startingInde
8b10: 78 29 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  x)..        retu
8b20: 72 6e 20 27 27 3b 0d 0a 0d 0a 20 20 20 20 72 65  rn '';....    re
8b30: 74 75 72 6e 20 73 74 72 69 6e 67 2e 73 75 62 73  turn string.subs
8b40: 74 72 69 6e 67 28 73 74 61 72 74 69 6e 67 49 6e  tring(startingIn
8b50: 64 65 78 2c 20 65 6e 64 69 6e 67 49 6e 64 65 78  dex, endingIndex
8b60: 20 2b 20 31 29 3b 0d 0a 7d 0d 0a 0d 0a 4a 73 55   + 1);..}....JsU
8b70: 6e 69 74 2e 55 74 69 6c 2e 67 65 74 4b 65 79 73  nit.Util.getKeys
8b80: 20 3d 20 66 75 6e 63 74 69 6f 6e 28 6f 62 6a 29   = function(obj)
8b90: 20 7b 0d 0a 20 20 20 20 76 61 72 20 6b 65 79 73   {..    var keys
8ba0: 20 3d 20 5b 5d 3b 0d 0a 20 20 20 20 66 6f 72 20   = [];..    for 
8bb0: 28 76 61 72 20 6b 65 79 20 69 6e 20 6f 62 6a 29  (var key in obj)
8bc0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 4a 73 55 6e   {..        JsUn
8bd0: 69 74 2e 55 74 69 6c 2e 70 75 73 68 28 6b 65 79  it.Util.push(key
8be0: 73 2c 20 6b 65 79 29 3b 0d 0a 20 20 20 20 7d 0d  s, key);..    }.
8bf0: 0a 20 20 20 20 72 65 74 75 72 6e 20 6b 65 79 73  .    return keys
8c00: 3b 0d 0a 7d 0d 0a 0d 0a 4a 73 55 6e 69 74 2e 55  ;..}....JsUnit.U
8c10: 74 69 6c 2e 69 6e 68 65 72 69 74 20 3d 20 66 75  til.inherit = fu
8c20: 6e 63 74 69 6f 6e 28 73 75 70 65 72 63 6c 61 73  nction(superclas
8c30: 73 2c 20 73 75 62 63 6c 61 73 73 29 20 7b 0d 0a  s, subclass) {..
8c40: 20 20 20 20 76 61 72 20 78 20 3d 20 66 75 6e 63      var x = func
8c50: 74 69 6f 6e 28 29 20 7b 7d 3b 0d 0a 20 20 20 20  tion() {};..    
8c60: 78 2e 70 72 6f 74 6f 74 79 70 65 20 3d 20 73 75  x.prototype = su
8c70: 70 65 72 63 6c 61 73 73 2e 70 72 6f 74 6f 74 79  perclass.prototy
8c80: 70 65 3b 0d 0a 20 20 20 20 73 75 62 63 6c 61 73  pe;..    subclas
8c90: 73 2e 70 72 6f 74 6f 74 79 70 65 20 3d 20 6e 65  s.prototype = ne
8ca0: 77 20 78 28 29 3b 0d 0a 7d 0d 0a 0d 0a 2f 2f 53  w x();..}....//S
8cb0: 6e 65 67 6f 70 61 74 2e 0d 0a 2f 2f 4a 73 55 6e  negopat...//JsUn
8cc0: 69 74 2e 5f 73 65 74 4f 6e 4c 6f 61 64 28 77 69  it._setOnLoad(wi
8cd0: 6e 64 6f 77 2c 20 4a 73 55 6e 69 74 2e 5f 6e 65  ndow, JsUnit._ne
8ce0: 77 4f 6e 4c 6f 61 64 45 76 65 6e 74 29 3b 0d 0a  wOnLoadEvent);..
8cf0: 2f 2f 2f 2f 2f 53 6e 65 67 6f 70 61 74 2e 0d 0a  /////Snegopat...
8d00: 0d 0a 0d 0a                                      ....