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 53 pt..$uname testS
0020: 74 72 65 61 6d 50 61 72 73 65 72 0d 0a 24 64 6e treamParser..$dn
0030: 61 6d 65 20 d0 a2 d0 b5 d1 81 d1 82 d1 8b 20 d0 ame .......... .
0040: ba d0 bb d0 b0 d1 81 d1 81 d0 b0 20 53 74 72 65 ........... Stre
0050: 61 6d 50 61 72 73 65 72 0d 0a 24 61 64 64 69 6e amParser..$addin
0060: 20 73 74 64 6c 69 62 0d 0a 0d 0a 73 74 64 6c 69 stdlib....stdli
0070: 62 2e 72 65 71 75 69 72 65 28 27 6a 73 55 6e 69 b.require('jsUni
0080: 74 43 6f 72 65 2e 6a 73 27 2c 20 53 65 6c 66 53 tCore.js', SelfS
0090: 63 72 69 70 74 29 3b 0d 0a 73 74 64 6c 69 62 2e cript);..stdlib.
00a0: 72 65 71 75 69 72 65 28 27 53 74 72 65 61 6d 4c require('StreamL
00b0: 69 62 2e 6a 73 27 2c 20 53 65 6c 66 53 63 72 69 ib.js', SelfScri
00c0: 70 74 29 3b 0d 0a 0d 0a 2f 2f 7b 20 d0 98 d0 bd pt);....//{ ....
00d0: d0 b8 d1 86 d0 b8 d0 b0 d0 bb d0 b8 d0 b7 d0 b0 ................
00e0: d1 86 d0 b8 d1 8f 20 44 41 54 41 5f 44 49 52 0d ...... DATA_DIR.
00f0: 0a 76 61 72 20 73 6e 65 67 6f 70 61 74 46 6f 6c .var snegopatFol
0100: 64 65 72 20 3d 20 70 72 6f 66 69 6c 65 52 6f 6f der = profileRoo
0110: 74 2e 67 65 74 56 61 6c 75 65 28 22 53 6e 65 67 t.getValue("Sneg
0120: 6f 70 61 74 2f 4d 61 69 6e 46 6f 6c 64 65 72 22 opat/MainFolder"
0130: 29 3b 0d 0a 76 61 72 20 44 41 54 41 5f 44 49 52 );..var DATA_DIR
0140: 20 3d 20 73 6e 65 67 6f 70 61 74 46 6f 6c 64 65 = snegopatFolde
0150: 72 20 2b 20 22 73 63 72 69 70 74 73 5c 5c 54 65 r + "scripts\\Te
0160: 73 74 73 5c 5c 41 75 74 6f 6d 61 74 65 64 5c 5c sts\\Automated\\
0170: 53 74 72 65 61 6d 4c 69 62 5c 5c 64 61 74 61 5c StreamLib\\data\
0180: 5c 22 3b 0d 0a 2f 2f 7d 20 d0 98 d0 bd d0 b8 d1 \";..//} .......
0190: 86 d0 b8 d0 b0 d0 bb d0 b8 d0 b7 d0 b0 d1 86 d0 ................
01a0: b8 d1 8f 0d 0a 0d 0a 76 61 72 20 53 50 20 3d 20 .......var SP =
01b0: 6e 75 6c 6c 3b 0d 0a 0d 0a 2f 2f 7b 20 73 65 74 null;....//{ set
01c0: 55 70 2f 74 65 61 72 44 6f 77 6e 0d 0a 66 75 6e Up/tearDown..fun
01d0: 63 74 69 6f 6e 20 73 65 74 55 70 28 29 20 7b 0d ction setUp() {.
01e0: 0a 20 20 20 20 53 50 20 3d 20 53 74 72 65 61 6d . SP = Stream
01f0: 46 61 63 74 6f 72 79 2e 43 72 65 61 74 65 50 61 Factory.CreatePa
0200: 72 73 65 72 28 29 3b 0d 0a 7d 0d 0a 0d 0a 66 75 rser();..}....fu
0210: 6e 63 74 69 6f 6e 20 74 65 61 72 44 6f 77 6e 28 nction tearDown(
0220: 29 20 7b 0d 0a 20 20 20 20 53 50 20 3d 20 6e 75 ) {.. SP = nu
0230: 6c 6c 3b 0d 0a 7d 0d 0a 2f 2f 7d 20 73 65 74 55 ll;..}..//} setU
0240: 70 2f 74 65 61 72 44 6f 77 6e 0d 0a 0d 0a 2f 2f p/tearDown....//
0250: 7b 20 d0 9f d1 80 d0 be d1 81 d1 82 d1 8b d0 b5 { ..............
0260: 20 d1 82 d0 b5 d1 81 d1 82 d1 8b 0d 0a 66 75 6e ............fun
0270: 63 74 69 6f 6e 20 6d 61 63 72 6f 73 54 65 73 74 ction macrosTest
0280: 50 61 72 73 65 72 5f 45 6d 70 74 79 41 72 72 61 Parser_EmptyArra
0290: 79 28 29 0d 0a 7b 0d 0a 20 20 20 20 53 50 2e 73 y()..{.. SP.s
02a0: 65 74 53 74 72 65 61 6d 28 27 7b 7d 27 29 3b 0d etStream('{}');.
02b0: 0a 20 20 20 20 61 73 73 65 72 74 41 72 72 61 79 . assertArray
02c0: 45 71 75 61 6c 73 28 5b 5d 2c 20 53 50 2e 70 61 Equals([], SP.pa
02d0: 72 73 65 28 29 29 3b 0d 0a 7d 0d 0a 0d 0a 66 75 rse());..}....fu
02e0: 6e 63 74 69 6f 6e 20 6d 61 63 72 6f 73 54 65 73 nction macrosTes
02f0: 74 50 61 72 73 65 72 5f 53 69 6d 70 6c 65 41 72 tParser_SimpleAr
0300: 72 61 79 5f 4e 75 6d 62 65 72 73 28 29 0d 0a 7b ray_Numbers()..{
0310: 0d 0a 20 20 20 20 53 50 2e 73 65 74 53 74 72 65 .. SP.setStre
0320: 61 6d 28 27 7b 31 2c 32 2c 33 7d 27 29 3b 0d 0a am('{1,2,3}');..
0330: 20 20 20 20 61 73 73 65 72 74 41 72 72 61 79 45 assertArrayE
0340: 71 75 61 6c 73 28 5b 31 2c 20 32 2c 20 33 5d 2c quals([1, 2, 3],
0350: 20 53 50 2e 70 61 72 73 65 28 29 29 3b 0d 0a 7d SP.parse());..}
0360: 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 6d 61 63 ....function mac
0370: 72 6f 73 54 65 73 74 50 61 72 73 65 72 5f 53 69 rosTestParser_Si
0380: 6d 70 6c 65 41 72 72 61 79 5f 53 74 72 69 6e 67 mpleArray_String
0390: 73 28 29 0d 0a 7b 0d 0a 20 20 20 20 53 50 2e 73 s()..{.. SP.s
03a0: 65 74 53 74 72 65 61 6d 28 27 7b 22 74 65 73 74 etStream('{"test
03b0: 20 73 74 72 69 6e 67 22 2c 20 22 73 65 63 6f 6e string", "secon
03c0: 64 20 73 74 72 69 6e 67 22 7d 27 29 3b 0d 0a 20 d string"}');..
03d0: 20 20 20 61 73 73 65 72 74 41 72 72 61 79 45 71 assertArrayEq
03e0: 75 61 6c 73 28 5b 22 74 65 73 74 20 73 74 72 69 uals(["test stri
03f0: 6e 67 22 2c 20 22 73 65 63 6f 6e 64 20 73 74 72 ng", "second str
0400: 69 6e 67 22 5d 2c 20 53 50 2e 70 61 72 73 65 28 ing"], SP.parse(
0410: 29 29 3b 0d 0a 7d 0d 0a 0d 0a 66 75 6e 63 74 69 ));..}....functi
0420: 6f 6e 20 6d 61 63 72 6f 73 54 65 73 74 50 61 72 on macrosTestPar
0430: 73 65 72 5f 53 69 6d 70 6c 65 41 72 72 61 79 5f ser_SimpleArray_
0440: 45 6d 70 74 79 53 74 72 69 6e 67 73 28 29 0d 0a EmptyStrings()..
0450: 7b 0d 0a 20 20 20 20 53 50 2e 73 65 74 53 74 72 {.. SP.setStr
0460: 65 61 6d 28 27 7b 22 22 2c 20 22 22 7d 27 29 3b eam('{"", ""}');
0470: 0d 0a 20 20 20 20 61 73 73 65 72 74 41 72 72 61 .. assertArra
0480: 79 45 71 75 61 6c 73 28 5b 22 22 2c 20 22 22 5d yEquals(["", ""]
0490: 2c 20 53 50 2e 70 61 72 73 65 28 29 29 3b 0d 0a , SP.parse());..
04a0: 7d 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 6d 61 }....function ma
04b0: 63 72 6f 73 54 65 73 74 50 61 72 73 65 72 5f 53 crosTestParser_S
04c0: 69 6d 70 6c 65 41 72 72 61 79 5f 51 75 6f 74 65 impleArray_Quote
04d0: 73 49 6e 53 74 72 69 6e 67 31 28 29 0d 0a 7b 0d sInString1()..{.
04e0: 0a 20 20 20 20 53 50 2e 73 65 74 53 74 72 65 61 . SP.setStrea
04f0: 6d 28 27 7b 22 22 22 22 2c 20 22 74 68 69 73 20 m('{"""", "this
0500: 69 73 20 22 22 71 75 6f 74 65 64 22 22 20 77 6f is ""quoted"" wo
0510: 72 64 22 7d 27 29 3b 0d 0a 20 20 20 20 61 73 73 rd"}');.. ass
0520: 65 72 74 41 72 72 61 79 45 71 75 61 6c 73 28 5b ertArrayEquals([
0530: 27 22 27 2c 20 27 74 68 69 73 20 69 73 20 22 71 '"', 'this is "q
0540: 75 6f 74 65 64 22 20 77 6f 72 64 27 5d 2c 20 53 uoted" word'], S
0550: 50 2e 70 61 72 73 65 28 29 29 3b 0d 0a 7d 0d 0a P.parse());..}..
0560: 0d 0a 66 75 6e 63 74 69 6f 6e 20 6d 61 63 72 6f ..function macro
0570: 73 54 65 73 74 50 61 72 73 65 72 5f 53 69 6d 70 sTestParser_Simp
0580: 6c 65 41 72 72 61 79 5f 51 75 6f 74 65 73 49 6e leArray_QuotesIn
0590: 53 74 72 69 6e 67 32 28 29 0d 0a 7b 0d 0a 20 20 String2()..{..
05a0: 20 20 53 50 2e 73 65 74 53 74 72 65 61 6d 28 27 SP.setStream('
05b0: 7b 22 22 22 22 22 22 7d 27 29 3b 0d 0a 20 20 20 {""""""}');..
05c0: 20 61 73 73 65 72 74 41 72 72 61 79 45 71 75 61 assertArrayEqua
05d0: 6c 73 28 5b 27 22 22 27 5d 2c 20 53 50 2e 70 61 ls(['""'], SP.pa
05e0: 72 73 65 28 29 29 3b 0d 0a 7d 0d 0a 0d 0a 66 75 rse());..}....fu
05f0: 6e 63 74 69 6f 6e 20 6d 61 63 72 6f 73 54 65 73 nction macrosTes
0600: 74 50 61 72 73 65 72 5f 4d 75 6c 74 69 64 69 6d tParser_Multidim
0610: 65 6e 73 69 6f 6e 61 6c 41 72 72 61 79 28 29 0d ensionalArray().
0620: 0a 7b 0d 0a 20 20 20 20 53 50 2e 73 65 74 53 74 .{.. SP.setSt
0630: 72 65 61 6d 28 27 7b 7b 31 2c 20 32 2c 20 33 7d ream('{{1, 2, 3}
0640: 2c 20 7b 22 66 69 72 73 74 22 2c 20 22 73 65 63 , {"first", "sec
0650: 6f 6e 64 22 2c 20 22 74 68 69 72 64 22 2c 20 7b ond", "third", {
0660: 22 61 72 72 61 79 20 69 6e 73 69 64 65 20 6f 66 "array inside of
0670: 20 61 72 72 61 79 22 7d 7d 7d 27 29 3b 0d 0a 20 array"}}}');..
0680: 20 20 20 61 73 73 65 72 74 41 72 72 61 79 45 71 assertArrayEq
0690: 75 61 6c 73 28 5b 5b 31 2c 32 2c 33 5d 2c 20 5b uals([[1,2,3], [
06a0: 27 66 69 72 73 74 27 2c 20 27 73 65 63 6f 6e 64 'first', 'second
06b0: 27 2c 20 27 74 68 69 72 64 27 2c 20 5b 27 61 72 ', 'third', ['ar
06c0: 72 61 79 20 69 6e 73 69 64 65 20 6f 66 20 61 72 ray inside of ar
06d0: 72 61 79 27 5d 5d 5d 2c 20 53 50 2e 70 61 72 73 ray']]], SP.pars
06e0: 65 28 29 29 3b 0d 0a 7d 0d 0a 2f 2f 7d 20 d0 9f e());..}..//} ..
06f0: d1 80 d0 be d1 81 d1 82 d1 8b d0 b5 20 d1 82 d0 ............ ...
0700: b5 d1 81 d1 82 d1 8b 0d 0a 0d 0a 2f 2f 7b 20 d0 ...........//{ .
0710: a2 d0 b5 d1 81 d1 82 d1 8b 20 d1 81 20 d0 b4 d0 ......... .. ...
0720: b0 d0 bd d0 bd d1 8b d0 bc d0 b8 20 d0 b8 d0 b7 ........... ....
0730: 20 d1 84 d0 b0 d0 b9 d0 bb d0 be d0 b2 0d 0a 66 ..............f
0740: 75 6e 63 74 69 6f 6e 20 6d 61 63 72 6f 73 54 65 unction macrosTe
0750: 73 74 50 61 72 73 65 72 5f 74 65 6d 70 6c 30 5f stParser_templ0_
0760: 45 6d 70 74 79 5f 73 74 28 29 20 7b 0d 0a 0d 0a Empty_st() {....
0770: 20 20 20 20 76 61 72 20 66 6e 61 6d 65 20 3d 20 var fname =
0780: 27 74 65 6d 70 6c 30 5f 45 6d 70 74 79 2e 73 74 'templ0_Empty.st
0790: 27 3b 0d 0a 20 20 20 20 61 73 73 65 72 74 54 72 ';.. assertTr
07a0: 75 65 28 22 d0 a4 d0 b0 d0 b9 d0 bb 20 d1 81 20 ue("........ ..
07b0: d1 82 d0 b5 d1 81 d1 82 d0 be d0 b2 d1 8b d0 bc ................
07c0: d0 b8 20 d0 b4 d0 b0 d0 bd d0 bd d1 8b d0 bc d0 .. .............
07d0: b8 20 d0 bd d0 b5 20 d1 81 d1 83 d1 89 d0 b5 d1 . .... .........
07e0: 81 d1 82 d0 b2 d1 83 d0 b5 d1 82 3a 20 22 20 2b ...........: " +
07f0: 20 64 61 74 61 46 69 6c 65 28 66 6e 61 6d 65 29 dataFile(fname)
0800: 2c 20 64 61 74 61 46 69 6c 65 45 78 69 73 74 73 , dataFileExists
0810: 28 66 6e 61 6d 65 29 29 3b 0d 0a 20 20 20 20 0d (fname));.. .
0820: 0a 20 20 20 20 61 73 73 65 72 74 54 72 75 65 28 . assertTrue(
0830: 53 50 2e 72 65 61 64 53 74 72 65 61 6d 46 72 6f SP.readStreamFro
0840: 6d 46 69 6c 65 28 64 61 74 61 46 69 6c 65 28 66 mFile(dataFile(f
0850: 6e 61 6d 65 29 29 29 3b 20 20 20 20 0d 0a 20 20 name))); ..
0860: 20 20 76 61 72 20 61 20 3d 20 53 50 2e 70 61 72 var a = SP.par
0870: 73 65 28 53 50 2e 67 65 74 53 74 72 65 61 6d 28 se(SP.getStream(
0880: 29 29 3b 0d 0a 20 20 20 20 61 73 73 65 72 74 41 ));.. assertA
0890: 72 72 61 79 45 71 75 61 6c 73 28 5b 31 2c 5b 30 rrayEquals([1,[0
08a0: 2c 5b 27 45 6d 70 74 79 27 2c 31 2c 30 2c 27 22 ,['Empty',1,0,'"
08b0: 64 64 64 27 2c 27 27 5d 5d 5d 2c 61 29 3b 0d 0a ddd','']]],a);..
08c0: 7d 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 6d 61 }....function ma
08d0: 63 72 6f 73 54 65 73 74 50 61 72 73 65 72 5f 74 crosTestParser_t
08e0: 65 6d 70 6c 31 5f 73 74 28 29 20 7b 0d 0a 0d 0a empl1_st() {....
08f0: 20 20 20 20 76 61 72 20 66 6e 61 6d 65 20 3d 20 var fname =
0900: 27 74 65 6d 70 6c 31 2e 73 74 27 3b 0d 0a 20 20 'templ1.st';..
0910: 20 20 61 73 73 65 72 74 54 72 75 65 28 22 d0 a4 assertTrue("..
0920: d0 b0 d0 b9 d0 bb 20 d1 81 20 d1 82 d0 b5 d1 81 ...... .. ......
0930: d1 82 d0 be d0 b2 d1 8b d0 bc d0 b8 20 d0 b4 d0 ............ ...
0940: b0 d0 bd d0 bd d1 8b d0 bc d0 b8 20 d0 bd d0 b5 ........... ....
0950: 20 d1 81 d1 83 d1 89 d0 b5 d1 81 d1 82 d0 b2 d1 ...............
0960: 83 d0 b5 d1 82 3a 20 22 20 2b 20 64 61 74 61 46 .....: " + dataF
0970: 69 6c 65 28 66 6e 61 6d 65 29 2c 20 64 61 74 61 ile(fname), data
0980: 46 69 6c 65 45 78 69 73 74 73 28 66 6e 61 6d 65 FileExists(fname
0990: 29 29 3b 0d 0a 20 20 20 20 0d 0a 20 20 20 20 61 ));.. .. a
09a0: 73 73 65 72 74 54 72 75 65 28 53 50 2e 72 65 61 ssertTrue(SP.rea
09b0: 64 53 74 72 65 61 6d 46 72 6f 6d 46 69 6c 65 28 dStreamFromFile(
09c0: 64 61 74 61 46 69 6c 65 28 66 6e 61 6d 65 29 29 dataFile(fname))
09d0: 29 3b 20 20 20 20 0d 0a 20 20 20 20 0d 0a 20 20 ); .. ..
09e0: 20 20 76 61 72 20 65 20 3d 20 5b 31 2c 5b 31 2c var e = [1,[1,
09f0: 5b 22 54 6d 70 6c 31 22 2c 31 2c 30 2c 22 22 2c ["Tmpl1",1,0,"",
0a00: 22 22 5d 2c 0d 0a 20 20 20 20 20 20 20 20 5b 30 ""],.. [0
0a10: 2c 5b 22 d0 a8 d0 b0 d0 b1 d0 bb d0 be d0 bd 31 ,["............1
0a20: 20 2d 20 d0 90 d0 b2 d1 82 d0 be d0 bc d0 b0 d1 - .............
0a30: 82 d0 b8 d1 87 d0 b5 d1 81 d0 ba d0 b8 20 d0 b7 ............. ..
0a40: d0 b0 d0 bc d0 b5 d0 bd d1 8f d1 82 d1 8c 20 d0 .............. .
0a50: b8 20 d0 b2 d0 ba d0 bb d1 8e d1 87 d0 b0 d1 82 . ..............
0a60: d1 8c 20 d0 b2 20 d0 ba d0 be d0 bd d1 82 d0 b5 .. .. ..........
0a70: d0 ba d1 81 d1 82 d0 bd d0 be d0 b5 20 d0 bc d0 ............ ...
0a80: b5 d0 bd d1 8e 22 2c 30 2c 31 2c 0d 0a 20 20 20 .....",0,1,..
0a90: 20 20 20 20 20 22 d0 90 d0 b2 d1 82 d0 be d0 bc "..........
0aa0: d0 b0 d1 82 d0 b8 d1 87 d0 b5 d1 81 d0 ba d0 b8 ................
0ab0: 20 d0 b7 d0 b0 d0 bc d0 b5 d0 bd d1 8f d1 82 d1 ...............
0ac0: 8c 20 d1 81 d1 82 d1 80 d0 be d0 ba d1 83 22 2c . ............",
0ad0: 22 d0 a1 d0 be d0 b4 d0 b5 d1 80 d0 b6 d0 b8 d0 "...............
0ae0: bc d0 be d0 b5 20 d1 88 d0 b0 d0 b1 d0 bb d0 be ..... ..........
0af0: d0 bd d0 b0 22 5d 5d 5d 5d 3b 0d 0a 20 20 20 20 ...."]]]];..
0b00: 0d 0a 20 20 20 20 76 61 72 20 61 20 3d 20 53 50 .. var a = SP
0b10: 2e 70 61 72 73 65 28 53 50 2e 67 65 74 53 74 72 .parse(SP.getStr
0b20: 65 61 6d 28 29 29 3b 0d 0a 20 20 20 20 61 73 73 eam());.. ass
0b30: 65 72 74 41 72 72 61 79 45 71 75 61 6c 73 28 65 ertArrayEquals(e
0b40: 2c 20 61 29 3b 0d 0a 7d 0d 0a 0d 0a 2f 2f 7d 20 , a);..}....//}
0b50: d0 a2 d0 b5 d1 81 d1 82 d1 8b 20 d1 81 20 d0 b4 .......... .. ..
0b60: d0 b0 d0 bd d0 bd d1 8b d0 bc d0 b8 20 d0 b8 d0 ............ ...
0b70: b7 20 d1 84 d0 b0 d0 b9 d0 bb d0 be d0 b2 0d 0a . ..............
0b80: 0d 0a 2f 2f 7b 20 d0 92 d1 81 d0 bf d0 be d0 bc ..//{ ..........
0b90: d0 be d0 b3 d0 b0 d1 82 d0 b5 d0 bb d1 8c d0 bd ................
0ba0: d1 8b d0 b5 20 d1 84 d1 83 d0 bd d0 ba d1 86 d0 .... ...........
0bb0: b8 d0 b8 0d 0a 66 75 6e 63 74 69 6f 6e 20 64 61 .....function da
0bc0: 74 61 46 69 6c 65 28 66 69 6c 65 4e 61 6d 65 29 taFile(fileName)
0bd0: 20 7b 0d 0a 20 20 20 20 72 65 74 75 72 6e 20 44 {.. return D
0be0: 41 54 41 5f 44 49 52 20 2b 20 66 69 6c 65 4e 61 ATA_DIR + fileNa
0bf0: 6d 65 0d 0a 7d 0d 0a 0d 0a 66 75 6e 63 74 69 6f me..}....functio
0c00: 6e 20 64 61 74 61 46 69 6c 65 45 78 69 73 74 73 n dataFileExists
0c10: 28 66 69 6c 65 4e 61 6d 65 29 20 7b 0d 0a 20 20 (fileName) {..
0c20: 20 20 76 61 72 20 66 20 3d 20 76 38 4e 65 77 28 var f = v8New(
0c30: 27 46 69 6c 65 27 2c 20 64 61 74 61 46 69 6c 65 'File', dataFile
0c40: 28 66 69 6c 65 4e 61 6d 65 29 29 3b 0d 0a 20 20 (fileName));..
0c50: 20 20 72 65 74 75 72 6e 20 28 66 2e 45 78 69 73 return (f.Exis
0c60: 74 28 29 20 26 26 20 66 2e 49 73 46 69 6c 65 28 t() && f.IsFile(
0c70: 29 29 3b 0d 0a 7d 0d 0a 2f 2f 7d 20 d0 92 d1 81 ));..}..//} ....
0c80: d0 bf d0 be d0 bc d0 be d0 b3 d0 b0 d1 82 d0 b5 ................
0c90: d0 bb d1 8c d0 bd d1 8b d0 b5 20 d1 84 d1 83 d0 .......... .....
0ca0: bd d0 ba d1 86 d0 b8 d0 b8 0d 0a ...........