Hex Artifact Content Вы: nobody
Вход

Artifact 39b46c3b8557150f038a6ae0e1ef1d319da38f10:


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 74 65 73 74 54  pt..$uname testT
0020: 65 78 74 57 69 6e 64 6f 77 0d 0a 24 64 6e 61 6d  extWindow..$dnam
0030: 65 20 d0 a2 d0 b5 d1 81 d1 82 d1 8b 20 d0 b4 d0  e .......... ...
0040: bb d1 8f 20 d0 ba d0 bb d0 b0 d1 81 d1 81 d0 b0  ... ............
0050: 20 54 65 78 74 57 69 6e 64 6f 77 0d 0a 24 61 64   TextWindow..$ad
0060: 64 69 6e 20 67 6c 6f 62 61 6c 0d 0a 24 61 64 64  din global..$add
0070: 69 6e 20 73 74 64 63 6f 6d 6d 61 6e 64 73 0d 0a  in stdcommands..
0080: 24 61 64 64 69 6e 20 73 74 64 6c 69 62 0d 0a 0d  $addin stdlib...
0090: 0a 73 74 64 6c 69 62 2e 72 65 71 75 69 72 65 28  .stdlib.require(
00a0: 27 6a 73 55 6e 69 74 43 6f 72 65 2e 6a 73 27 2c  'jsUnitCore.js',
00b0: 20 53 65 6c 66 53 63 72 69 70 74 29 3b 0d 0a 0d   SelfScript);...
00c0: 0a 76 61 72 20 54 57 57 20 3d 20 73 74 64 6c 69  .var TWW = stdli
00d0: 62 2e 72 65 71 75 69 72 65 28 27 54 65 78 74 57  b.require('TextW
00e0: 69 6e 64 6f 77 2e 6a 73 27 29 3b 0d 0a 0d 0a 76  indow.js');....v
00f0: 61 72 20 74 65 78 74 20 3d 20 22 d0 bf d0 b5 d1  ar text = ".....
0100: 80 d0 b2 d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be  ....... ........
0110: d0 ba d0 b0 5c 6e d0 b2 d1 82 d0 be d1 80 d0 b0  ....\n..........
0120: d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 5c  .. ............\
0130: 6e d1 82 d1 80 d0 b5 d1 82 d1 8c d1 8f 20 d1 81  n............ ..
0140: d1 82 d1 80 d0 be d0 ba d0 b0 5c 6e d1 87 d0 b5  ..........\n....
0150: d1 82 d0 b2 d0 b5 d1 80 d1 82 d0 b0 d1 8f 20 d1  .............. .
0160: 81 d1 82 d1 80 d0 be d0 ba d0 b0 20 2d 20 d1 81  ........... - ..
0170: d0 b0 d0 bc d0 b0 d1 8f 20 d0 b4 d0 bb d0 b8 d0  ........ .......
0180: bd d0 bd d0 b0 d1 8f 20 d0 b8 d0 b7 20 d0 b2 d1  ....... .... ...
0190: 81 d0 b5 d1 85 20 d1 81 d1 82 d1 80 d0 be d0 ba  ..... ..........
01a0: 5c 6e 22 0d 0a 20 20 20 20 2b 20 22 d0 bf d1 8f  \n"..    + "....
01b0: d1 82 d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be d0  ...... .........
01c0: ba d0 b0 20 d0 bf d0 be d0 ba d0 be d1 80 d0 be  ... ............
01d0: d1 87 d0 b5 2c 20 d0 bd d0 be 20 d1 82 d0 be d0  ...., .... .....
01e0: b6 d0 b5 20 d0 bd d0 b8 d1 87 d0 b5 d0 b3 d0 be  ... ............
01f0: 5c 6e d1 88 d0 b5 d1 81 d1 82 d0 b0 d1 8f 20 d1  \n............ .
0200: 81 d1 82 d1 80 d0 be d0 ba d0 b0 5c 6e d1 81 d0  ...........\n...
0210: b5 d0 b4 d1 8c d0 bc d0 b0 d1 8f 20 d1 81 d1 82  ........... ....
0220: d1 80 d0 be d0 ba d0 b0 22 3b 0d 0a 0d 0a 76 61  ........";....va
0230: 72 20 74 65 78 74 44 6f 63 20 3d 20 6e 75 6c 6c  r textDoc = null
0240: 3b 0d 0a 76 61 72 20 74 77 6e 64 20 3d 20 6e 75  ;..var twnd = nu
0250: 6c 6c 3b 0d 0a 20 20 20 20 0d 0a 66 75 6e 63 74  ll;..    ..funct
0260: 69 6f 6e 20 73 65 74 55 70 28 29 0d 0a 7b 0d 0a  ion setUp()..{..
0270: 20 20 20 20 74 65 78 74 44 6f 63 20 3d 20 76 38      textDoc = v8
0280: 4e 65 77 28 22 54 65 78 74 44 6f 63 75 6d 65 6e  New("TextDocumen
0290: 74 22 29 3b 0d 0a 20 20 20 20 74 65 78 74 44 6f  t");..    textDo
02a0: 63 2e 53 65 74 54 65 78 74 28 74 65 78 74 29 3b  c.SetText(text);
02b0: 0d 0a 0d 0a 20 20 20 20 74 65 78 74 44 6f 63 2e  ....    textDoc.
02c0: 53 68 6f 77 28 29 3b 0d 0a 20 20 20 20 0d 0a 20  Show();..    .. 
02d0: 20 20 20 74 77 6e 64 20 3d 20 54 57 57 2e 47 65     twnd = TWW.Ge
02e0: 74 54 65 78 74 57 69 6e 64 6f 77 28 29 3b 0d 0a  tTextWindow();..
02f0: 7d 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 74 65  }....function te
0300: 61 72 44 6f 77 6e 28 29 0d 0a 7b 0d 0a 20 20 20  arDown()..{..   
0310: 20 69 66 20 28 74 77 6e 64 29 0d 0a 20 20 20 20   if (twnd)..    
0320: 20 20 20 20 64 65 6c 65 74 65 20 74 77 6e 64 3b      delete twnd;
0330: 0d 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2f 20 d0  ..    ..    // .
0340: a7 d1 82 d0 be d0 b1 d1 8b 20 d0 bf d1 80 d0 b8  ......... ......
0350: 20 d0 b7 d0 b0 d0 ba d1 80 d1 8b d1 82 d0 b8 d0   ...............
0360: b8 20 d0 bd d0 b5 20 d0 b2 d1 8b d0 b4 d0 b0 d0  . .... .........
0370: b2 d0 b0 d0 bb d0 be d1 81 d1 8c 20 d1 81 d0 be  ........... ....
0380: d0 be d0 b1 d1 89 d0 b5 d0 bd d0 b8 d0 b5 20 22  .............. "
0390: d0 97 d0 b0 d0 bf d0 b8 d1 81 d0 b0 d1 82 d1 8c  ................
03a0: 3f 22 2c 20 d1 81 d0 be d1 85 d1 80 d0 b0 d0 bd  ?", ............
03b0: d0 b8 d0 bc 20 d0 b4 d0 be d0 ba d1 83 d0 bc d0  .... ...........
03c0: b5 d0 bd d1 82 20 d0 b2 d0 be 20 d0 b2 d1 80 d0  ..... .... .....
03d0: b5 d0 bc d0 b5 d0 bd d0 bd d1 8b d0 b9 20 d1 84  ............. ..
03e0: d0 b0 d0 b9 d0 bb 2e 0d 0a 20 20 20 20 76 61 72  .........    var
03f0: 20 74 65 6d 70 46 69 6c 65 20 3d 20 67 6c 6f 62   tempFile = glob
0400: 61 6c 43 6f 6e 74 65 78 74 28 22 7b 34 41 39 39  alContext("{4A99
0410: 33 41 42 37 2d 32 46 37 35 2d 34 33 43 46 2d 42  3AB7-2F75-43CF-B
0420: 33 34 41 2d 30 41 44 39 46 46 41 45 45 37 45 33  34A-0AD9FFAEE7E3
0430: 7d 22 29 2e 47 65 74 54 65 6d 70 46 69 6c 65 4e  }").GetTempFileN
0440: 61 6d 65 28 29 3b 0d 0a 20 20 20 20 74 65 78 74  ame();..    text
0450: 44 6f 63 2e 57 72 69 74 65 28 74 65 6d 70 46 69  Doc.Write(tempFi
0460: 6c 65 29 3b 0d 0a 20 20 20 20 0d 0a 20 20 20 20  le);..    ..    
0470: 2f 2f 20 d0 97 d0 b0 d0 ba d1 80 d0 be d0 b5 d0  // .............
0480: bc 20 d0 be d0 ba d0 bd d0 be 20 d1 82 d0 b5 d0  . ........ .....
0490: ba d1 81 d1 82 d0 be d0 b2 d0 be d0 b3 d0 be 20  ............... 
04a0: d0 b4 d0 be d0 ba d1 83 d0 bc d0 b5 d0 bd d1 82  ................
04b0: d0 b0 2e 0d 0a 20 20 20 20 73 74 64 63 6f 6d 6d  .....    stdcomm
04c0: 61 6e 64 73 2e 46 72 61 6d 65 2e 46 69 6c 65 43  ands.Frame.FileC
04d0: 6c 6f 73 65 2e 73 65 6e 64 28 29 3b 20 20 20 20  lose.send();    
04e0: 0d 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2f 20 d0  ..    ..    // .
04f0: a3 d0 b4 d0 b0 d0 bb d0 b8 d0 bc 20 d0 b2 d1 80  ........... ....
0500: d0 b5 d0 bc d0 b5 d0 bd d0 bd d1 8b d0 b9 20 d1  .............. .
0510: 84 d0 b0 d0 b9 d0 bb 2e 0d 0a 20 20 20 20 76 61  ..........    va
0520: 72 20 66 20 3d 20 76 38 4e 65 77 28 22 46 69 6c  r f = v8New("Fil
0530: 65 22 2c 20 74 65 6d 70 46 69 6c 65 29 3b 0d 0a  e", tempFile);..
0540: 20 20 20 20 67 6c 6f 62 61 6c 43 6f 6e 74 65 78      globalContex
0550: 74 28 22 7b 32 32 41 32 31 30 33 30 2d 45 31 44  t("{22A21030-E1D
0560: 36 2d 34 36 41 30 2d 39 34 36 35 2d 46 30 41 35  6-46A0-9465-F0A5
0570: 34 32 37 42 45 30 31 31 7d 22 29 2e 44 65 6c 65  427BE011}").Dele
0580: 74 65 46 69 6c 65 73 28 66 2e 50 61 74 68 2c 20  teFiles(f.Path, 
0590: 66 2e 4e 61 6d 65 29 3b 0d 0a 7d 0d 0a 0d 0a 66  f.Name);..}....f
05a0: 75 6e 63 74 69 6f 6e 20 6d 61 63 72 6f 73 54 65  unction macrosTe
05b0: 73 74 47 65 74 54 65 78 74 28 29 0d 0a 7b 20 20  stGetText()..{  
05c0: 20 20 0d 0a 20 20 20 20 61 73 73 65 72 74 54 72    ..    assertTr
05d0: 75 65 28 27 d0 9d d0 b5 d1 82 20 d0 b0 d0 ba d1  ue('...... .....
05e0: 82 d0 b8 d0 b2 d0 bd d0 be d0 b3 d0 be 20 d1 82  ............. ..
05f0: d0 b5 d0 ba d1 81 d1 82 d0 be d0 b2 d0 be d0 b3  ................
0600: d0 be 20 d0 be d0 ba d0 bd d0 b0 21 27 2c 20 74  .. ........!', t
0610: 77 6e 64 2e 49 73 41 63 74 69 76 65 28 29 29 3b  wnd.IsActive());
0620: 20 20 20 20 0d 0a 20 20 20 20 0d 0a 20 20 20 20      ..    ..    
0630: 61 73 73 65 72 74 45 71 75 61 6c 73 28 22 d0 9f  assertEquals("..
0640: d0 be d0 bb d1 83 d1 87 d0 b5 d0 bd d0 bd d1 8b  ................
0650: d0 b9 20 d1 82 d0 b5 d0 ba d1 81 d1 82 20 d0 be  .. .......... ..
0660: d1 82 d0 bb d0 b8 d1 87 d0 b0 d0 b5 d1 82 d1 81  ................
0670: d1 8f 20 d0 be d1 82 20 d1 81 d0 be d0 b4 d0 b5  .. .... ........
0680: d1 80 d0 b6 d0 b8 d0 bc d0 be d0 b3 d0 be 20 d1  .............. .
0690: 82 d0 b5 d0 ba d1 81 d1 82 d0 be d0 b2 d0 be d0  ................
06a0: b3 d0 be 20 d0 be d0 ba d0 bd d0 b0 21 22 2c 20  ... ........!", 
06b0: 74 65 78 74 2c 20 74 77 6e 64 2e 47 65 74 54 65  text, twnd.GetTe
06c0: 78 74 28 29 29 3b 0d 0a 20 20 20 20 61 73 73 65  xt());..    asse
06d0: 72 74 45 71 75 61 6c 73 28 22 d0 9f d0 be d0 bb  rtEquals("......
06e0: d1 83 d1 87 d0 b5 d0 bd d0 bd d1 8b d0 b9 20 d1  .............. .
06f0: 82 d0 b5 d0 ba d1 81 d1 82 20 d0 be d1 82 d0 bb  ......... ......
0700: d0 b8 d1 87 d0 b0 d0 b5 d1 82 d1 81 d1 8f 20 d0  .............. .
0710: be d1 82 20 d1 81 d0 be d0 b4 d0 b5 d1 80 d0 b6  ... ............
0720: d0 b8 d0 bc d0 be d0 b3 d0 be 20 d1 82 d0 b5 d0  .......... .....
0730: ba d1 81 d1 82 d0 be d0 b2 d0 be d0 b3 d0 be 20  ............... 
0740: d0 be d0 ba d0 bd d0 b0 21 22 2c 20 74 65 78 74  ........!", text
0750: 2c 20 74 77 6e 64 2e d0 9f d0 be d0 bb d1 83 d1  , twnd..........
0760: 87 d0 b8 d1 82 d1 8c d0 a2 d0 b5 d0 ba d1 81 d1  ................
0770: 82 28 29 29 3b 0d 0a 7d 0d 0a 0d 0a 66 75 6e 63  .());..}....func
0780: 74 69 6f 6e 20 6d 61 63 72 6f 73 54 65 73 74 53  tion macrosTestS
0790: 65 74 54 65 78 74 28 29 0d 0a 7b 0d 0a 20 20 20  etText()..{..   
07a0: 20 61 73 73 65 72 74 54 72 75 65 28 27 d0 9d d0   assertTrue('...
07b0: b5 d1 82 20 d0 b0 d0 ba d1 82 d0 b8 d0 b2 d0 bd  ... ............
07c0: d0 be d0 b3 d0 be 20 d1 82 d0 b5 d0 ba d1 81 d1  ...... .........
07d0: 82 d0 be d0 b2 d0 be d0 b3 d0 be 20 d0 be d0 ba  ........... ....
07e0: d0 bd d0 b0 21 27 2c 20 74 77 6e 64 2e 49 73 41  ....!', twnd.IsA
07f0: 63 74 69 76 65 28 29 29 3b 20 20 20 20 0d 0a 0d  ctive());    ...
0800: 0a 20 20 20 20 76 61 72 20 74 65 73 74 54 65 78  .    var testTex
0810: 74 20 3d 20 22 d0 9f d1 80 d0 be d0 b2 d0 b5 d1  t = "...........
0820: 80 d0 ba d0 b0 20 d1 83 d1 81 d1 82 d0 b0 d0 bd  ..... ..........
0830: d0 be d0 b2 d0 ba d0 b8 20 d1 82 d0 b5 d0 ba d1  ........ .......
0840: 81 d1 82 d0 b0 5c 6e d0 bf d1 80 d0 be d0 b3 d1  .....\n.........
0850: 80 d0 b0 d0 bc d0 bc d0 bd d0 be 20 d0 b8 d0 b7  ........... ....
0860: 20 d1 81 d0 ba d1 80 d0 b8 d0 bf d1 82 d0 b0 22   .............."
0870: 3b 20 20 20 20 0d 0a 20 20 20 20 74 77 6e 64 2e  ;    ..    twnd.
0880: 53 65 74 54 65 78 74 28 74 65 73 74 54 65 78 74  SetText(testText
0890: 29 3b 0d 0a 20 20 20 20 61 73 73 65 72 74 45 71  );..    assertEq
08a0: 75 61 6c 73 28 22 d0 a3 d1 81 d1 82 d0 b0 d0 bd  uals("..........
08b0: d0 be d0 b2 d0 bb d0 b5 d0 bd d0 bd d1 8b d0 b9  ................
08c0: 20 d0 b8 20 d0 bf d0 be d0 bb d1 83 d1 87 d0 b5   .. ............
08d0: d0 bd d0 bd d1 8b d0 b9 20 d1 82 d0 b5 d0 ba d1  ........ .......
08e0: 81 d1 82 d1 8b 20 d0 be d1 82 d0 bb d0 b8 d1 87  ..... ..........
08f0: d0 b0 d1 8e d1 82 d1 81 d1 8f 22 2c 20 74 65 73  ..........", tes
0900: 74 54 65 78 74 2c 20 74 65 78 74 44 6f 63 2e 47  tText, textDoc.G
0910: 65 74 54 65 78 74 28 29 29 3b 0d 0a 7d 0d 0a 0d  etText());..}...
0920: 0a 66 75 6e 63 74 69 6f 6e 20 6d 61 63 72 6f 73  .function macros
0930: 54 65 73 74 52 61 6e 67 65 47 65 74 54 65 78 74  TestRangeGetText
0940: 28 29 0d 0a 7b 0d 0a 20 20 20 20 76 61 72 20 72  ()..{..    var r
0950: 3b 0d 0a 20 20 20 20 0d 0a 20 20 20 20 61 73 73  ;..    ..    ass
0960: 65 72 74 54 72 75 65 28 27 d0 9d d0 b5 d1 82 20  ertTrue('...... 
0970: d0 b0 d0 ba d1 82 d0 b8 d0 b2 d0 bd d0 be d0 b3  ................
0980: d0 be 20 d1 82 d0 b5 d0 ba d1 81 d1 82 d0 be d0  .. .............
0990: b2 d0 be d0 b3 d0 be 20 d0 be d0 ba d0 bd d0 b0  ....... ........
09a0: 21 27 2c 20 74 77 6e 64 2e 49 73 41 63 74 69 76  !', twnd.IsActiv
09b0: 65 28 29 29 3b 20 20 20 20 0d 0a 20 20 20 20 20  e());    ..     
09c0: 20 20 20 0d 0a 20 20 20 20 2f 2f 20 d0 9f d0 b5     ..    // ....
09d0: d1 80 d0 b2 d1 8b d0 b9 20 d1 81 d0 b8 d0 bc d0  ........ .......
09e0: b2 d0 be d0 bb 2e 0d 0a 20 20 20 20 72 20 3d 20  ........    r = 
09f0: 74 77 6e 64 2e 52 61 6e 67 65 28 31 2c 20 31 2c  twnd.Range(1, 1,
0a00: 20 31 2c 20 31 29 3b 0d 0a 20 20 20 20 61 73 73   1, 1);..    ass
0a10: 65 72 74 45 71 75 61 6c 73 28 22 28 31 29 20 d0  ertEquals("(1) .
0a20: a2 d0 b5 d0 ba d1 81 d1 82 20 d0 bd d0 b5 20 d1  ......... .... .
0a30: 81 d0 be d0 be d1 82 d0 b2 d0 b5 d1 82 d1 81 d1  ................
0a40: 82 d0 b2 d1 83 d0 b5 d1 82 20 d0 be d0 b6 d0 b8  ......... ......
0a50: d0 b4 d0 b0 d0 b5 d0 bc d0 be d0 bc d1 83 22 2c  ..............",
0a60: 20 0d 0a 20 20 20 20 20 20 20 20 22 d0 bf 22 2c   ..        "..",
0a70: 20 72 2e 47 65 74 54 65 78 74 28 29 29 3b 0d 0a   r.GetText());..
0a80: 0d 0a 20 20 20 20 2f 2f 20 d0 9f d0 be d1 81 d0  ..    // .......
0a90: bb d0 b5 d0 b4 d0 bd d0 b8 d0 b9 20 d1 81 d0 b8  ........... ....
0aa0: d0 bc d0 b2 d0 be d0 bb 2e 0d 0a 20 20 20 20 72  ...........    r
0ab0: 20 3d 20 74 77 6e 64 2e 52 61 6e 67 65 28 37 2c   = twnd.Range(7,
0ac0: 20 31 34 2c 20 37 2c 20 31 34 29 3b 0d 0a 20 20   14, 7, 14);..  
0ad0: 20 20 61 73 73 65 72 74 45 71 75 61 6c 73 28 22    assertEquals("
0ae0: 28 32 29 20 d0 a2 d0 b5 d0 ba d1 81 d1 82 20 d0  (2) .......... .
0af0: bd d0 b5 20 d1 81 d0 be d0 be d1 82 d0 b2 d0 b5  ... ............
0b00: d1 82 d1 81 d1 82 d0 b2 d1 83 d0 b5 d1 82 20 d0  .............. .
0b10: be d0 b6 d0 b8 d0 b4 d0 b0 d0 b5 d0 bc d0 be d0  ................
0b20: bc d1 83 22 2c 20 0d 0a 20 20 20 20 20 20 20 20  ...", ..        
0b30: 22 d0 b0 22 2c 20 72 2e 47 65 74 54 65 78 74 28  "..", r.GetText(
0b40: 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20  ));..        .. 
0b50: 20 20 20 2f 2f 20 d0 9f d0 b5 d1 80 d0 b2 d0 be     // ..........
0b60: d0 b5 20 d1 81 d0 bb d0 be d0 b2 d0 be 2e 0d 0a  .. .............
0b70: 20 20 20 20 72 20 3d 20 74 77 6e 64 2e 52 61 6e      r = twnd.Ran
0b80: 67 65 28 31 2c 20 31 2c 20 31 2c 20 36 29 3b 0d  ge(1, 1, 1, 6);.
0b90: 0a 20 20 20 20 61 73 73 65 72 74 45 71 75 61 6c  .    assertEqual
0ba0: 73 28 22 28 33 29 20 d0 a2 d0 b5 d0 ba d1 81 d1  s("(3) .........
0bb0: 82 20 d0 bd d0 b5 20 d1 81 d0 be d0 be d1 82 d0  . .... .........
0bc0: b2 d0 b5 d1 82 d1 81 d1 82 d0 b2 d1 83 d0 b5 d1  ................
0bd0: 82 20 d0 be d0 b6 d0 b8 d0 b4 d0 b0 d0 b5 d0 bc  . ..............
0be0: d0 be d0 bc d1 83 22 2c 20 0d 0a 20 20 20 20 20  ......", ..     
0bf0: 20 20 20 22 d0 bf d0 b5 d1 80 d0 b2 d0 b0 d1 8f     "............
0c00: 22 2c 20 72 2e 47 65 74 54 65 78 74 28 29 29 3b  ", r.GetText());
0c10: 0d 0a 0d 0a 20 20 20 20 2f 2f 20 d0 9f d0 b5 d1  ....    // .....
0c20: 80 d0 b2 d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be  ....... ........
0c30: d0 ba d0 b0 2e 0d 0a 20 20 20 20 72 20 3d 20 74  .......    r = t
0c40: 77 6e 64 2e 52 61 6e 67 65 28 31 2c 31 2c 31 29  wnd.Range(1,1,1)
0c50: 3b 0d 0a 20 20 20 20 61 73 73 65 72 74 45 71 75  ;..    assertEqu
0c60: 61 6c 73 28 22 28 34 29 20 d0 a2 d0 b5 d0 ba d1  als("(4) .......
0c70: 81 d1 82 20 d0 bd d0 b5 20 d1 81 d0 be d0 be d1  ... .... .......
0c80: 82 d0 b2 d0 b5 d1 82 d1 81 d1 82 d0 b2 d1 83 d0  ................
0c90: b5 d1 82 20 d0 be d0 b6 d0 b8 d0 b4 d0 b0 d0 b5  ... ............
0ca0: d0 bc d0 be d0 bc d1 83 22 2c 20 0d 0a 20 20 20  ........", ..   
0cb0: 20 20 20 20 20 22 d0 bf d0 b5 d1 80 d0 b2 d0 b0       "..........
0cc0: d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 22  .. ............"
0cd0: 2c 20 72 2e 47 65 74 54 65 78 74 28 29 29 3b 0d  , r.GetText());.
0ce0: 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 2f  .        ..    /
0cf0: 2f 20 d0 94 d0 b2 d0 b5 20 d1 81 d1 82 d1 80 d0  / ...... .......
0d00: be d0 ba d0 b8 2e 0d 0a 20 20 20 20 72 20 3d 20  ........    r = 
0d10: 74 77 6e 64 2e 52 61 6e 67 65 28 32 2c 20 31 2c  twnd.Range(2, 1,
0d20: 20 33 29 3b 0d 0a 20 20 20 20 61 73 73 65 72 74   3);..    assert
0d30: 45 71 75 61 6c 73 28 22 28 35 29 20 d0 a2 d0 b5  Equals("(5) ....
0d40: d0 ba d1 81 d1 82 20 d0 bd d0 b5 20 d1 81 d0 be  ...... .... ....
0d50: d0 be d1 82 d0 b2 d0 b5 d1 82 d1 81 d1 82 d0 b2  ................
0d60: d1 83 d0 b5 d1 82 20 d0 be d0 b6 d0 b8 d0 b4 d0  ...... .........
0d70: b0 d0 b5 d0 bc d0 be d0 bc d1 83 22 2c 20 0d 0a  ...........", ..
0d80: 20 20 20 20 20 20 20 20 22 d0 b2 d1 82 d0 be d1          ".......
0d90: 80 d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba  ..... ..........
0da0: d0 b0 5c 6e d1 82 d1 80 d0 b5 d1 82 d1 8c d1 8f  ..\n............
0db0: 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 22 2c 20   ............", 
0dc0: 72 2e 47 65 74 54 65 78 74 28 29 29 3b 0d 0a 20  r.GetText());.. 
0dd0: 20 20 20 20 20 20 20 0d 0a 20 20 20 20 2f 2f 20         ..    // 
0de0: d0 9f d1 80 d0 be d0 b8 d0 b7 d0 b2 d0 be d0 bb  ................
0df0: d1 8c d0 bd d1 8b d0 b9 20 d1 84 d1 80 d0 b0 d0  ........ .......
0e00: b3 d0 bc d0 b5 d0 bd d1 82 2e 0d 0a 20 20 20 20  ............    
0e10: 72 20 3d 20 74 77 6e 64 2e 52 61 6e 67 65 28 33  r = twnd.Range(3
0e20: 2c 20 38 2c 20 35 2c 20 32 31 29 3b 0d 0a 20 20  , 8, 5, 21);..  
0e30: 20 20 61 73 73 65 72 74 45 71 75 61 6c 73 28 22    assertEquals("
0e40: 28 36 29 20 d0 a2 d0 b5 d0 ba d1 81 d1 82 20 d0  (6) .......... .
0e50: bd d0 b5 20 d1 81 d0 be d0 be d1 82 d0 b2 d0 b5  ... ............
0e60: d1 82 d1 81 d1 82 d0 b2 d1 83 d0 b5 d1 82 20 d0  .............. .
0e70: be d0 b6 d0 b8 d0 b4 d0 b0 d0 b5 d0 bc d0 be d0  ................
0e80: bc d1 83 22 2c 20 0d 0a 20 20 20 20 20 20 20 20  ...", ..        
0e90: 22 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 5c 6e d1  "............\n.
0ea0: 87 d0 b5 d1 82 d0 b2 d0 b5 d1 80 d1 82 d0 b0 d1  ................
0eb0: 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 20 2d  . ............ -
0ec0: 20 d1 81 d0 b0 d0 bc d0 b0 d1 8f 20 d0 b4 d0 bb   .......... ....
0ed0: d0 b8 d0 bd d0 bd d0 b0 d1 8f 20 d0 b8 d0 b7 20  .......... .... 
0ee0: d0 b2 d1 81 d0 b5 d1 85 20 d1 81 d1 82 d1 80 d0  ........ .......
0ef0: be d0 ba 5c 6e d0 bf d1 8f d1 82 d0 b0 d1 8f 20  ...\n.......... 
0f00: d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 20 d0 bf d0  ............ ...
0f10: be d0 ba d0 be d1 80 d0 be d1 87 d0 b5 22 2c 20  .............", 
0f20: 72 2e 47 65 74 54 65 78 74 28 29 29 3b 0d 0a 0d  r.GetText());...
0f30: 0a 20 20 20 20 2f 2f 20 d0 9f d0 be d1 81 d0 bb  .    // ........
0f40: d0 b5 d0 b4 d0 bd d1 8f d1 8f 20 d1 81 d1 82 d1  .......... .....
0f50: 80 d0 be d0 ba d0 b0 2e 0d 0a 20 20 20 20 72 20  ..........    r 
0f60: 3d 20 74 77 6e 64 2e 52 61 6e 67 65 28 37 2c 20  = twnd.Range(7, 
0f70: 31 2c 20 37 29 3b 0d 0a 20 20 20 20 61 73 73 65  1, 7);..    asse
0f80: 72 74 45 71 75 61 6c 73 28 22 28 36 29 20 d0 a2  rtEquals("(6) ..
0f90: d0 b5 d0 ba d1 81 d1 82 20 d0 bd d0 b5 20 d1 81  ........ .... ..
0fa0: d0 be d0 be d1 82 d0 b2 d0 b5 d1 82 d1 81 d1 82  ................
0fb0: d0 b2 d1 83 d0 b5 d1 82 20 d0 be d0 b6 d0 b8 d0  ........ .......
0fc0: b4 d0 b0 d0 b5 d0 bc d0 be d0 bc d1 83 22 2c 20  .............", 
0fd0: 0d 0a 20 20 20 20 20 20 20 20 22 d1 81 d0 b5 d0  ..        ".....
0fe0: b4 d1 8c d0 bc d0 b0 d1 8f 20 d1 81 d1 82 d1 80  ......... ......
0ff0: d0 be d0 ba d0 b0 22 2c 20 72 2e 47 65 74 54 65  ......", r.GetTe
1000: 78 74 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  xt());..        
1010: 0d 0a 7d 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20  ..}....function 
1020: 6d 61 63 72 6f 73 54 65 73 74 52 61 6e 67 65 53  macrosTestRangeS
1030: 65 74 54 65 78 74 31 28 29 0d 0a 7b 0d 0a 20 20  etText1()..{..  
1040: 20 20 61 73 73 65 72 74 54 72 75 65 28 27 d0 9d    assertTrue('..
1050: d0 b5 d1 82 20 d0 b0 d0 ba d1 82 d0 b8 d0 b2 d0  .... ...........
1060: bd d0 be d0 b3 d0 be 20 d1 82 d0 b5 d0 ba d1 81  ....... ........
1070: d1 82 d0 be d0 b2 d0 be d0 b3 d0 be 20 d0 be d0  ............ ...
1080: ba d0 bd d0 b0 21 27 2c 20 74 77 6e 64 2e 49 73  .....!', twnd.Is
1090: 41 63 74 69 76 65 28 29 29 3b 20 20 20 20 0d 0a  Active());    ..
10a0: 0d 0a 20 20 20 20 2f 2f 20 d0 98 d0 b7 d0 bc d0  ..    // .......
10b0: b5 d0 bd d0 b5 d0 bd d0 b8 d0 b5 20 d1 81 d0 be  ........... ....
10c0: d0 b4 d0 b5 d1 80 d0 b6 d0 b8 d0 bc d0 be d0 b3  ................
10d0: d0 be 20 d0 be d0 b4 d0 bd d0 be d0 b9 20 d1 81  .. .......... ..
10e0: d1 82 d1 80 d0 be d0 ba d0 b8 2e 0d 0a 20 20 20  .............   
10f0: 20 76 61 72 20 73 31 20 3d 20 22 d0 bf d0 b5 d1   var s1 = ".....
1100: 80 d0 b2 d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be  ....... ........
1110: d0 ba d0 b0 5c 6e 73 65 63 6f 6e 64 20 72 6f 77  ....\nsecond row
1120: 5c 6e d1 82 d1 80 d0 b5 d1 82 d1 8c d1 8f 20 d1  \n............ .
1130: 81 d1 82 d1 80 d0 be d0 ba d0 b0 5c 6e d1 87 d0  ...........\n...
1140: b5 d1 82 d0 b2 d0 b5 d1 80 d1 82 d0 b0 d1 8f 20  ............... 
1150: d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 20 2d 20 d1  ............ - .
1160: 81 d0 b0 d0 bc d0 b0 d1 8f 20 d0 b4 d0 bb d0 b8  ......... ......
1170: d0 bd d0 bd d0 b0 d1 8f 20 d0 b8 d0 b7 20 d0 b2  ........ .... ..
1180: d1 81 d0 b5 d1 85 20 d1 81 d1 82 d1 80 d0 be d0  ...... .........
1190: ba 5c 6e 22 0d 0a 20 20 20 20 20 20 20 20 2b 20  .\n"..        + 
11a0: 22 d0 bf d1 8f d1 82 d0 b0 d1 8f 20 d1 81 d1 82  ".......... ....
11b0: d1 80 d0 be d0 ba d0 b0 20 d0 bf d0 be d0 ba d0  ........ .......
11c0: be d1 80 d0 be d1 87 d0 b5 2c 20 d0 bd d0 be 20  ........., .... 
11d0: d1 82 d0 be d0 b6 d0 b5 20 d0 bd d0 b8 d1 87 d0  ........ .......
11e0: b5 d0 b3 d0 be 5c 6e d1 88 d0 b5 d1 81 d1 82 d0  .....\n.........
11f0: b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0  ... ............
1200: 5c 6e d1 81 d0 b5 d0 b4 d1 8c d0 bc d0 b0 d1 8f  \n..............
1210: 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 22 3b 0d   ............";.
1220: 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 76  .        ..    v
1230: 61 72 20 72 20 3d 20 74 77 6e 64 2e 52 61 6e 67  ar r = twnd.Rang
1240: 65 28 32 2c 20 31 2c 20 32 29 2e 53 65 74 54 65  e(2, 1, 2).SetTe
1250: 78 74 28 22 73 65 63 6f 6e 64 20 72 6f 77 22 29  xt("second row")
1260: 3b 0d 0a 20 20 20 20 61 73 73 65 72 74 45 71 75  ;..    assertEqu
1270: 61 6c 73 28 73 31 2c 20 74 65 78 74 44 6f 63 2e  als(s1, textDoc.
1280: 47 65 74 54 65 78 74 28 29 29 3b 0d 0a 7d 0d 0a  GetText());..}..
1290: 0d 0a 66 75 6e 63 74 69 6f 6e 20 6d 61 63 72 6f  ..function macro
12a0: 73 54 65 73 74 52 61 6e 67 65 53 65 74 54 65 78  sTestRangeSetTex
12b0: 74 32 28 29 0d 0a 7b 0d 0a 20 20 20 20 61 73 73  t2()..{..    ass
12c0: 65 72 74 54 72 75 65 28 27 d0 9d d0 b5 d1 82 20  ertTrue('...... 
12d0: d0 b0 d0 ba d1 82 d0 b8 d0 b2 d0 bd d0 be d0 b3  ................
12e0: d0 be 20 d1 82 d0 b5 d0 ba d1 81 d1 82 d0 be d0  .. .............
12f0: b2 d0 be d0 b3 d0 be 20 d0 be d0 ba d0 bd d0 b0  ....... ........
1300: 21 27 2c 20 74 77 6e 64 2e 49 73 41 63 74 69 76  !', twnd.IsActiv
1310: 65 28 29 29 3b 20 20 20 20 0d 0a 0d 0a 20 20 20  e());    ....   
1320: 20 2f 2f 20 d0 98 d0 b7 d0 bc d0 b5 d0 bd d0 b5   // ............
1330: d0 bd d0 b8 d0 b5 20 d1 81 d0 be d0 b4 d0 b5 d1  ...... .........
1340: 80 d0 b6 d0 b8 d0 bc d0 be d0 b3 d0 be 20 d0 bd  ............. ..
1350: d0 b5 d1 81 d0 ba d0 be d0 bb d1 8c d0 ba d0 b8  ................
1360: d1 85 20 d1 81 d1 82 d1 80 d0 be d0 ba 2e 0d 0a  .. .............
1370: 20 20 20 20 76 61 72 20 73 32 20 3d 20 22 d0 bf      var s2 = "..
1380: d0 b5 d1 80 d0 b2 d0 b0 d1 8f 20 d1 81 d1 82 d1  .......... .....
1390: 80 d0 be d0 ba d0 b0 5c 6e 73 65 63 6f 6e 64 20  .......\nsecond 
13a0: 72 6f 77 5c 6e 74 68 69 72 64 20 72 6f 77 5c 6e  row\nthird row\n
13b0: 66 6f 75 72 20 72 6f 77 5c 6e 22 0d 0a 20 20 20  four row\n"..   
13c0: 20 20 20 20 20 2b 20 22 d0 bf d1 8f d1 82 d0 b0       + "........
13d0: d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 20  .. ............ 
13e0: d0 bf d0 be d0 ba d0 be d1 80 d0 be d1 87 d0 b5  ................
13f0: 2c 20 d0 bd d0 be 20 d1 82 d0 be d0 b6 d0 b5 20  , .... ........ 
1400: d0 bd d0 b8 d1 87 d0 b5 d0 b3 d0 be 5c 6e d1 88  ............\n..
1410: d0 b5 d1 81 d1 82 d0 b0 d1 8f 20 d1 81 d1 82 d1  .......... .....
1420: 80 d0 be d0 ba d0 b0 5c 6e d1 81 d0 b5 d0 b4 d1  .......\n.......
1430: 8c d0 bc d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be  ....... ........
1440: d0 ba d0 b0 22 3b 0d 0a 20 20 20 20 20 20 20 20  ....";..        
1450: 0d 0a 20 20 20 20 76 61 72 20 72 20 3d 20 74 77  ..    var r = tw
1460: 6e 64 2e 52 61 6e 67 65 28 32 2c 20 31 2c 20 34  nd.Range(2, 1, 4
1470: 29 2e 53 65 74 54 65 78 74 28 22 73 65 63 6f 6e  ).SetText("secon
1480: 64 20 72 6f 77 5c 6e 74 68 69 72 64 20 72 6f 77  d row\nthird row
1490: 5c 6e 66 6f 75 72 20 72 6f 77 22 29 3b 0d 0a 20  \nfour row");.. 
14a0: 20 20 20 61 73 73 65 72 74 45 71 75 61 6c 73 28     assertEquals(
14b0: 73 32 2c 20 74 65 78 74 44 6f 63 2e 47 65 74 54  s2, textDoc.GetT
14c0: 65 78 74 28 29 29 3b 20 20 20 20 0d 0a 7d 0d 0a  ext());    ..}..
14d0: 0d 0a 66 75 6e 63 74 69 6f 6e 20 6d 61 63 72 6f  ..function macro
14e0: 73 54 65 73 74 52 61 6e 67 65 53 65 74 54 65 78  sTestRangeSetTex
14f0: 74 33 28 29 0d 0a 7b 0d 0a 20 20 20 20 61 73 73  t3()..{..    ass
1500: 65 72 74 54 72 75 65 28 27 d0 9d d0 b5 d1 82 20  ertTrue('...... 
1510: d0 b0 d0 ba d1 82 d0 b8 d0 b2 d0 bd d0 be d0 b3  ................
1520: d0 be 20 d1 82 d0 b5 d0 ba d1 81 d1 82 d0 be d0  .. .............
1530: b2 d0 be d0 b3 d0 be 20 d0 be d0 ba d0 bd d0 b0  ....... ........
1540: 21 27 2c 20 74 77 6e 64 2e 49 73 41 63 74 69 76  !', twnd.IsActiv
1550: 65 28 29 29 3b 20 20 20 20 0d 0a 0d 0a 20 20 20  e());    ....   
1560: 20 2f 2f 20 d0 98 d0 b7 d0 bc d0 b5 d0 bd d0 b5   // ............
1570: d0 bd d0 b8 d0 b5 20 d0 bf d1 80 d0 be d0 b8 d0  ...... .........
1580: b7 d0 b2 d0 be d0 bb d1 8c d0 bd d0 be d0 b3 d0  ................
1590: be 20 d1 83 d1 87 d0 b0 d1 81 d1 82 d0 ba d0 b0  . ..............
15a0: 20 d1 82 d0 b5 d0 ba d1 81 d1 82 d0 b0 2e 0d 0a   ...............
15b0: 20 20 20 20 76 61 72 20 73 33 20 3d 20 22 d0 bf      var s3 = "..
15c0: d0 b5 d1 80 d0 b2 d0 b0 d1 8f 20 d1 81 d1 82 d1  .......... .....
15d0: 80 d0 be d0 ba d0 b0 5c 6e d0 b2 d1 82 d0 be d1  .......\n.......
15e0: 80 d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba  ..... ..........
15f0: d0 b0 5c 6e d1 82 d1 80 d0 b5 d1 82 d1 8c d1 8f  ..\n............
1600: 20 d1 81 d1 82 d1 80 d0 be d1 87 d0 ba d0 b0 20   .............. 
1610: d1 82 d0 b5 d0 bf d0 b5 d1 80 d1 8c 20 d0 b1 d1  ............ ...
1620: 83 d0 b4 d0 b5 d1 82 20 d0 b4 d0 bb d0 b8 d0 bd  ....... ........
1630: d1 8c d1 88 d0 b5 20 d0 bb d1 8e d0 b1 d0 be d0  ...... .........
1640: b9 20 d0 b4 d1 80 d1 83 d0 b3 d0 be d0 b9 20 d1  . ............ .
1650: 81 d1 82 d1 80 d0 be d0 ba d0 b8 5c 6e 22 0d 0a  ...........\n"..
1660: 20 20 20 20 20 20 20 20 2b 20 22 d1 87 d0 b5 d1          + ".....
1670: 82 d0 b2 d0 b5 d1 80 d1 82 d0 b0 d1 8f 20 d1 81  ............. ..
1680: d1 82 d1 80 d0 be d0 ba d0 b0 20 2d 20 d0 bd d0  .......... - ...
1690: b5 20 d1 81 d0 b0 d0 bc d0 b0 d1 8f 20 d0 b4 d0  . .......... ...
16a0: bb d0 b8 d0 bd d0 bd d0 b0 d1 8f 20 d0 b8 d0 b7  ........... ....
16b0: 20 d0 b2 d1 81 d0 b5 d1 85 20 d1 81 d1 82 d1 80   ........ ......
16c0: d0 be d0 ba 5c 6e 22 0d 0a 20 20 20 20 20 20 20  ....\n"..       
16d0: 20 2b 20 22 d0 bf d1 8f d1 82 d0 b0 d1 8f 20 d1   + ".......... .
16e0: 81 d1 82 d1 80 d0 be d0 ba d0 b0 20 d0 bf d0 be  ........... ....
16f0: d0 ba d0 be d1 80 d0 be d1 87 d0 b5 2c 20 d0 bd  ............, ..
1700: d0 be 20 d1 82 d0 be d0 b6 d0 b5 20 d0 bd d0 b8  .. ........ ....
1710: d1 87 d0 b5 d0 b3 d0 be 5c 6e d1 88 d0 b5 d1 81  ........\n......
1720: d1 82 d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be d0  ...... .........
1730: ba d0 b0 5c 6e d1 81 d0 b5 d0 b4 d1 8c d0 bc d0  ...\n...........
1740: b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0  ... ............
1750: 22 3b 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20  ";..        ..  
1760: 20 20 76 61 72 20 72 20 3d 20 74 77 6e 64 2e 52    var r = twnd.R
1770: 61 6e 67 65 28 33 2c 20 31 32 2c 20 34 2c 20 31  ange(3, 12, 4, 1
1780: 38 29 2e 53 65 74 54 65 78 74 28 22 d1 87 d0 ba  8).SetText("....
1790: d0 b0 20 d1 82 d0 b5 d0 bf d0 b5 d1 80 d1 8c 20  .. ............ 
17a0: d0 b1 d1 83 d0 b4 d0 b5 d1 82 20 d0 b4 d0 bb d0  .......... .....
17b0: b8 d0 bd d1 8c d1 88 d0 b5 20 d0 bb d1 8e d0 b1  ......... ......
17c0: d0 be d0 b9 20 d0 b4 d1 80 d1 83 d0 b3 d0 be d0  .... ...........
17d0: b9 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b8 5c 6e  . ............\n
17e0: d1 87 d0 b5 d1 82 d0 b2 d0 b5 d1 80 d1 82 d0 b0  ................
17f0: d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 20  .. ............ 
1800: 2d 20 d0 bd d0 b5 22 29 3b 0d 0a 20 20 20 20 61  - ....");..    a
1810: 73 73 65 72 74 45 71 75 61 6c 73 28 73 33 2c 20  ssertEquals(s3, 
1820: 74 65 78 74 44 6f 63 2e 47 65 74 54 65 78 74 28  textDoc.GetText(
1830: 29 29 3b 0d 0a 7d 0d 0a 0d 0a 66 75 6e 63 74 69  ));..}....functi
1840: 6f 6e 20 6d 61 63 72 6f 73 54 65 73 74 47 65 74  on macrosTestGet
1850: 4c 69 6e 65 73 28 29 0d 0a 7b 0d 0a 20 20 20 20  Lines()..{..    
1860: 61 73 73 65 72 74 54 72 75 65 28 27 d0 9d d0 b5  assertTrue('....
1870: d1 82 20 d0 b0 d0 ba d1 82 d0 b8 d0 b2 d0 bd d0  .. .............
1880: be d0 b3 d0 be 20 d1 82 d0 b5 d0 ba d1 81 d1 82  ..... ..........
1890: d0 be d0 b2 d0 be d0 b3 d0 be 20 d0 be d0 ba d0  .......... .....
18a0: bd d0 b0 21 27 2c 20 74 77 6e 64 2e 49 73 41 63  ...!', twnd.IsAc
18b0: 74 69 76 65 28 29 29 3b 20 20 20 20 0d 0a 0d 0a  tive());    ....
18c0: 20 20 20 20 2f 2f 20 d0 92 d1 81 d0 b5 20 d1 81      // ...... ..
18d0: d1 82 d1 80 d0 be d0 ba d0 b8 2e 0d 0a 20 20 20  .............   
18e0: 20 76 61 72 20 61 31 20 3d 20 5b 22 d0 bf d0 b5   var a1 = ["....
18f0: d1 80 d0 b2 d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0  ........ .......
1900: be d0 ba d0 b0 22 2c 20 22 d0 b2 d1 82 d0 be d1  .....", ".......
1910: 80 d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba  ..... ..........
1920: d0 b0 22 2c 20 22 d1 82 d1 80 d0 b5 d1 82 d1 8c  ..", "..........
1930: d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 22  .. ............"
1940: 2c 20 0d 0a 20 20 20 20 20 20 20 20 22 d1 87 d0  , ..        "...
1950: b5 d1 82 d0 b2 d0 b5 d1 80 d1 82 d0 b0 d1 8f 20  ............... 
1960: d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 20 2d 20 d1  ............ - .
1970: 81 d0 b0 d0 bc d0 b0 d1 8f 20 d0 b4 d0 bb d0 b8  ......... ......
1980: d0 bd d0 bd d0 b0 d1 8f 20 d0 b8 d0 b7 20 d0 b2  ........ .... ..
1990: d1 81 d0 b5 d1 85 20 d1 81 d1 82 d1 80 d0 be d0  ...... .........
19a0: ba 22 2c 0d 0a 20 20 20 20 20 20 20 20 22 d0 bf  .",..        "..
19b0: d1 8f d1 82 d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0  ........ .......
19c0: be d0 ba d0 b0 20 d0 bf d0 be d0 ba d0 be d1 80  ..... ..........
19d0: d0 be d1 87 d0 b5 2c 20 d0 bd d0 be 20 d1 82 d0  ......, .... ...
19e0: be d0 b6 d0 b5 20 d0 bd d0 b8 d1 87 d0 b5 d0 b3  ..... ..........
19f0: d0 be 22 2c 0d 0a 20 20 20 20 20 20 20 20 22 d1  ..",..        ".
1a00: 88 d0 b5 d1 81 d1 82 d0 b0 d1 8f 20 d1 81 d1 82  ........... ....
1a10: d1 80 d0 be d0 ba d0 b0 22 2c 20 22 d1 81 d0 b5  ........", "....
1a20: d0 b4 d1 8c d0 bc d0 b0 d1 8f 20 d1 81 d1 82 d1  .......... .....
1a30: 80 d0 be d0 ba d0 b0 22 5d 3b 20 20 20 20 0d 0a  ......."];    ..
1a40: 20 20 20 20 61 73 73 65 72 74 41 72 72 61 79 45      assertArrayE
1a50: 71 75 61 6c 73 28 22 28 31 29 20 d0 9c d0 b0 d1  quals("(1) .....
1a60: 81 d1 81 d0 b8 d0 b2 d1 8b 20 d1 81 d1 82 d1 80  ......... ......
1a70: d0 be d0 ba 20 d0 be d1 82 d0 bb d0 b8 d1 87 d0  .... ...........
1a80: b0 d1 8e d1 82 d1 81 d1 8f 2e 22 2c 20 61 31 2c  ..........", a1,
1a90: 20 74 77 6e 64 2e 47 65 74 4c 69 6e 65 73 28 29   twnd.GetLines()
1aa0: 29 3b 0d 0a 20 20 20 20 20 20 20 0d 0a 20 20 20  );..       ..   
1ab0: 20 2f 2f 20 d0 9f d0 b5 d1 80 d0 b2 d0 b0 d1 8f   // ............
1ac0: 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 2e 0d 0a   ...............
1ad0: 20 20 20 20 76 61 72 20 61 32 20 3d 20 5b 22 d0      var a2 = [".
1ae0: bf d0 b5 d1 80 d0 b2 d0 b0 d1 8f 20 d1 81 d1 82  ........... ....
1af0: d1 80 d0 be d0 ba d0 b0 22 5d 3b 0d 0a 20 20 20  ........"];..   
1b00: 20 61 73 73 65 72 74 41 72 72 61 79 45 71 75 61   assertArrayEqua
1b10: 6c 73 28 22 28 32 29 20 d0 9c d0 b0 d1 81 d1 81  ls("(2) ........
1b20: d0 b8 d0 b2 d1 8b 20 d1 81 d1 82 d1 80 d0 be d0  ...... .........
1b30: ba 20 d0 be d1 82 d0 bb d0 b8 d1 87 d0 b0 d1 8e  . ..............
1b40: d1 82 d1 81 d1 8f 2e 22 2c 20 61 32 2c 20 74 77  .......", a2, tw
1b50: 6e 64 2e 47 65 74 4c 69 6e 65 73 28 31 29 29 3b  nd.GetLines(1));
1b60: 0d 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2f 20 d0  ..    ..    // .
1b70: 9f d0 be d1 81 d0 bb d0 b5 d0 b4 d0 bd d1 8f d1  ................
1b80: 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 2e 0d  . ..............
1b90: 0a 20 20 20 20 76 61 72 20 61 33 20 3d 20 5b 22  .    var a3 = ["
1ba0: d1 81 d0 b5 d0 b4 d1 8c d0 bc d0 b0 d1 8f 20 d1  .............. .
1bb0: 81 d1 82 d1 80 d0 be d0 ba d0 b0 22 5d 3b 0d 0a  ..........."];..
1bc0: 20 20 20 20 61 73 73 65 72 74 41 72 72 61 79 45      assertArrayE
1bd0: 71 75 61 6c 73 28 22 28 33 29 20 d0 9c d0 b0 d1  quals("(3) .....
1be0: 81 d1 81 d0 b8 d0 b2 d1 8b 20 d1 81 d1 82 d1 80  ......... ......
1bf0: d0 be d0 ba 20 d0 be d1 82 d0 bb d0 b8 d1 87 d0  .... ...........
1c00: b0 d1 8e d1 82 d1 81 d1 8f 2e 22 2c 20 61 33 2c  ..........", a3,
1c10: 20 74 77 6e 64 2e 47 65 74 4c 69 6e 65 73 28 37   twnd.GetLines(7
1c20: 29 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 20 d0 94  ));....    // ..
1c30: d0 b8 d0 b0 d0 bf d0 b0 d0 b7 d0 be d0 bd 20 d1  .............. .
1c40: 81 d1 82 d1 80 d0 be d0 ba 2e 0d 0a 20 20 20 20  ............    
1c50: 2f 2f 20 d0 92 d1 81 d0 b5 20 d1 81 d1 82 d1 80  // ...... ......
1c60: d0 be d0 ba d0 b8 2e 0d 0a 20 20 20 20 76 61 72  .........    var
1c70: 20 61 34 20 3d 20 5b 22 d1 87 d0 b5 d1 82 d0 b2   a4 = ["........
1c80: d0 b5 d1 80 d1 82 d0 b0 d1 8f 20 d1 81 d1 82 d1  .......... .....
1c90: 80 d0 be d0 ba d0 b0 20 2d 20 d1 81 d0 b0 d0 bc  ....... - ......
1ca0: d0 b0 d1 8f 20 d0 b4 d0 bb d0 b8 d0 bd d0 bd d0  .... ...........
1cb0: b0 d1 8f 20 d0 b8 d0 b7 20 d0 b2 d1 81 d0 b5 d1  ... .... .......
1cc0: 85 20 d1 81 d1 82 d1 80 d0 be d0 ba 22 2c 0d 0a  . ..........",..
1cd0: 20 20 20 20 20 20 20 20 22 d0 bf d1 8f d1 82 d0          ".......
1ce0: b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0  ... ............
1cf0: 20 d0 bf d0 be d0 ba d0 be d1 80 d0 be d1 87 d0   ...............
1d00: b5 2c 20 d0 bd d0 be 20 d1 82 d0 be d0 b6 d0 b5  ., .... ........
1d10: 20 d0 bd d0 b8 d1 87 d0 b5 d0 b3 d0 be 22 2c 22   ............","
1d20: d1 88 d0 b5 d1 81 d1 82 d0 b0 d1 8f 20 d1 81 d1  ............ ...
1d30: 82 d1 80 d0 be d0 ba d0 b0 22 5d 3b 20 20 20 20  ........."];    
1d40: 0d 0a 20 20 20 20 61 73 73 65 72 74 41 72 72 61  ..    assertArra
1d50: 79 45 71 75 61 6c 73 28 22 28 34 29 20 d0 9c d0  yEquals("(4) ...
1d60: b0 d1 81 d1 81 d0 b8 d0 b2 d1 8b 20 d1 81 d1 82  ........... ....
1d70: d1 80 d0 be d0 ba 20 d0 be d1 82 d0 bb d0 b8 d1  ...... .........
1d80: 87 d0 b0 d1 8e d1 82 d1 81 d1 8f 2e 22 2c 20 61  ............", a
1d90: 34 2c 20 74 77 6e 64 2e 47 65 74 4c 69 6e 65 73  4, twnd.GetLines
1da0: 28 34 2c 20 36 29 29 3b 0d 0a 20 20 20 20 0d 0a  (4, 6));..    ..
1db0: 7d 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 6d 61  }....function ma
1dc0: 63 72 6f 73 54 65 73 74 47 65 74 4c 69 6e 65 28  crosTestGetLine(
1dd0: 29 0d 0a 7b 09 0d 0a 09 61 73 73 65 72 74 54 72  )..{....assertTr
1de0: 75 65 28 27 d0 9d d0 b5 d1 82 20 d0 b0 d0 ba d1  ue('...... .....
1df0: 82 d0 b8 d0 b2 d0 bd d0 be d0 b3 d0 be 20 d1 82  ............. ..
1e00: d0 b5 d0 ba d1 81 d1 82 d0 be d0 b2 d0 be d0 b3  ................
1e10: d0 be 20 d0 be d0 ba d0 bd d0 b0 21 27 2c 20 74  .. ........!', t
1e20: 77 6e 64 2e 49 73 41 63 74 69 76 65 28 29 29 3b  wnd.IsActive());
1e30: 20 20 20 20 0d 0a 09 0d 0a 09 61 73 73 65 72 74      ......assert
1e40: 45 71 75 61 6c 73 28 22 28 31 29 20 d0 a1 d1 82  Equals("(1) ....
1e50: d1 80 d0 be d0 ba d0 b0 20 d0 be d1 82 d0 bb d0  ........ .......
1e60: b8 d1 87 d0 b0 d0 b5 d1 82 d1 81 d1 8f 20 d0 be  ............. ..
1e70: d1 82 20 d0 be d0 b6 d0 b8 d0 b4 d0 b0 d0 b5 d0  .. .............
1e80: bc d0 be d0 b9 22 2c 20 22 d0 bf d0 b5 d1 80 d0  .....", ".......
1e90: b2 d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba  ..... ..........
1ea0: d0 b0 22 2c 20 74 77 6e 64 2e 47 65 74 4c 69 6e  ..", twnd.GetLin
1eb0: 65 28 31 29 29 3b 0d 0a 09 61 73 73 65 72 74 45  e(1));...assertE
1ec0: 71 75 61 6c 73 28 22 28 32 29 20 d0 a1 d1 82 d1  quals("(2) .....
1ed0: 80 d0 be d0 ba d0 b0 20 d0 be d1 82 d0 bb d0 b8  ....... ........
1ee0: d1 87 d0 b0 d0 b5 d1 82 d1 81 d1 8f 20 d0 be d1  ............ ...
1ef0: 82 20 d0 be d0 b6 d0 b8 d0 b4 d0 b0 d0 b5 d0 bc  . ..............
1f00: d0 be d0 b9 22 2c 20 22 d1 87 d0 b5 d1 82 d0 b2  ....", "........
1f10: d0 b5 d1 80 d1 82 d0 b0 d1 8f 20 d1 81 d1 82 d1  .......... .....
1f20: 80 d0 be d0 ba d0 b0 20 2d 20 d1 81 d0 b0 d0 bc  ....... - ......
1f30: d0 b0 d1 8f 20 d0 b4 d0 bb d0 b8 d0 bd d0 bd d0  .... ...........
1f40: b0 d1 8f 20 d0 b8 d0 b7 20 d0 b2 d1 81 d0 b5 d1  ... .... .......
1f50: 85 20 d1 81 d1 82 d1 80 d0 be d0 ba 22 2c 20 74  . ..........", t
1f60: 77 6e 64 2e 47 65 74 4c 69 6e 65 28 34 29 29 3b  wnd.GetLine(4));
1f70: 0d 0a 09 61 73 73 65 72 74 45 71 75 61 6c 73 28  ...assertEquals(
1f80: 22 28 33 29 20 d0 a1 d1 82 d1 80 d0 be d0 ba d0  "(3) ...........
1f90: b0 20 d0 be d1 82 d0 bb d0 b8 d1 87 d0 b0 d0 b5  . ..............
1fa0: d1 82 d1 81 d1 8f 20 d0 be d1 82 20 d0 be d0 b6  ...... .... ....
1fb0: d0 b8 d0 b4 d0 b0 d0 b5 d0 bc d0 be d0 b9 22 2c  ..............",
1fc0: 20 22 d1 81 d0 b5 d0 b4 d1 8c d0 bc d0 b0 d1 8f   "..............
1fd0: 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 22 2c 20   ............", 
1fe0: 74 77 6e 64 2e 47 65 74 4c 69 6e 65 28 37 29 29  twnd.GetLine(7))
1ff0: 3b 0d 0a 7d 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e  ;..}....function
2000: 20 6d 61 63 72 6f 73 54 65 73 74 44 65 6c 65 74   macrosTestDelet
2010: 65 4c 69 6e 65 31 28 29 0d 0a 7b 0d 0a 20 20 20  eLine1()..{..   
2020: 20 61 73 73 65 72 74 54 72 75 65 28 27 d0 9d d0   assertTrue('...
2030: b5 d1 82 20 d0 b0 d0 ba d1 82 d0 b8 d0 b2 d0 bd  ... ............
2040: d0 be d0 b3 d0 be 20 d1 82 d0 b5 d0 ba d1 81 d1  ...... .........
2050: 82 d0 be d0 b2 d0 be d0 b3 d0 be 20 d0 be d0 ba  ........... ....
2060: d0 bd d0 b0 21 27 2c 20 74 77 6e 64 2e 49 73 41  ....!', twnd.IsA
2070: 63 74 69 76 65 28 29 29 3b 20 20 20 20 0d 0a 0d  ctive());    ...
2080: 0a 20 20 20 20 2f 2f 20 d0 a3 d0 b4 d0 b0 d0 bb  .    // ........
2090: d1 8f d0 b5 d0 bc 20 d0 bf d0 b5 d1 80 d0 b2 d1  ...... .........
20a0: 83 d1 8e 20 d1 81 d1 82 d1 80 d0 be d0 ba d1 83  ... ............
20b0: 0d 0a 20 20 20 20 74 77 6e 64 2e 44 65 6c 65 74  ..    twnd.Delet
20c0: 65 4c 69 6e 65 28 31 29 3b 0d 0a 20 20 20 20 76  eLine(1);..    v
20d0: 61 72 20 74 31 20 3d 20 22 d0 b2 d1 82 d0 be d1  ar t1 = ".......
20e0: 80 d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba  ..... ..........
20f0: d0 b0 5c 6e d1 82 d1 80 d0 b5 d1 82 d1 8c d1 8f  ..\n............
2100: 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 5c 6e d1   ............\n.
2110: 87 d0 b5 d1 82 d0 b2 d0 b5 d1 80 d1 82 d0 b0 d1  ................
2120: 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 20 2d  . ............ -
2130: 20 d1 81 d0 b0 d0 bc d0 b0 d1 8f 20 d0 b4 d0 bb   .......... ....
2140: d0 b8 d0 bd d0 bd d0 b0 d1 8f 20 d0 b8 d0 b7 20  .......... .... 
2150: d0 b2 d1 81 d0 b5 d1 85 20 d1 81 d1 82 d1 80 d0  ........ .......
2160: be d0 ba 5c 6e 22 0d 0a 20 20 20 20 2b 20 22 d0  ...\n"..    + ".
2170: bf d1 8f d1 82 d0 b0 d1 8f 20 d1 81 d1 82 d1 80  ......... ......
2180: d0 be d0 ba d0 b0 20 d0 bf d0 be d0 ba d0 be d1  ...... .........
2190: 80 d0 be d1 87 d0 b5 2c 20 d0 bd d0 be 20 d1 82  ......., .... ..
21a0: d0 be d0 b6 d0 b5 20 d0 bd d0 b8 d1 87 d0 b5 d0  ...... .........
21b0: b3 d0 be 5c 6e d1 88 d0 b5 d1 81 d1 82 d0 b0 d1  ...\n...........
21c0: 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 5c 6e  . ............\n
21d0: d1 81 d0 b5 d0 b4 d1 8c d0 bc d0 b0 d1 8f 20 d1  .............. .
21e0: 81 d1 82 d1 80 d0 be d0 ba d0 b0 22 3b 0d 0a 20  ...........";.. 
21f0: 20 20 20 61 73 73 65 72 74 45 71 75 61 6c 73 28     assertEquals(
2200: 74 31 2c 20 74 65 78 74 44 6f 63 2e 47 65 74 54  t1, textDoc.GetT
2210: 65 78 74 28 29 29 3b 20 20 20 20 0d 0a 7d 0d 0a  ext());    ..}..
2220: 0d 0a 66 75 6e 63 74 69 6f 6e 20 6d 61 63 72 6f  ..function macro
2230: 73 54 65 73 74 44 65 6c 65 74 65 4c 69 6e 65 32  sTestDeleteLine2
2240: 28 29 0d 0a 7b 0d 0a 20 20 20 20 61 73 73 65 72  ()..{..    asser
2250: 74 54 72 75 65 28 27 d0 9d d0 b5 d1 82 20 d0 b0  tTrue('...... ..
2260: d0 ba d1 82 d0 b8 d0 b2 d0 bd d0 be d0 b3 d0 be  ................
2270: 20 d1 82 d0 b5 d0 ba d1 81 d1 82 d0 be d0 b2 d0   ...............
2280: be d0 b3 d0 be 20 d0 be d0 ba d0 bd d0 b0 21 27  ..... ........!'
2290: 2c 20 74 77 6e 64 2e 49 73 41 63 74 69 76 65 28  , twnd.IsActive(
22a0: 29 29 3b 20 20 20 20 0d 0a 0d 0a 20 20 20 20 2f  ));    ....    /
22b0: 2f 20 d0 a3 d0 b4 d0 b0 d0 bb d1 8f d0 b5 d0 bc  / ..............
22c0: 20 d0 bf d0 be d1 81 d0 bb d0 b5 d0 b4 d0 bd d1   ...............
22d0: 8e d1 8e 20 d1 81 d1 82 d1 80 d0 be d0 ba d1 83  ... ............
22e0: 0d 0a 20 20 20 20 74 77 6e 64 2e 44 65 6c 65 74  ..    twnd.Delet
22f0: 65 4c 69 6e 65 28 37 29 3b 0d 0a 20 20 20 20 76  eLine(7);..    v
2300: 61 72 20 74 31 20 3d 20 22 d0 bf d0 b5 d1 80 d0  ar t1 = ".......
2310: b2 d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba  ..... ..........
2320: d0 b0 5c 6e d0 b2 d1 82 d0 be d1 80 d0 b0 d1 8f  ..\n............
2330: 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 5c 6e d1   ............\n.
2340: 82 d1 80 d0 b5 d1 82 d1 8c d1 8f 20 d1 81 d1 82  ........... ....
2350: d1 80 d0 be d0 ba d0 b0 5c 6e d1 87 d0 b5 d1 82  ........\n......
2360: d0 b2 d0 b5 d1 80 d1 82 d0 b0 d1 8f 20 d1 81 d1  ............ ...
2370: 82 d1 80 d0 be d0 ba d0 b0 20 2d 20 d1 81 d0 b0  ......... - ....
2380: d0 bc d0 b0 d1 8f 20 d0 b4 d0 bb d0 b8 d0 bd d0  ...... .........
2390: bd d0 b0 d1 8f 20 d0 b8 d0 b7 20 d0 b2 d1 81 d0  ..... .... .....
23a0: b5 d1 85 20 d1 81 d1 82 d1 80 d0 be d0 ba 5c 6e  ... ..........\n
23b0: 22 0d 0a 20 20 20 20 2b 20 22 d0 bf d1 8f d1 82  "..    + "......
23c0: d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0  .... ...........
23d0: b0 20 d0 bf d0 be d0 ba d0 be d1 80 d0 be d1 87  . ..............
23e0: d0 b5 2c 20 d0 bd d0 be 20 d1 82 d0 be d0 b6 d0  .., .... .......
23f0: b5 20 d0 bd d0 b8 d1 87 d0 b5 d0 b3 d0 be 5c 6e  . ............\n
2400: d1 88 d0 b5 d1 81 d1 82 d0 b0 d1 8f 20 d1 81 d1  ............ ...
2410: 82 d1 80 d0 be d0 ba d0 b0 22 3b 0d 0a 20 20 20  .........";..   
2420: 20 61 73 73 65 72 74 45 71 75 61 6c 73 28 22 d0   assertEquals(".
2430: a3 d0 b4 d0 b0 d0 bb d0 b5 d0 bd d0 b8 d0 b5 20  ............... 
2440: d0 bf d0 be d1 81 d0 bb d0 b5 d0 b4 d0 bd d0 b5  ................
2450: d0 b9 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b8 20  .. ............ 
2460: d1 81 d0 bb d0 be d0 bc d0 b0 d0 bd d0 be 3a 20  ..............: 
2470: d0 bd d0 b5 20 d1 83 d0 b4 d0 b0 d0 bb d1 8f d0  .... ...........
2480: b5 d1 82 d1 81 d1 8f 20 d0 ba d0 be d0 bd d0 b5  ....... ........
2490: d1 87 d0 bd d1 8b d0 b9 20 d0 bf d0 b5 d1 80 d0  ........ .......
24a0: b5 d0 b2 d0 be d0 b4 20 d1 81 d1 82 d1 80 d0 be  ....... ........
24b0: d0 ba d0 b8 20 28 5c 5c 6e 29 22 2c 20 74 31 2c  .... (\\n)", t1,
24c0: 20 74 65 78 74 44 6f 63 2e 47 65 74 54 65 78 74   textDoc.GetText
24d0: 28 29 29 3b 20 20 20 20 0d 0a 7d 0d 0a 0d 0a 66  ());    ..}....f
24e0: 75 6e 63 74 69 6f 6e 20 6d 61 63 72 6f 73 54 65  unction macrosTe
24f0: 73 74 44 65 6c 65 74 65 4c 69 6e 65 33 28 29 0d  stDeleteLine3().
2500: 0a 7b 0d 0a 20 20 20 20 61 73 73 65 72 74 54 72  .{..    assertTr
2510: 75 65 28 27 d0 9d d0 b5 d1 82 20 d0 b0 d0 ba d1  ue('...... .....
2520: 82 d0 b8 d0 b2 d0 bd d0 be d0 b3 d0 be 20 d1 82  ............. ..
2530: d0 b5 d0 ba d1 81 d1 82 d0 be d0 b2 d0 be d0 b3  ................
2540: d0 be 20 d0 be d0 ba d0 bd d0 b0 21 27 2c 20 74  .. ........!', t
2550: 77 6e 64 2e 49 73 41 63 74 69 76 65 28 29 29 3b  wnd.IsActive());
2560: 20 20 20 20 0d 0a 0d 0a 20 20 20 20 2f 2f 20 d0      ....    // .
2570: a3 d0 b4 d0 b0 d0 bb d1 8f d0 b5 d0 bc 20 d1 81  ............. ..
2580: d1 82 d1 80 d0 be d0 ba d1 83 20 d0 b8 d0 b7 20  .......... .... 
2590: d1 81 d0 b5 d1 80 d0 b5 d0 b4 d0 b8 d0 bd d1 8b  ................
25a0: 20 d1 82 d0 b5 d0 ba d1 81 d1 82 d0 b0 2e 0d 0a   ...............
25b0: 20 20 20 20 74 77 6e 64 2e 44 65 6c 65 74 65 4c      twnd.DeleteL
25c0: 69 6e 65 28 35 29 3b 0d 0a 20 20 20 20 76 61 72  ine(5);..    var
25d0: 20 74 31 20 3d 20 22 d0 bf d0 b5 d1 80 d0 b2 d0   t1 = ".........
25e0: b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0  ... ............
25f0: 5c 6e d0 b2 d1 82 d0 be d1 80 d0 b0 d1 8f 20 d1  \n............ .
2600: 81 d1 82 d1 80 d0 be d0 ba d0 b0 5c 6e d1 82 d1  ...........\n...
2610: 80 d0 b5 d1 82 d1 8c d1 8f 20 d1 81 d1 82 d1 80  ......... ......
2620: d0 be d0 ba d0 b0 5c 6e d1 87 d0 b5 d1 82 d0 b2  ......\n........
2630: d0 b5 d1 80 d1 82 d0 b0 d1 8f 20 d1 81 d1 82 d1  .......... .....
2640: 80 d0 be d0 ba d0 b0 20 2d 20 d1 81 d0 b0 d0 bc  ....... - ......
2650: d0 b0 d1 8f 20 d0 b4 d0 bb d0 b8 d0 bd d0 bd d0  .... ...........
2660: b0 d1 8f 20 d0 b8 d0 b7 20 d0 b2 d1 81 d0 b5 d1  ... .... .......
2670: 85 20 d1 81 d1 82 d1 80 d0 be d0 ba 5c 6e 22 0d  . ..........\n".
2680: 0a 20 20 20 20 2b 20 22 d1 88 d0 b5 d1 81 d1 82  .    + "........
2690: d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0  .... ...........
26a0: b0 5c 6e d1 81 d0 b5 d0 b4 d1 8c d0 bc d0 b0 d1  .\n.............
26b0: 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 22 3b  . ............";
26c0: 0d 0a 20 20 20 20 61 73 73 65 72 74 45 71 75 61  ..    assertEqua
26d0: 6c 73 28 74 31 2c 20 74 65 78 74 44 6f 63 2e 47  ls(t1, textDoc.G
26e0: 65 74 54 65 78 74 28 29 29 3b 20 20 20 20 0d 0a  etText());    ..
26f0: 7d 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 6d 61  }....function ma
2700: 63 72 6f 73 54 65 73 74 41 64 64 4c 69 6e 65 28  crosTestAddLine(
2710: 29 0d 0a 7b 0d 0a 20 20 20 20 61 73 73 65 72 74  )..{..    assert
2720: 54 72 75 65 28 27 d0 9d d0 b5 d1 82 20 d0 b0 d0  True('...... ...
2730: ba d1 82 d0 b8 d0 b2 d0 bd d0 be d0 b3 d0 be 20  ............... 
2740: d1 82 d0 b5 d0 ba d1 81 d1 82 d0 be d0 b2 d0 be  ................
2750: d0 b3 d0 be 20 d0 be d0 ba d0 bd d0 b0 21 27 2c  .... ........!',
2760: 20 74 77 6e 64 2e 49 73 41 63 74 69 76 65 28 29   twnd.IsActive()
2770: 29 3b 20 20 20 20 0d 0a 20 20 20 20 0d 0a 20 20  );    ..    ..  
2780: 20 20 76 61 72 20 74 20 3d 20 22 d0 bf d0 b5 d1    var t = ".....
2790: 80 d0 b2 d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be  ....... ........
27a0: d0 ba d0 b0 5c 6e d0 b2 d1 82 d0 be d1 80 d0 b0  ....\n..........
27b0: d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 5c  .. ............\
27c0: 6e d1 82 d1 80 d0 b5 d1 82 d1 8c d1 8f 20 d1 81  n............ ..
27d0: d1 82 d1 80 d0 be d0 ba d0 b0 5c 6e d1 87 d0 b5  ..........\n....
27e0: d1 82 d0 b2 d0 b5 d1 80 d1 82 d0 b0 d1 8f 20 d1  .............. .
27f0: 81 d1 82 d1 80 d0 be d0 ba d0 b0 20 2d 20 d1 81  ........... - ..
2800: d0 b0 d0 bc d0 b0 d1 8f 20 d0 b4 d0 bb d0 b8 d0  ........ .......
2810: bd d0 bd d0 b0 d1 8f 20 d0 b8 d0 b7 20 d0 b2 d1  ....... .... ...
2820: 81 d0 b5 d1 85 20 d1 81 d1 82 d1 80 d0 be d0 ba  ..... ..........
2830: 5c 6e 22 0d 0a 20 20 20 20 20 20 20 20 2b 20 22  \n"..        + "
2840: d0 bf d1 8f d1 82 d0 b0 d1 8f 20 d1 81 d1 82 d1  .......... .....
2850: 80 d0 be d0 ba d0 b0 20 d0 bf d0 be d0 ba d0 be  ....... ........
2860: d1 80 d0 be d1 87 d0 b5 2c 20 d0 bd d0 be 20 d1  ........, .... .
2870: 82 d0 be d0 b6 d0 b5 20 d0 bd d0 b8 d1 87 d0 b5  ....... ........
2880: d0 b3 d0 be 5c 6e d1 88 d0 b5 d1 81 d1 82 d0 b0  ....\n..........
2890: d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 5c  .. ............\
28a0: 6e d1 81 d0 b5 d0 b4 d1 8c d0 bc d0 b0 d1 8f 20  n.............. 
28b0: d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 5c 6e d0 b2  ............\n..
28c0: d0 be d1 81 d1 8c d0 bc d0 b0 d1 8f 20 d1 81 d1  ............ ...
28d0: 82 d1 80 d0 be d0 ba d0 b0 22 3b 0d 0a 20 20 20  .........";..   
28e0: 20 74 77 6e 64 2e 41 64 64 4c 69 6e 65 28 22 d0   twnd.AddLine(".
28f0: b2 d0 be d1 81 d1 8c d0 bc d0 b0 d1 8f 20 d1 81  ............. ..
2900: d1 82 d1 80 d0 be d0 ba d0 b0 22 29 3b 0d 0a 20  ..........");.. 
2910: 20 20 20 61 73 73 65 72 74 45 71 75 61 6c 73 28     assertEquals(
2920: 74 2c 20 74 65 78 74 44 6f 63 2e 47 65 74 54 65  t, textDoc.GetTe
2930: 78 74 28 29 29 3b 0d 0a 7d 0d 0a 0d 0a 66 75 6e  xt());..}....fun
2940: 63 74 69 6f 6e 20 6d 61 63 72 6f 73 54 65 73 74  ction macrosTest
2950: 49 6e 73 65 72 74 4c 69 6e 65 31 28 29 0d 0a 7b  InsertLine1()..{
2960: 0d 0a 20 20 20 20 61 73 73 65 72 74 54 72 75 65  ..    assertTrue
2970: 28 27 d0 9d d0 b5 d1 82 20 d0 b0 d0 ba d1 82 d0  ('...... .......
2980: b8 d0 b2 d0 bd d0 be d0 b3 d0 be 20 d1 82 d0 b5  ........... ....
2990: d0 ba d1 81 d1 82 d0 be d0 b2 d0 be d0 b3 d0 be  ................
29a0: 20 d0 be d0 ba d0 bd d0 b0 21 27 2c 20 74 77 6e   ........!', twn
29b0: 64 2e 49 73 41 63 74 69 76 65 28 29 29 3b 20 20  d.IsActive());  
29c0: 20 20 0d 0a 0d 0a 20 20 20 20 76 61 72 20 74 20    ....    var t 
29d0: 3d 20 22 d1 8d d1 82 d0 b0 20 d1 81 d1 82 d1 80  = "...... ......
29e0: d0 be d0 ba d0 b0 20 d0 b4 d0 be d0 bb d0 b6 d0  ...... .........
29f0: bd d0 b0 20 d0 b1 d1 8b d1 82 d1 8c 20 d0 bf d0  ... ........ ...
2a00: b5 d1 80 d0 b2 d0 be d0 b9 5c 6e d0 bf d0 b5 d1  .........\n.....
2a10: 80 d0 b2 d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be  ....... ........
2a20: d0 ba d0 b0 5c 6e d0 b2 d1 82 d0 be d1 80 d0 b0  ....\n..........
2a30: d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 5c  .. ............\
2a40: 6e d1 82 d1 80 d0 b5 d1 82 d1 8c d1 8f 20 d1 81  n............ ..
2a50: d1 82 d1 80 d0 be d0 ba d0 b0 5c 6e 22 0d 0a 20  ..........\n".. 
2a60: 20 20 20 20 20 20 20 2b 20 22 d1 87 d0 b5 d1 82         + "......
2a70: d0 b2 d0 b5 d1 80 d1 82 d0 b0 d1 8f 20 d1 81 d1  ............ ...
2a80: 82 d1 80 d0 be d0 ba d0 b0 20 2d 20 d1 81 d0 b0  ......... - ....
2a90: d0 bc d0 b0 d1 8f 20 d0 b4 d0 bb d0 b8 d0 bd d0  ...... .........
2aa0: bd d0 b0 d1 8f 20 d0 b8 d0 b7 20 d0 b2 d1 81 d0  ..... .... .....
2ab0: b5 d1 85 20 d1 81 d1 82 d1 80 d0 be d0 ba 5c 6e  ... ..........\n
2ac0: 22 0d 0a 20 20 20 20 20 20 20 20 2b 20 22 d0 bf  "..        + "..
2ad0: d1 8f d1 82 d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0  ........ .......
2ae0: be d0 ba d0 b0 20 d0 bf d0 be d0 ba d0 be d1 80  ..... ..........
2af0: d0 be d1 87 d0 b5 2c 20 d0 bd d0 be 20 d1 82 d0  ......, .... ...
2b00: be d0 b6 d0 b5 20 d0 bd d0 b8 d1 87 d0 b5 d0 b3  ..... ..........
2b10: d0 be 5c 6e d1 88 d0 b5 d1 81 d1 82 d0 b0 d1 8f  ..\n............
2b20: 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 5c 6e d1   ............\n.
2b30: 81 d0 b5 d0 b4 d1 8c d0 bc d0 b0 d1 8f 20 d1 81  ............. ..
2b40: d1 82 d1 80 d0 be d0 ba d0 b0 22 3b 0d 0a 0d 0a  ..........";....
2b50: 20 20 20 20 74 77 6e 64 2e 49 6e 73 65 72 74 4c      twnd.InsertL
2b60: 69 6e 65 28 31 2c 20 22 d1 8d d1 82 d0 b0 20 d1  ine(1, "...... .
2b70: 81 d1 82 d1 80 d0 be d0 ba d0 b0 20 d0 b4 d0 be  ........... ....
2b80: d0 bb d0 b6 d0 bd d0 b0 20 d0 b1 d1 8b d1 82 d1  ........ .......
2b90: 8c 20 d0 bf d0 b5 d1 80 d0 b2 d0 be d0 b9 22 29  . ............")
2ba0: 3b 0d 0a 20 20 20 20 61 73 73 65 72 74 45 71 75  ;..    assertEqu
2bb0: 61 6c 73 28 74 2c 20 74 65 78 74 44 6f 63 2e 47  als(t, textDoc.G
2bc0: 65 74 54 65 78 74 28 29 29 3b 0d 0a 7d 0d 0a 0d  etText());..}...
2bd0: 0a 66 75 6e 63 74 69 6f 6e 20 6d 61 63 72 6f 73  .function macros
2be0: 54 65 73 74 49 6e 73 65 72 74 4c 69 6e 65 32 28  TestInsertLine2(
2bf0: 29 0d 0a 7b 0d 0a 20 20 20 20 61 73 73 65 72 74  )..{..    assert
2c00: 54 72 75 65 28 27 d0 9d d0 b5 d1 82 20 d0 b0 d0  True('...... ...
2c10: ba d1 82 d0 b8 d0 b2 d0 bd d0 be d0 b3 d0 be 20  ............... 
2c20: d1 82 d0 b5 d0 ba d1 81 d1 82 d0 be d0 b2 d0 be  ................
2c30: d0 b3 d0 be 20 d0 be d0 ba d0 bd d0 b0 21 27 2c  .... ........!',
2c40: 20 74 77 6e 64 2e 49 73 41 63 74 69 76 65 28 29   twnd.IsActive()
2c50: 29 3b 20 20 20 20 0d 0a 0d 0a 20 20 20 20 76 61  );    ....    va
2c60: 72 20 74 20 3d 20 22 d0 bf d0 b5 d1 80 d0 b2 d0  r t = ".........
2c70: b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0  ... ............
2c80: 5c 6e d0 b2 d1 82 d0 be d1 80 d0 b0 d1 8f 20 d1  \n............ .
2c90: 81 d1 82 d1 80 d0 be d0 ba d0 b0 5c 6e d1 82 d1  ...........\n...
2ca0: 80 d0 b5 d1 82 d1 8c d1 8f 20 d1 81 d1 82 d1 80  ......... ......
2cb0: d0 be d0 ba d0 b0 5c 6e 22 0d 0a 20 20 20 20 20  ......\n"..     
2cc0: 20 20 20 2b 20 22 d1 8d d1 82 d0 b0 20 d1 81 d1     + "...... ...
2cd0: 82 d1 80 d0 be d0 ba d0 b0 20 d1 82 d0 b5 d0 bf  ......... ......
2ce0: d0 b5 d1 80 d1 8c 20 d0 b1 d1 83 d0 b4 d0 b5 d1  ...... .........
2cf0: 82 20 d1 87 d0 b5 d1 82 d0 b2 d0 b5 d1 80 d1 82  . ..............
2d00: d0 be d0 b9 5c 6e d1 87 d0 b5 d1 82 d0 b2 d0 b5  ....\n..........
2d10: d1 80 d1 82 d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0  ........ .......
2d20: be d0 ba d0 b0 20 2d 20 d1 81 d0 b0 d0 bc d0 b0  ..... - ........
2d30: d1 8f 20 d0 b4 d0 bb d0 b8 d0 bd d0 bd d0 b0 d1  .. .............
2d40: 8f 20 d0 b8 d0 b7 20 d0 b2 d1 81 d0 b5 d1 85 20  . .... ........ 
2d50: d1 81 d1 82 d1 80 d0 be d0 ba 5c 6e 22 0d 0a 20  ..........\n".. 
2d60: 20 20 20 20 20 20 20 2b 20 22 d0 bf d1 8f d1 82         + "......
2d70: d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0  .... ...........
2d80: b0 20 d0 bf d0 be d0 ba d0 be d1 80 d0 be d1 87  . ..............
2d90: d0 b5 2c 20 d0 bd d0 be 20 d1 82 d0 be d0 b6 d0  .., .... .......
2da0: b5 20 d0 bd d0 b8 d1 87 d0 b5 d0 b3 d0 be 5c 6e  . ............\n
2db0: d1 88 d0 b5 d1 81 d1 82 d0 b0 d1 8f 20 d1 81 d1  ............ ...
2dc0: 82 d1 80 d0 be d0 ba d0 b0 5c 6e d1 81 d0 b5 d0  .........\n.....
2dd0: b4 d1 8c d0 bc d0 b0 d1 8f 20 d1 81 d1 82 d1 80  ......... ......
2de0: d0 be d0 ba d0 b0 22 3b 0d 0a 0d 0a 20 20 20 20  ......";....    
2df0: 74 77 6e 64 2e 49 6e 73 65 72 74 4c 69 6e 65 28  twnd.InsertLine(
2e00: 34 2c 20 22 d1 8d d1 82 d0 b0 20 d1 81 d1 82 d1  4, "...... .....
2e10: 80 d0 be d0 ba d0 b0 20 d1 82 d0 b5 d0 bf d0 b5  ....... ........
2e20: d1 80 d1 8c 20 d0 b1 d1 83 d0 b4 d0 b5 d1 82 20  .... .......... 
2e30: d1 87 d0 b5 d1 82 d0 b2 d0 b5 d1 80 d1 82 d0 be  ................
2e40: d0 b9 22 29 3b 0d 0a 20 20 20 20 61 73 73 65 72  ..");..    asser
2e50: 74 45 71 75 61 6c 73 28 74 2c 20 74 65 78 74 44  tEquals(t, textD
2e60: 6f 63 2e 47 65 74 54 65 78 74 28 29 29 3b 0d 0a  oc.GetText());..
2e70: 7d 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 6d 61  }....function ma
2e80: 63 72 6f 73 54 65 73 74 49 6e 73 65 72 74 4c 69  crosTestInsertLi
2e90: 6e 65 33 28 29 0d 0a 7b 0d 0a 20 20 20 20 61 73  ne3()..{..    as
2ea0: 73 65 72 74 54 72 75 65 28 27 d0 9d d0 b5 d1 82  sertTrue('......
2eb0: 20 d0 b0 d0 ba d1 82 d0 b8 d0 b2 d0 bd d0 be d0   ...............
2ec0: b3 d0 be 20 d1 82 d0 b5 d0 ba d1 81 d1 82 d0 be  ... ............
2ed0: d0 b2 d0 be d0 b3 d0 be 20 d0 be d0 ba d0 bd d0  ........ .......
2ee0: b0 21 27 2c 20 74 77 6e 64 2e 49 73 41 63 74 69  .!', twnd.IsActi
2ef0: 76 65 28 29 29 3b 20 20 20 20 0d 0a 0d 0a 20 20  ve());    ....  
2f00: 20 20 76 61 72 20 74 20 3d 20 22 d0 bf d0 b5 d1    var t = ".....
2f10: 80 d0 b2 d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be  ....... ........
2f20: d0 ba d0 b0 5c 6e d0 b2 d1 82 d0 be d1 80 d0 b0  ....\n..........
2f30: d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 5c  .. ............\
2f40: 6e d1 82 d1 80 d0 b5 d1 82 d1 8c d1 8f 20 d1 81  n............ ..
2f50: d1 82 d1 80 d0 be d0 ba d0 b0 5c 6e 22 0d 0a 20  ..........\n".. 
2f60: 20 20 20 20 20 20 20 2b 20 22 d1 87 d0 b5 d1 82         + "......
2f70: d0 b2 d0 b5 d1 80 d1 82 d0 b0 d1 8f 20 d1 81 d1  ............ ...
2f80: 82 d1 80 d0 be d0 ba d0 b0 20 2d 20 d1 81 d0 b0  ......... - ....
2f90: d0 bc d0 b0 d1 8f 20 d0 b4 d0 bb d0 b8 d0 bd d0  ...... .........
2fa0: bd d0 b0 d1 8f 20 d0 b8 d0 b7 20 d0 b2 d1 81 d0  ..... .... .....
2fb0: b5 d1 85 20 d1 81 d1 82 d1 80 d0 be d0 ba 5c 6e  ... ..........\n
2fc0: 22 0d 0a 20 20 20 20 20 20 20 20 2b 20 22 d0 bf  "..        + "..
2fd0: d1 8f d1 82 d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0  ........ .......
2fe0: be d0 ba d0 b0 20 d0 bf d0 be d0 ba d0 be d1 80  ..... ..........
2ff0: d0 be d1 87 d0 b5 2c 20 d0 bd d0 be 20 d1 82 d0  ......, .... ...
3000: be d0 b6 d0 b5 20 d0 bd d0 b8 d1 87 d0 b5 d0 b3  ..... ..........
3010: d0 be 5c 6e d1 88 d0 b5 d1 81 d1 82 d0 b0 d1 8f  ..\n............
3020: 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 5c 6e d1   ............\n.
3030: 81 d0 b5 d0 b4 d1 8c d0 bc d0 b0 d1 8f 20 d1 81  ............. ..
3040: d1 82 d1 80 d0 be d0 ba d0 b0 5c 6e d1 8d d1 82  ..........\n....
3050: d0 b0 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 20  .. ............ 
3060: d0 b1 d1 83 d0 b4 d0 b5 d1 82 20 d0 bf d0 be d1  .......... .....
3070: 81 d0 bb d0 b5 d0 b4 d0 bd d0 b5 d0 b9 22 3b 0d  .............";.
3080: 0a 0d 0a 20 20 20 20 74 77 6e 64 2e 49 6e 73 65  ...    twnd.Inse
3090: 72 74 4c 69 6e 65 28 38 2c 20 22 d1 8d d1 82 d0  rtLine(8, ".....
30a0: b0 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 20 d0  . ............ .
30b0: b1 d1 83 d0 b4 d0 b5 d1 82 20 d0 bf d0 be d1 81  ......... ......
30c0: d0 bb d0 b5 d0 b4 d0 bd d0 b5 d0 b9 22 29 3b 0d  ............");.
30d0: 0a 20 20 20 20 61 73 73 65 72 74 45 71 75 61 6c  .    assertEqual
30e0: 73 28 74 2c 20 74 65 78 74 44 6f 63 2e 47 65 74  s(t, textDoc.Get
30f0: 54 65 78 74 28 29 29 3b 0d 0a 7d 0d 0a 0d 0a 66  Text());..}....f
3100: 75 6e 63 74 69 6f 6e 20 6d 61 63 72 6f 73 54 65  unction macrosTe
3110: 73 74 49 6e 73 65 72 74 4c 69 6e 65 34 28 29 0d  stInsertLine4().
3120: 0a 7b 0d 0a 20 20 20 20 76 61 72 20 74 20 3d 20  .{..    var t = 
3130: 22 d0 bf d0 b5 d1 80 d0 b2 d0 b0 d1 8f 20 d1 81  "............ ..
3140: d1 82 d1 80 d0 be d0 ba d0 b0 5c 6e d0 b2 d1 82  ..........\n....
3150: d0 be d1 80 d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0  ........ .......
3160: be d0 ba d0 b0 5c 6e d1 82 d1 80 d0 b5 d1 82 d1  .....\n.........
3170: 8c d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0  ... ............
3180: 5c 6e 22 0d 0a 20 20 20 20 20 20 20 20 2b 20 22  \n"..        + "
3190: d1 87 d0 b5 d1 82 d0 b2 d0 b5 d1 80 d1 82 d0 b0  ................
31a0: d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 20  .. ............ 
31b0: 2d 20 d1 81 d0 b0 d0 bc d0 b0 d1 8f 20 d0 b4 d0  - .......... ...
31c0: bb d0 b8 d0 bd d0 bd d0 b0 d1 8f 20 d0 b8 d0 b7  ........... ....
31d0: 20 d0 b2 d1 81 d0 b5 d1 85 20 d1 81 d1 82 d1 80   ........ ......
31e0: d0 be d0 ba 5c 6e 22 0d 0a 20 20 20 20 20 20 20  ....\n"..       
31f0: 20 2b 20 22 d0 bf d1 8f d1 82 d0 b0 d1 8f 20 d1   + ".......... .
3200: 81 d1 82 d1 80 d0 be d0 ba d0 b0 20 d0 bf d0 be  ........... ....
3210: d0 ba d0 be d1 80 d0 be d1 87 d0 b5 2c 20 d0 bd  ............, ..
3220: d0 be 20 d1 82 d0 be d0 b6 d0 b5 20 d0 bd d0 b8  .. ........ ....
3230: d1 87 d0 b5 d0 b3 d0 be 5c 6e d1 88 d0 b5 d1 81  ........\n......
3240: d1 82 d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be d0  ...... .........
3250: ba d0 b0 5c 6e d1 8d d1 82 d0 b0 20 d1 81 d1 82  ...\n...... ....
3260: d1 80 d0 be d0 ba d0 b0 20 d0 b1 d1 83 d0 b4 d0  ........ .......
3270: b5 d1 82 20 d0 bf d1 80 d0 b5 d0 b4 d0 bf d0 be  ... ............
3280: d1 81 d0 bb d0 b5 d0 b4 d0 bd d0 b5 d0 b9 5c 6e  ..............\n
3290: d1 81 d0 b5 d0 b4 d1 8c d0 bc d0 b0 d1 8f 20 d1  .............. .
32a0: 81 d1 82 d1 80 d0 be d0 ba d0 b0 22 3b 0d 0a 0d  ...........";...
32b0: 0a 20 20 20 20 74 77 6e 64 2e 49 6e 73 65 72 74  .    twnd.Insert
32c0: 4c 69 6e 65 28 37 2c 20 22 d1 8d d1 82 d0 b0 20  Line(7, "...... 
32d0: d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 20 d0 b1 d1  ............ ...
32e0: 83 d0 b4 d0 b5 d1 82 20 d0 bf d1 80 d0 b5 d0 b4  ....... ........
32f0: d0 bf d0 be d1 81 d0 bb d0 b5 d0 b4 d0 bd d0 b5  ................
3300: d0 b9 22 29 3b 0d 0a 20 20 20 20 61 73 73 65 72  ..");..    asser
3310: 74 45 71 75 61 6c 73 28 74 2c 20 74 65 78 74 44  tEquals(t, textD
3320: 6f 63 2e 47 65 74 54 65 78 74 28 29 29 3b 0d 0a  oc.GetText());..
3330: 7d 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 6d 61  }....function ma
3340: 63 72 6f 73 54 65 73 74 43 6c 65 61 72 28 29 0d  crosTestClear().
3350: 0a 7b 0d 0a 20 20 20 20 74 77 6e 64 2e 43 6c 65  .{..    twnd.Cle
3360: 61 72 28 29 3b 0d 0a 20 20 20 20 61 73 73 65 72  ar();..    asser
3370: 74 45 71 75 61 6c 73 28 22 22 2c 20 74 65 78 74  tEquals("", text
3380: 44 6f 63 2e 47 65 74 54 65 78 74 28 29 29 3b 0d  Doc.GetText());.
3390: 0a 7d 0d 0a 0d 0a 2f 2f 7b 20 d0 a2 d0 b5 d1 81  .}....//{ ......
33a0: d1 82 d1 8b 20 d0 bc d0 b5 d1 82 d0 be d0 b4 d0  .... ...........
33b0: b0 20 47 65 74 57 6f 72 64 55 6e 64 65 72 43 75  . GetWordUnderCu
33c0: 72 73 6f 72 28 29 0d 0a 0d 0a 2f 2a 0d 0a d0 bf  rsor()..../*....
33d0: d0 b5 d1 80 d0 b2 d0 b0 d1 8f 20 d1 81 d1 82 d1  .......... .....
33e0: 80 d0 be d0 ba d0 b0 0d 0a d0 b2 d1 82 d0 be d1  ................
33f0: 80 d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba  ..... ..........
3400: d0 b0 0d 0a d1 82 d1 80 d0 b5 d1 82 d1 8c d1 8f  ................
3410: 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 0d 0a d1   ...............
3420: 87 d0 b5 d1 82 d0 b2 d0 b5 d1 80 d1 82 d0 b0 d1  ................
3430: 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 20 2d  . ............ -
3440: 20 d1 81 d0 b0 d0 bc d0 b0 d1 8f 20 d0 b4 d0 bb   .......... ....
3450: d0 b8 d0 bd d0 bd d0 b0 d1 8f 20 d0 b8 d0 b7 20  .......... .... 
3460: d0 b2 d1 81 d0 b5 d1 85 20 d1 81 d1 82 d1 80 d0  ........ .......
3470: be d0 ba 0d 0a d0 bf d1 8f d1 82 d0 b0 d1 8f 20  ............... 
3480: d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 20 d0 bf d0  ............ ...
3490: be d0 ba d0 be d1 80 d0 be d1 87 d0 b5 2c 20 d0  ............., .
34a0: bd d0 be 20 d1 82 d0 be d0 b6 d0 b5 20 d0 bd d0  ... ........ ...
34b0: b8 d1 87 d0 b5 d0 b3 d0 be 0d 0a d1 88 d0 b5 d1  ................
34c0: 81 d1 82 d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be  ....... ........
34d0: d0 ba d0 b0 0d 0a d1 81 d0 b5 d0 b4 d1 8c d0 bc  ................
34e0: d0 b0 d1 8f 20 d1 81 d1 82 d1 80 d0 be d0 ba d0  .... ...........
34f0: b0 22 3b 0d 0a 2a 2f 0d 0a 0d 0a 66 75 6e 63 74  .";..*/....funct
3500: 69 6f 6e 20 6d 61 63 72 6f 73 54 65 73 74 47 65  ion macrosTestGe
3510: 74 57 6f 72 64 55 6e 64 65 72 43 75 72 73 6f 72  tWordUnderCursor
3520: 31 28 29 20 7b 0d 0a 20 20 20 20 74 77 6e 64 2e  1() {..    twnd.
3530: 53 65 74 43 61 72 65 74 50 6f 73 28 31 2c 20 31  SetCaretPos(1, 1
3540: 29 3b 0d 0a 20 20 20 20 61 73 73 65 72 74 45 71  );..    assertEq
3550: 75 61 6c 73 28 27 d0 bf d0 b5 d1 80 d0 b2 d0 b0  uals('..........
3560: d1 8f 27 2c 20 74 77 6e 64 2e 47 65 74 57 6f 72  ..', twnd.GetWor
3570: 64 55 6e 64 65 72 43 75 72 73 6f 72 28 29 29 3b  dUnderCursor());
3580: 0d 0a 7d 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20  ..}....function 
3590: 6d 61 63 72 6f 73 54 65 73 74 47 65 74 57 6f 72  macrosTestGetWor
35a0: 64 55 6e 64 65 72 43 75 72 73 6f 72 32 28 29 20  dUnderCursor2() 
35b0: 7b 0d 0a 20 20 20 20 74 77 6e 64 2e 53 65 74 43  {..    twnd.SetC
35c0: 61 72 65 74 50 6f 73 28 31 2c 20 31 30 29 3b 0d  aretPos(1, 10);.
35d0: 0a 20 20 20 20 61 73 73 65 72 74 45 71 75 61 6c  .    assertEqual
35e0: 73 28 27 d1 81 d1 82 d1 80 d0 be d0 ba d0 b0 27  s('............'
35f0: 2c 20 74 77 6e 64 2e 47 65 74 57 6f 72 64 55 6e  , twnd.GetWordUn
3600: 64 65 72 43 75 72 73 6f 72 28 29 29 3b 0d 0a 7d  derCursor());..}
3610: 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 6d 61 63  ....function mac
3620: 72 6f 73 54 65 73 74 47 65 74 57 6f 72 64 55 6e  rosTestGetWordUn
3630: 64 65 72 43 75 72 73 6f 72 33 28 29 20 7b 0d 0a  derCursor3() {..
3640: 20 20 20 20 74 77 6e 64 2e 53 65 74 43 61 72 65      twnd.SetCare
3650: 74 50 6f 73 28 34 2c 20 32 34 29 3b 0d 0a 20 20  tPos(4, 24);..  
3660: 20 20 61 73 73 65 72 74 45 71 75 61 6c 73 28 27    assertEquals('
3670: d1 81 d0 b0 d0 bc d0 b0 d1 8f 27 2c 20 74 77 6e  ..........', twn
3680: 64 2e 47 65 74 57 6f 72 64 55 6e 64 65 72 43 75  d.GetWordUnderCu
3690: 72 73 6f 72 28 29 29 3b 0d 0a 7d 0d 0a 0d 0a 66  rsor());..}....f
36a0: 75 6e 63 74 69 6f 6e 20 6d 61 63 72 6f 73 54 65  unction macrosTe
36b0: 73 74 47 65 74 57 6f 72 64 55 6e 64 65 72 43 75  stGetWordUnderCu
36c0: 72 73 6f 72 35 28 29 20 7b 0d 0a 20 20 20 20 74  rsor5() {..    t
36d0: 77 6e 64 2e 53 65 74 43 61 72 65 74 50 6f 73 28  wnd.SetCaretPos(
36e0: 33 2c 20 31 33 29 3b 0d 0a 20 20 20 20 61 73 73  3, 13);..    ass
36f0: 65 72 74 45 71 75 61 6c 73 28 27 d1 81 d1 82 d1  ertEquals('.....
3700: 80 d0 be d0 ba d0 b0 27 2c 20 74 77 6e 64 2e 47  .......', twnd.G
3710: 65 74 57 6f 72 64 55 6e 64 65 72 43 75 72 73 6f  etWordUnderCurso
3720: 72 28 29 29 3b 0d 0a 7d 0d 0a 0d 0a 66 75 6e 63  r());..}....func
3730: 74 69 6f 6e 20 6d 61 63 72 6f 73 54 65 73 74 47  tion macrosTestG
3740: 65 74 57 6f 72 64 55 6e 64 65 72 43 75 72 73 6f  etWordUnderCurso
3750: 72 36 28 29 20 7b 0d 0a 20 20 20 20 74 77 6e 64  r6() {..    twnd
3760: 2e 53 65 74 43 61 72 65 74 50 6f 73 28 37 2c 20  .SetCaretPos(7, 
3770: 31 34 29 3b 0d 0a 20 20 20 20 61 73 73 65 72 74  14);..    assert
3780: 45 71 75 61 6c 73 28 27 d1 81 d1 82 d1 80 d0 be  Equals('........
3790: d0 ba d0 b0 27 2c 20 74 77 6e 64 2e 47 65 74 57  ....', twnd.GetW
37a0: 6f 72 64 55 6e 64 65 72 43 75 72 73 6f 72 28 29  ordUnderCursor()
37b0: 29 3b 0d 0a 7d 0d 0a 0d 0a 66 75 6e 63 74 69 6f  );..}....functio
37c0: 6e 20 6d 61 63 72 6f 73 54 65 73 74 47 65 74 57  n macrosTestGetW
37d0: 6f 72 64 55 6e 64 65 72 43 75 72 73 6f 72 37 28  ordUnderCursor7(
37e0: 29 20 7b 0d 0a 20 20 20 20 74 77 6e 64 2e 53 65  ) {..    twnd.Se
37f0: 74 43 61 72 65 74 50 6f 73 28 33 2c 20 37 29 3b  tCaretPos(3, 7);
3800: 0d 0a 20 20 20 20 61 73 73 65 72 74 45 71 75 61  ..    assertEqua
3810: 6c 73 28 27 27 2c 20 74 77 6e 64 2e 47 65 74 57  ls('', twnd.GetW
3820: 6f 72 64 55 6e 64 65 72 43 75 72 73 6f 72 28 29  ordUnderCursor()
3830: 29 3b 0d 0a 7d 0d 0a 0d 0a 66 75 6e 63 74 69 6f  );..}....functio
3840: 6e 20 6d 61 63 72 6f 73 54 65 73 74 47 65 74 57  n macrosTestGetW
3850: 6f 72 64 55 6e 64 65 72 43 75 72 73 6f 72 38 28  ordUnderCursor8(
3860: 29 20 7b 0d 0a 20 20 20 20 74 77 6e 64 2e 53 65  ) {..    twnd.Se
3870: 74 43 61 72 65 74 50 6f 73 28 34 2c 20 31 39 29  tCaretPos(4, 19)
3880: 3b 0d 0a 20 20 20 20 61 73 73 65 72 74 45 71 75  ;..    assertEqu
3890: 61 6c 73 28 27 27 2c 20 74 77 6e 64 2e 47 65 74  als('', twnd.Get
38a0: 57 6f 72 64 55 6e 64 65 72 43 75 72 73 6f 72 28  WordUnderCursor(
38b0: 29 29 3b 0d 0a 7d 0d 0a 2f 2f 7d 0d 0a 0d 0a 66  ));..}..//}....f
38c0: 75 6e 63 74 69 6f 6e 20 6d 61 63 72 6f 73 54 65  unction macrosTe
38d0: 73 74 47 65 74 56 69 65 77 31 28 29 20 7b 0d 0a  stGetView1() {..
38e0: 20 20 20 20 61 73 73 65 72 74 4e 6f 74 4e 75 6c      assertNotNul
38f0: 6c 28 74 77 6e 64 2e 47 65 74 56 69 65 77 28 29  l(twnd.GetView()
3900: 29 3b 0d 0a 20 20 20 20 61 73 73 65 72 74 45 71  );..    assertEq
3910: 75 61 6c 73 28 74 77 6e 64 2e 47 65 74 48 77 6e  uals(twnd.GetHwn
3920: 64 28 29 2c 20 74 77 6e 64 2e 47 65 74 56 69 65  d(), twnd.GetVie
3930: 77 28 29 2e 68 77 6e 64 29 3b 0d 0a 7d 0d 0a 0d  w().hwnd);..}...
3940: 0a 66 75 6e 63 74 69 6f 6e 20 6d 61 63 72 6f 73  .function macros
3950: 54 65 73 74 47 65 74 56 69 65 77 32 28 29 20 7b  TestGetView2() {
3960: 0d 0a 20 20 20 20 74 77 6e 64 2e 5f 76 69 65 77  ..    twnd._view
3970: 20 3d 20 75 6e 64 65 66 69 6e 65 64 3b 2f 2f 20   = undefined;// 
3980: d1 87 d1 82 d0 be d0 b1 d1 8b 20 d0 b3 d0 b0 d1  .......... .....
3990: 80 d0 b0 d0 bd d1 82 d0 b8 d1 80 d0 be d0 b2 d0  ................
39a0: b0 d0 bd d0 bd d0 be 20 d0 be d1 82 d1 80 d0 b0  ....... ........
39b0: d0 b1 d0 be d1 82 d0 b0 d0 bb 20 d0 b0 d0 bb d0  .......... .....
39c0: b3 d0 be d1 80 d0 b8 d1 82 d0 bc 20 d1 80 d0 b5  ........... ....
39d0: d0 ba d1 83 d1 80 d1 81 d0 b8 d0 b2 d0 bd d0 be  ................
39e0: d0 b3 d0 be 20 d0 bf d0 be d0 b8 d1 81 d0 ba d0  .... ...........
39f0: b0 20 d0 b2 d1 8c d1 8e d1 85 d0 b8 0d 0a 20 20  . ............  
3a00: 20 20 76 61 72 20 76 69 65 77 20 3d 20 74 77 6e    var view = twn
3a10: 64 2e 47 65 74 56 69 65 77 28 29 3b 0d 0a 20 20  d.GetView();..  
3a20: 20 20 61 73 73 65 72 74 4e 6f 74 55 6e 64 65 66    assertNotUndef
3a30: 69 6e 65 64 28 76 69 65 77 29 3b 0d 0a 20 20 20  ined(view);..   
3a40: 20 61 73 73 65 72 74 4e 6f 74 4e 75 6c 6c 28 76   assertNotNull(v
3a50: 69 65 77 29 3b 0d 0a 20 20 20 20 61 73 73 65 72  iew);..    asser
3a60: 74 45 71 75 61 6c 73 28 74 77 6e 64 2e 47 65 74  tEquals(twnd.Get
3a70: 48 77 6e 64 28 29 2c 20 76 69 65 77 2e 68 77 6e  Hwnd(), view.hwn
3a80: 64 29 3b 0d 0a 7d 0d 0a                          d);..}..