react 0.3.5 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.npmignore +2 -1
- package/.travis.yml +4 -0
- package/Jakefile.js +34 -3
- package/README.md +34 -174
- package/browser-test/dist.html +90 -0
- package/browser-test/index.html +86 -0
- package/browser-test/min.html +90 -0
- package/dist/react.js +3291 -0
- package/dist/react.min.js +1 -0
- package/doc/advanced.md +166 -0
- package/doc/color-def.graffle +938 -0
- package/doc/color-def.png +0 -0
- package/doc/simple.dot +25 -0
- package/doc/simple.png +0 -0
- package/examples/{default1.js → longer-example.js} +0 -0
- package/examples/{default-simple.js → simple.js} +0 -0
- package/examples/{ast1.js → using-ast-directly.js} +4 -0
- package/examples/{default-events1.js → using-events1.js} +1 -1
- package/examples/{default-log-events.js → using-log-events.js} +1 -1
- package/lib/base-task.js +116 -110
- package/lib/cb-task.js +71 -67
- package/lib/core.js +120 -109
- package/lib/dsl.js +120 -115
- package/lib/error.js +44 -36
- package/lib/event-collector.js +81 -0
- package/lib/event-manager.js +66 -55
- package/lib/eventemitter.js +20 -0
- package/lib/finalcb-first-task.js +56 -53
- package/lib/finalcb-task.js +55 -51
- package/lib/id.js +18 -6
- package/lib/input-parser.js +49 -41
- package/lib/log-events.js +81 -60
- package/lib/parse.js +34 -25
- package/lib/promise-resolve.js +50 -0
- package/lib/promise-task.js +78 -74
- package/lib/react.js +59 -0
- package/lib/ret-task.js +59 -55
- package/lib/sprintf.js +18 -0
- package/lib/status.js +11 -2
- package/lib/task.js +219 -213
- package/lib/track-tasks.js +67 -110
- package/lib/validate.js +136 -136
- package/lib/vcon.js +78 -69
- package/lib/when-task.js +69 -65
- package/package.json +11 -9
- package/src/dist.build.requirejs +20 -0
- package/test/ast.mocha.js +136 -0
- package/test/cb-task.mocha.js +220 -0
- package/test/core-deferred.mocha.js +143 -0
- package/test/core-when.mocha.js +96 -0
- package/test/core.mocha.js +589 -0
- package/test/dsl.mocha.js +350 -0
- package/test/event-manager.mocha.js +119 -0
- package/test/exec-options.mocha.js +48 -0
- package/test/finalcb-task.mocha.js +58 -0
- package/test/input-parser.mocha.js +86 -0
- package/test/mocha.opts +2 -0
- package/test/module-use.mocha.js +147 -0
- package/test/promise-auto-resolve.mocha.js +68 -0
- package/test/ret-task.mocha.js +220 -0
- package/test/task.mocha.js +42 -0
- package/test/validate-cb-task.mocha.js +100 -0
- package/test/validate-ret-task.mocha.js +110 -0
- package/test/validate.mocha.js +324 -0
- package/test/vcon.mocha.js +193 -0
- package/vendor/chai/chai.js +2038 -0
- package/vendor/jquery/jquery-1.7.1.js +9266 -0
- package/vendor/jquery/jquery-1.7.1.min.js +4 -0
- package/vendor/mocha/mocha.css +135 -0
- package/vendor/mocha/mocha.js +3589 -0
- package/vendor/node/util.js +531 -0
- package/vendor/requirejs/require.js +2053 -0
- package/vendor/requirejs/require.min.js +33 -0
- package/doc/alternate-dsls.md +0 -103
- package/doc/default-simple.dot +0 -19
- package/doc/default-simple.dot.png +0 -0
- package/dsl/chain.js +0 -150
- package/dsl/fstr.js +0 -121
- package/dsl/pcode.js +0 -175
- package/examples/chain-events1.js +0 -55
- package/examples/chain1.js +0 -19
- package/examples/fstr-events1.js +0 -38
- package/examples/fstr1.js +0 -37
- package/examples/pcode1.js +0 -22
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia.html +0 -675
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/37px-Wiktionary-logo-en.svg.png +0 -0
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/closewindow.png +0 -0
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/index(1).php +0 -407
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/index.php +0 -130
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(1).php +0 -3
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(10).php +0 -89
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(2).php +0 -23
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(3).php +0 -153
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(4).php +0 -6
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(5).php +0 -3
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(6).php +0 -96
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(7).php +0 -16
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(8).php +0 -14
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(9).php +0 -123
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load.php +0 -3
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/poweredby_mediawiki_88x31.png +0 -0
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/saved_resource +0 -1
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/search-ltr.png +0 -0
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/wikimedia-button.png +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's.html +0 -1369
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/121911_DobbsDigest_Cover.jpg +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/160-x-600-IMU Impact 2012.jpg +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp= +0 -68
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=(1) +0 -67
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=(2) +0 -2
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=(3) +0 -2
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=(4) +0 -8
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=(5) +0 -2
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=500202461 +0 -2
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=500202461(1) +0 -2
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=500202461(2) +0 -2
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=500202461(3) +0 -2
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=500202461(4) +0 -2
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=500202461(5) +0 -431
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=500202461(6) +0 -2
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=500202461(7) +0 -431
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=500202461(8) +0 -2
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=500202461(9) +0 -2
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/Ad0St1Sz6Sq0V0Id20628317.gif +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/Ad2331174St1Sz225Sq20825250V0Id4.gif +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/AdTracImage.gif +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/Default_Size_16_1x1.gif +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/FB.Share +0 -9
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/addthis_widget.js +0 -2
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/adlink_5242_1183459_0_154_AdId=2355270;BnId=1;itime=820768810;key=231400148+_database_231400148;link= +0 -11
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/beacon.js +0 -7
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/checkauth.js +0 -18
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/colorbox.css +0 -49
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/convert_data.js +0 -1
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/count(1).js +0 -5
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/count.js +0 -5
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/count.json +0 -1
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/dataflow1.gif +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/def.html +0 -126
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/defaults.css +0 -1
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/detect.js +0 -91
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/devtest_left-col-slim.css +0 -30
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqus.js +0 -327
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqusHints.css +0 -34
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqusHints.js +0 -8
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqusLoggedOff(1).css +0 -24
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqusLoggedOff.css +0 -24
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/dobbs_disqus_logo.gif +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/dsqcd10c7f376188a4a2ca3e8fea2c03aeb.css +0 -1
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/dsqcd10c7f376188a4a2ca3e8fea2c03aeb.js +0 -1
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/elqCfg.js +0 -55
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/elqImg.js +0 -12
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/embed.js +0 -76
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/experience_util.js +0 -636
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/fastbutton.html +0 -11
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/ga.js +0 -51
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/h-facebook_sm.png +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/h-nav.css +0 -798
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/h-twitter_sm.png +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/h_s_code_remote.js +0 -377
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/hintbox_info.jpg +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/hub.1326407570.html +0 -3
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/in.js +0 -76
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/insight.min.js +0 -55
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery-1.2.6.min.js +0 -32
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery-1.4.2.min.js +0 -154
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery-ui-1.8rc3.custom.min.js +0 -374
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery.colorbox-min.js +0 -4
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery.min.js +0 -154
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/lib.js +0 -212
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/like.html +0 -214
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/noavatar32.png +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/nodetag.js +0 -18
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/nonSecureAnonymousFramework +0 -2913
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/p.json +0 -1
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/plusone.js +0 -32
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/popwindow.js +0 -24
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/q4OyybLB0-A.js +0 -91
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/quant.js +0 -28
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/qxvZoiHdpAF.css +0 -192
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/reply.html +0 -160
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/rss.gif +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/s.js +0 -1
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/saved_resource +0 -421
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/saved_resource(1) +0 -1
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/saved_resource(2) +0 -341
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/saved_resource(3) +0 -127
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/script84.js +0 -113
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/scripts.js +0 -30
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/sh72.html +0 -5
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shAutoloader.js +0 -17
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushAS3.js +0 -59
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushAppleScript.js +0 -75
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushBash.js +0 -59
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushCSharp.js +0 -65
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushColdFusion.js +0 -100
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushCpp.js +0 -97
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushCss.js +0 -91
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushDelphi.js +0 -55
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushDiff.js +0 -41
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushErlang.js +0 -52
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushGroovy.js +0 -67
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushJScript.js +0 -52
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushJava.js +0 -57
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushJavaFX.js +0 -58
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPerl.js +0 -72
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPhp.js +0 -88
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPlain.js +0 -33
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPowerShell.js +0 -74
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPython.js +0 -64
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushRuby.js +0 -55
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushSass.js +0 -94
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushScala.js +0 -51
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushSql.js +0 -66
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushVb.js +0 -56
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushXml.js +0 -69
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shCore.css +0 -226
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shCoreDefault.css +0 -333
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shCore_new.js +0 -17
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shLegacy.js +0 -17
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shThemeDefault.css +0 -117
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/share-button-css +0 -67
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/share_email_icon.gif +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/share_print_icon.gif +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/sidebar.js +0 -88
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/superfooter_936.css +0 -186
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/svrGP.aspx +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/t.gif +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/thickbox.js +0 -343
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/thread.js +0 -128
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/togglediv.js +0 -15
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/tweet_button.html +0 -3
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/ubmtechweb_logo_sm.gif +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/upload.html +0 -91
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/welcome.js +0 -7
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/widget74.css +0 -1
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/widgets.js +0 -40
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia.html +0 -904
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/50px-Question_book-new.svg.png +0 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/closewindow.png +0 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/index(1).php +0 -407
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/index.php +0 -130
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(1).php +0 -3
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(10).php +0 -89
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(2).php +0 -23
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(3).php +0 -153
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(4).php +0 -6
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(5).php +0 -3
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(6).php +0 -96
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(7).php +0 -16
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(8).php +0 -14
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(9).php +0 -123
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load.php +0 -3
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/poweredby_mediawiki_88x31.png +0 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/saved_resource +0 -1
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/search-ltr.png +0 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/wikimedia-button.png +0 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS.html +0 -113
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/6654_111305815684_541245684_2583159_5383291_n_normal.jpg +0 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/MARC3_normal.jpg +0 -2
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/beacon.js +0 -7
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/c953ddd239707998340e1a6fbb3eeb46 +0 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/c953ddd239707998340e1a6fbb3eeb46_normal.jpeg +0 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/clouds2_normal.jpg +0 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/count.json +0 -1
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/def.html +0 -126
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/defaults.css +0 -1
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/disqus.js +0 -327
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/dsq7884a9652e94555c70f96b6be63be216.css +0 -1
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/dsq7884a9652e94555c70f96b6be63be216.js +0 -66
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/embed.js +0 -76
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/example1.dot +0 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/ga.js +0 -51
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/get_num_replies.js +0 -79
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/hub.1326407570.html +0 -3
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/lib.js +0 -212
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/noavatar32.png +0 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/quant.js +0 -28
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/reply.html +0 -160
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/t.gif +0 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/thread.js +0 -128
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/tweet_button.1326407570.html +0 -3
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/twitter_normal.jpg +0 -2
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/upload.html +0 -91
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/widgets.js +0 -40
- package/jake-tasks/jake-test.js +0 -64
- package/promise-resolve.js +0 -35
- package/react.js +0 -8
- package/test/ast.test.js +0 -69
- package/test/cb-task.test.js +0 -197
- package/test/core-deferred.test.js +0 -134
- package/test/core-promised.test.js +0 -132
- package/test/core-when.test.js +0 -84
- package/test/core.test.js +0 -568
- package/test/dsl.test.js +0 -330
- package/test/dsl/chain.test.js +0 -324
- package/test/dsl/fstr.test.js +0 -300
- package/test/dsl/pcode.test.js +0 -448
- package/test/event-manager.test.js +0 -102
- package/test/exec-options.test.js +0 -33
- package/test/finalcb-task.test.js +0 -38
- package/test/input-parser.test.js +0 -66
- package/test/module-use.test.js +0 -131
- package/test/promise-auto-resolve.test.js +0 -51
- package/test/ret-task.test.js +0 -199
- package/test/task.test.js +0 -21
- package/test/validate-cb-task.test.js +0 -74
- package/test/validate-ret-task.test.js +0 -83
- package/test/validate.test.js +0 -295
- package/test/vcon.test.js +0 -173
package/test/dsl/fstr.test.js
DELETED
|
@@ -1,300 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var test = require('tap').test;
|
|
4
|
-
var sprintf = require('sprintf').sprintf;
|
|
5
|
-
|
|
6
|
-
var fstrDefine = require('../../dsl/fstr'); // require('react/dsl/fstr');
|
|
7
|
-
|
|
8
|
-
function falpha() { }
|
|
9
|
-
function fbeta() { }
|
|
10
|
-
|
|
11
|
-
test('module exports an object', function (t) {
|
|
12
|
-
t.type(fstrDefine, 'function', 'has define by DSL method');
|
|
13
|
-
t.end();
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
test('no arguments -> empty inParams, tasks, outTask', function (t) {
|
|
17
|
-
var r = fstrDefine();
|
|
18
|
-
t.deepEqual(r.ast.inParams, []);
|
|
19
|
-
t.deepEqual(r.ast.tasks, []);
|
|
20
|
-
t.deepEqual(r.ast.outTask, { a: [], type: 'finalcb' });
|
|
21
|
-
t.end();
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
test('empty first string -> empty inParams, tasks, outTask', function (t) {
|
|
25
|
-
var r = fstrDefine('');
|
|
26
|
-
t.deepEqual(r.ast.inParams, []);
|
|
27
|
-
t.deepEqual(r.ast.tasks, []);
|
|
28
|
-
t.deepEqual(r.ast.outTask, { a: [], type: 'finalcb' });
|
|
29
|
-
t.end();
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
test('single first string -> inParams["foo"], empty tasks, outTask', function (t) {
|
|
34
|
-
var r = fstrDefine('foo');
|
|
35
|
-
t.deepEqual(r.ast.inParams, ['foo']);
|
|
36
|
-
t.deepEqual(r.ast.tasks, []);
|
|
37
|
-
t.deepEqual(r.ast.outTask, { a: [], type: 'finalcb' });
|
|
38
|
-
t.end();
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
test('triple first string -> inParams["foo", "bar", "baz"], empty tasks, outTask',
|
|
42
|
-
function (t) {
|
|
43
|
-
var r = fstrDefine(' foo, bar,baz ');
|
|
44
|
-
t.deepEqual(r.ast.inParams, ['foo', 'bar', 'baz']);
|
|
45
|
-
t.deepEqual(r.ast.tasks, []);
|
|
46
|
-
t.deepEqual(r.ast.outTask, { a: [], type: 'finalcb' });
|
|
47
|
-
t.end();
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
test('single task, single out params', function (t) {
|
|
51
|
-
var r = fstrDefine('a, b', [
|
|
52
|
-
falpha, 'a, b -> err, c'
|
|
53
|
-
], 'c');
|
|
54
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
55
|
-
t.deepEqual(r.ast.tasks, [
|
|
56
|
-
{ f: falpha, a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'}
|
|
57
|
-
]);
|
|
58
|
-
t.deepEqual(r.ast.outTask, { a: ['c'], type: 'finalcb' });
|
|
59
|
-
t.end();
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
test('single task, err params', function (t) {
|
|
63
|
-
var r = fstrDefine('a, b', [
|
|
64
|
-
falpha, 'a, b -> err, c'
|
|
65
|
-
], 'err');
|
|
66
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
67
|
-
t.deepEqual(r.ast.tasks, [
|
|
68
|
-
{ f: falpha, a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'}
|
|
69
|
-
]);
|
|
70
|
-
t.deepEqual(r.ast.outTask, { a: [], type: 'finalcb' });
|
|
71
|
-
t.end();
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
test('single task, err and out params', function (t) {
|
|
75
|
-
var r = fstrDefine('a, b', [
|
|
76
|
-
falpha, 'a, b -> err, c'
|
|
77
|
-
], 'err, c');
|
|
78
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
79
|
-
t.deepEqual(r.ast.tasks, [
|
|
80
|
-
{ f: falpha, a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'}
|
|
81
|
-
]);
|
|
82
|
-
t.deepEqual(r.ast.outTask, { a: ['c'], type: 'finalcb' });
|
|
83
|
-
t.end();
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
test('single task, ERR and out params', function (t) {
|
|
87
|
-
var r = fstrDefine('a, b', [
|
|
88
|
-
falpha, 'a, b -> ERR, c'
|
|
89
|
-
], 'ERR, c');
|
|
90
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
91
|
-
t.deepEqual(r.ast.tasks, [
|
|
92
|
-
{ f: falpha, a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'}
|
|
93
|
-
]);
|
|
94
|
-
t.deepEqual(r.ast.outTask, { a: ['c'], type: 'finalcb' });
|
|
95
|
-
t.end();
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
test('cb used in defs is simply ignored', function (t) {
|
|
99
|
-
var r = fstrDefine('a, b, cb', [
|
|
100
|
-
falpha, 'a, b, cb -> err, c'
|
|
101
|
-
], 'err, c');
|
|
102
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
103
|
-
t.deepEqual(r.ast.tasks, [
|
|
104
|
-
{ f: falpha, a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'}
|
|
105
|
-
]);
|
|
106
|
-
t.deepEqual(r.ast.outTask, { a: ['c'], type: 'finalcb' });
|
|
107
|
-
t.end();
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
test('callback used in defs is simply ignored', function (t) {
|
|
111
|
-
var r = fstrDefine('a, b, callback', [
|
|
112
|
-
falpha, 'a, b, callback -> err, c'
|
|
113
|
-
], 'err, c');
|
|
114
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
115
|
-
t.deepEqual(r.ast.tasks, [
|
|
116
|
-
{ f: falpha, a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'}
|
|
117
|
-
]);
|
|
118
|
-
t.deepEqual(r.ast.outTask, { a: ['c'], type: 'finalcb' });
|
|
119
|
-
t.end();
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
test('two inputs, two tasks, two out params', function (t) {
|
|
123
|
-
var r = fstrDefine('a, b', [
|
|
124
|
-
falpha, 'a, b -> err, c',
|
|
125
|
-
fbeta, 'a, b -> err, d, e'
|
|
126
|
-
], 'c, d');
|
|
127
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
128
|
-
t.deepEqual(r.ast.tasks, [
|
|
129
|
-
{ f: falpha, a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'},
|
|
130
|
-
{ f: fbeta, a: ['a', 'b'], out: ['d', 'e'], type: 'cb', name: 'fbeta'}
|
|
131
|
-
]);
|
|
132
|
-
t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' });
|
|
133
|
-
t.end();
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
test('two inputs, two tasks, two out params, options', function (t) {
|
|
137
|
-
var r = fstrDefine('a, b', [
|
|
138
|
-
falpha, 'a, b -> err, c',
|
|
139
|
-
fbeta, 'a, b -> err, d, e'
|
|
140
|
-
], 'c, d', { name: 'myflow', otherOptFoo: 'foo'});
|
|
141
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
142
|
-
t.deepEqual(r.ast.tasks, [
|
|
143
|
-
{ f: falpha, a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'},
|
|
144
|
-
{ f: fbeta, a: ['a', 'b'], out: ['d', 'e'], type: 'cb', name: 'fbeta'}
|
|
145
|
-
]);
|
|
146
|
-
t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' });
|
|
147
|
-
t.equal(r.ast.name, 'myflow', 'name should match if supplied');
|
|
148
|
-
t.equal(r.ast.otherOptFoo, 'foo', 'other options should pass through');
|
|
149
|
-
t.end();
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
test('two inputs, two mixed tasks, two out params', function (t) {
|
|
153
|
-
var r = fstrDefine('a, b', [
|
|
154
|
-
falpha, 'a, b -> err, c',
|
|
155
|
-
fbeta, 'a, b -> returns d'
|
|
156
|
-
], 'c, d');
|
|
157
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
158
|
-
t.deepEqual(r.ast.tasks, [
|
|
159
|
-
{ f: falpha, a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'},
|
|
160
|
-
{ f: fbeta, a: ['a', 'b'], out: ['d'], type: 'ret', name: 'fbeta'}
|
|
161
|
-
]);
|
|
162
|
-
t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' });
|
|
163
|
-
t.end();
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
test('uses return', function (t) {
|
|
167
|
-
var r = fstrDefine('a, b', [
|
|
168
|
-
falpha, 'a, b -> err, c',
|
|
169
|
-
fbeta, 'a, b -> return d'
|
|
170
|
-
], 'c, d');
|
|
171
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
172
|
-
t.deepEqual(r.ast.tasks, [
|
|
173
|
-
{ f: falpha, a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'},
|
|
174
|
-
{ f: fbeta, a: ['a', 'b'], out: ['d'], type: 'ret', name: 'fbeta'}
|
|
175
|
-
]);
|
|
176
|
-
t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' });
|
|
177
|
-
t.end();
|
|
178
|
-
});
|
|
179
|
-
|
|
180
|
-
test('uses Return', function (t) {
|
|
181
|
-
var r = fstrDefine('a, b', [
|
|
182
|
-
falpha, 'a, b -> err, c',
|
|
183
|
-
fbeta, 'a, b -> Return d'
|
|
184
|
-
], 'c, d');
|
|
185
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
186
|
-
t.deepEqual(r.ast.tasks, [
|
|
187
|
-
{ f: falpha, a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'},
|
|
188
|
-
{ f: fbeta, a: ['a', 'b'], out: ['d'], type: 'ret', name: 'fbeta'}
|
|
189
|
-
]);
|
|
190
|
-
t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' });
|
|
191
|
-
t.end();
|
|
192
|
-
});
|
|
193
|
-
|
|
194
|
-
test('uses RETURN', function (t) {
|
|
195
|
-
var r = fstrDefine('a, b', [
|
|
196
|
-
falpha, 'a, b -> err, c',
|
|
197
|
-
fbeta, 'a, b -> RETURN d'
|
|
198
|
-
], 'c, d');
|
|
199
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
200
|
-
t.deepEqual(r.ast.tasks, [
|
|
201
|
-
{ f: falpha, a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'},
|
|
202
|
-
{ f: fbeta, a: ['a', 'b'], out: ['d'], type: 'ret', name: 'fbeta'}
|
|
203
|
-
]);
|
|
204
|
-
t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' });
|
|
205
|
-
t.end();
|
|
206
|
-
});
|
|
207
|
-
|
|
208
|
-
test('uses RETURNS', function (t) {
|
|
209
|
-
var r = fstrDefine('a, b', [
|
|
210
|
-
falpha, 'a, b -> err, c',
|
|
211
|
-
fbeta, 'a, b -> RETURNS d'
|
|
212
|
-
], 'c, d');
|
|
213
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
214
|
-
t.deepEqual(r.ast.tasks, [
|
|
215
|
-
{ f: falpha, a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'},
|
|
216
|
-
{ f: fbeta, a: ['a', 'b'], out: ['d'], type: 'ret', name: 'fbeta'}
|
|
217
|
-
]);
|
|
218
|
-
t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' });
|
|
219
|
-
t.end();
|
|
220
|
-
});
|
|
221
|
-
|
|
222
|
-
test('two inputs, two mixed tasks, two out params, opts', function (t) {
|
|
223
|
-
var r = fstrDefine('a, b', [
|
|
224
|
-
falpha, 'a -> err, c', { after: fbeta },
|
|
225
|
-
fbeta, 'a, b -> returns d'
|
|
226
|
-
], 'c, d');
|
|
227
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
228
|
-
t.deepEqual(r.ast.tasks, [
|
|
229
|
-
{ after: ['fbeta'], f: falpha, a: ['a'], out: ['c'], type: 'cb', name: 'falpha'},
|
|
230
|
-
{ f: fbeta, a: ['a', 'b'], out: ['d'], type: 'ret', name: 'fbeta'}
|
|
231
|
-
]);
|
|
232
|
-
t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' });
|
|
233
|
-
t.end();
|
|
234
|
-
});
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
// Object use
|
|
238
|
-
test('object prop task params', function (t) {
|
|
239
|
-
var r = fstrDefine('a, b', [
|
|
240
|
-
falpha, 'a, b.cat -> err, c',
|
|
241
|
-
fbeta, 'c.dog, b -> returns d',
|
|
242
|
-
'd.egg', 'c -> e'
|
|
243
|
-
], 'c, e');
|
|
244
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
245
|
-
t.deepEqual(r.ast.tasks, [
|
|
246
|
-
{ f: falpha, a: ['a', 'b.cat'], out: ['c'], type: 'cb', name: 'falpha'},
|
|
247
|
-
{ f: fbeta, a: ['c.dog', 'b'], out: ['d'], type: 'ret', name: 'fbeta'},
|
|
248
|
-
{ f: 'd.egg', a: ['c'], out: ['e'], type: 'cb', name: 'd.egg'}
|
|
249
|
-
]);
|
|
250
|
-
t.deepEqual(r.ast.outTask, { a: ['c', 'e'], type: 'finalcb' });
|
|
251
|
-
t.end();
|
|
252
|
-
});
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
test('extra arg throws error', function (t) {
|
|
259
|
-
var fn = function () {
|
|
260
|
-
var r = fstrDefine('a, b', [
|
|
261
|
-
falpha, 'a -> err, c', { after: fbeta },
|
|
262
|
-
fbeta, 'a, b -> returns d',
|
|
263
|
-
'extraBadArg'
|
|
264
|
-
], 'c, d');
|
|
265
|
-
};
|
|
266
|
-
t.throws(fn, new Error('extra unmatched task arg: extraBadArg'));
|
|
267
|
-
t.end();
|
|
268
|
-
});
|
|
269
|
-
|
|
270
|
-
test('not enough args throws error', function (t) {
|
|
271
|
-
var fn = function () {
|
|
272
|
-
var r = fstrDefine('a, b', [
|
|
273
|
-
falpha, 'a -> err, c', { after: fbeta },
|
|
274
|
-
fbeta
|
|
275
|
-
], 'c, d');
|
|
276
|
-
};
|
|
277
|
-
t.throws(fn, new Error(sprintf('extra unmatched task arg: %s', fbeta)));
|
|
278
|
-
t.end();
|
|
279
|
-
});
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
/* selectFirst */
|
|
284
|
-
|
|
285
|
-
test('selectFirst', function (t) {
|
|
286
|
-
var r = fstrDefine.selectFirst('a, b', [
|
|
287
|
-
falpha, 'a, b -> err, c',
|
|
288
|
-
fbeta, 'a, b -> returns c'
|
|
289
|
-
], 'c', { name: 'myflow', otherOptFoo: 'foo'});
|
|
290
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
291
|
-
t.deepEqual(r.ast.tasks, [
|
|
292
|
-
{ f: falpha, a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'},
|
|
293
|
-
{ f: fbeta, a: ['a', 'b'], out: ['c'], type: 'ret', name: 'fbeta', after: ['falpha']}
|
|
294
|
-
]);
|
|
295
|
-
t.deepEqual(r.ast.outTask, { type: 'finalcbFirst', a: ['c'] });
|
|
296
|
-
t.equal(r.ast.name, 'myflow', 'name should match if supplied');
|
|
297
|
-
t.equal(r.ast.otherOptFoo, 'foo', 'other options should pass through');
|
|
298
|
-
t.end();
|
|
299
|
-
});
|
|
300
|
-
|
package/test/dsl/pcode.test.js
DELETED
|
@@ -1,448 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var test = require('tap').test;
|
|
4
|
-
var sprintf = require('sprintf').sprintf;
|
|
5
|
-
|
|
6
|
-
var pcode = require('../../dsl/pcode'); // require('react/dsl/pcode');
|
|
7
|
-
var EventCollector = require('../../lib/track-tasks').EventCollector; // require('react/lib/track-tasks'); // turn on tracking
|
|
8
|
-
|
|
9
|
-
function falpha() { }
|
|
10
|
-
function fbeta() { }
|
|
11
|
-
function fcharlie() { }
|
|
12
|
-
|
|
13
|
-
test('module exports an object', function (t) {
|
|
14
|
-
t.type(pcode, 'function', 'has define by DSL method');
|
|
15
|
-
t.end();
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
test('no arguments -> empty inParams, tasks, outTask', function (t) {
|
|
19
|
-
var r = pcode();
|
|
20
|
-
t.deepEqual(r.ast.inParams, []);
|
|
21
|
-
t.deepEqual(r.ast.tasks, []);
|
|
22
|
-
t.deepEqual(r.ast.outTask, { a: [], type: 'finalcb' });
|
|
23
|
-
t.end();
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
test('empty first string -> empty inParams, tasks, outTask', function (t) {
|
|
27
|
-
var r = pcode('');
|
|
28
|
-
t.deepEqual(r.ast.inParams, []);
|
|
29
|
-
t.deepEqual(r.ast.tasks, []);
|
|
30
|
-
t.deepEqual(r.ast.outTask, { a: [], type: 'finalcb' });
|
|
31
|
-
t.end();
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
test('single first string -> inParams["foo"], empty tasks, outTask', function (t) {
|
|
36
|
-
var r = pcode('foo');
|
|
37
|
-
t.deepEqual(r.ast.inParams, ['foo']);
|
|
38
|
-
t.deepEqual(r.ast.tasks, []);
|
|
39
|
-
t.deepEqual(r.ast.outTask, { a: [], type: 'finalcb' });
|
|
40
|
-
t.end();
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
test('triple first string -> inParams["foo", "bar", "baz"], empty tasks, outTask',
|
|
44
|
-
function (t) {
|
|
45
|
-
var r = pcode(' foo, bar,baz ');
|
|
46
|
-
t.deepEqual(r.ast.inParams, ['foo', 'bar', 'baz']);
|
|
47
|
-
t.deepEqual(r.ast.tasks, []);
|
|
48
|
-
t.deepEqual(r.ast.outTask, { a: [], type: 'finalcb' });
|
|
49
|
-
t.end();
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
test('single task, single out params', function (t) {
|
|
53
|
-
var locals = { falpha: falpha };
|
|
54
|
-
var r = pcode('a, b', [
|
|
55
|
-
'c := falpha(a, b)',
|
|
56
|
-
'cb(err, c)'
|
|
57
|
-
], locals);
|
|
58
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
59
|
-
t.deepEqual(r.ast.tasks, [
|
|
60
|
-
{ f: 'falpha', a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'}
|
|
61
|
-
]);
|
|
62
|
-
t.deepEqual(r.ast.outTask, { a: ['c'], type: 'finalcb' });
|
|
63
|
-
t.end();
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
test('single task, single out params, cb(err)', function (t) {
|
|
67
|
-
var locals = { falpha: falpha };
|
|
68
|
-
var r = pcode('a, b', [
|
|
69
|
-
'c := falpha(a, b)',
|
|
70
|
-
'cb(err)'
|
|
71
|
-
], locals);
|
|
72
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
73
|
-
t.deepEqual(r.ast.tasks, [
|
|
74
|
-
{ f: 'falpha', a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'}
|
|
75
|
-
]);
|
|
76
|
-
t.deepEqual(r.ast.outTask, { a: [], type: 'finalcb' });
|
|
77
|
-
t.end();
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
test('single task, err and out params', function (t) {
|
|
81
|
-
var locals = { falpha: falpha };
|
|
82
|
-
var r = pcode('a, b', [
|
|
83
|
-
'c := falpha(a, b)',
|
|
84
|
-
'cb(err, c)'
|
|
85
|
-
], locals);
|
|
86
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
87
|
-
t.deepEqual(r.ast.tasks, [
|
|
88
|
-
{ f: 'falpha', a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'}
|
|
89
|
-
]);
|
|
90
|
-
t.deepEqual(r.ast.outTask, { a: ['c'], type: 'finalcb' });
|
|
91
|
-
t.end();
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
test('two inputs, two tasks, two out params', function (t) {
|
|
95
|
-
var locals = { falpha: falpha, fbeta: fbeta };
|
|
96
|
-
var r = pcode('a, b', [
|
|
97
|
-
'c := falpha(a, b)',
|
|
98
|
-
'd, e := fbeta(a, b)',
|
|
99
|
-
'cb(err, c, d)'
|
|
100
|
-
], locals);
|
|
101
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
102
|
-
t.deepEqual(r.ast.tasks, [
|
|
103
|
-
{ f: 'falpha', a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'},
|
|
104
|
-
{ f: 'fbeta', a: ['a', 'b'], out: ['d', 'e'], type: 'cb', name: 'fbeta'}
|
|
105
|
-
]);
|
|
106
|
-
t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' });
|
|
107
|
-
t.end();
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
test('two inputs, two tasks, two out params, options', function (t) {
|
|
111
|
-
var locals = { falpha: falpha, fbeta: fbeta };
|
|
112
|
-
var r = pcode('a, b', [
|
|
113
|
-
'c := falpha(a, b)',
|
|
114
|
-
'd, e := fbeta(a, b)',
|
|
115
|
-
'cb(err, c, d)'
|
|
116
|
-
], locals, { name: 'myflow', otherOptFoo: 'foo'});
|
|
117
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
118
|
-
t.deepEqual(r.ast.tasks, [
|
|
119
|
-
{ f: 'falpha', a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'},
|
|
120
|
-
{ f: 'fbeta', a: ['a', 'b'], out: ['d', 'e'], type: 'cb', name: 'fbeta'}
|
|
121
|
-
]);
|
|
122
|
-
t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' });
|
|
123
|
-
t.equal(r.ast.name, 'myflow', 'name should match if supplied');
|
|
124
|
-
t.equal(r.ast.otherOptFoo, 'foo', 'other options should pass through');
|
|
125
|
-
t.end();
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
test('two inputs, two mixed tasks, two out params', function (t) {
|
|
131
|
-
var locals = { falpha: falpha, fbeta: fbeta };
|
|
132
|
-
var r = pcode('a, b', [
|
|
133
|
-
'c := falpha(a, b)',
|
|
134
|
-
'd = fbeta(a, b)',
|
|
135
|
-
'cb(err, c, d)'
|
|
136
|
-
], locals);
|
|
137
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
138
|
-
t.deepEqual(r.ast.tasks, [
|
|
139
|
-
{ f: 'falpha', a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'},
|
|
140
|
-
{ f: 'fbeta', a: ['a', 'b'], out: ['d'], type: 'ret', name: 'fbeta'}
|
|
141
|
-
]);
|
|
142
|
-
t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' });
|
|
143
|
-
t.end();
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
test('allow cb in the definitions', function (t) {
|
|
147
|
-
var locals = { falpha: falpha, fbeta: fbeta };
|
|
148
|
-
var r = pcode('a, b, cb', [
|
|
149
|
-
'c := falpha(a, b, cb)',
|
|
150
|
-
'd = fbeta(a, b)',
|
|
151
|
-
'cb(err, c, d)'
|
|
152
|
-
], locals);
|
|
153
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
154
|
-
t.deepEqual(r.ast.tasks, [
|
|
155
|
-
{ f: 'falpha', a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'},
|
|
156
|
-
{ f: 'fbeta', a: ['a', 'b'], out: ['d'], type: 'ret', name: 'fbeta'}
|
|
157
|
-
]);
|
|
158
|
-
t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' });
|
|
159
|
-
t.end();
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
test('allow Cb in the definitions', function (t) {
|
|
163
|
-
var locals = { falpha: falpha, fbeta: fbeta };
|
|
164
|
-
var r = pcode('a, b, Cb', [
|
|
165
|
-
'c := falpha(a, b, Cb)',
|
|
166
|
-
'd = fbeta(a, b)',
|
|
167
|
-
'cb(err, c, d)'
|
|
168
|
-
], locals);
|
|
169
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
170
|
-
t.deepEqual(r.ast.tasks, [
|
|
171
|
-
{ f: 'falpha', a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'},
|
|
172
|
-
{ f: 'fbeta', a: ['a', 'b'], out: ['d'], type: 'ret', name: 'fbeta'}
|
|
173
|
-
]);
|
|
174
|
-
t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' });
|
|
175
|
-
t.end();
|
|
176
|
-
});
|
|
177
|
-
|
|
178
|
-
test('allow callback in the definitions', function (t) {
|
|
179
|
-
var locals = { falpha: falpha, fbeta: fbeta };
|
|
180
|
-
var r = pcode('a, b, callback', [
|
|
181
|
-
'c := falpha(a, b, callback)',
|
|
182
|
-
'd = fbeta(a, b)',
|
|
183
|
-
'callback(err, c, d)'
|
|
184
|
-
], locals);
|
|
185
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
186
|
-
t.deepEqual(r.ast.tasks, [
|
|
187
|
-
{ f: 'falpha', a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'},
|
|
188
|
-
{ f: 'fbeta', a: ['a', 'b'], out: ['d'], type: 'ret', name: 'fbeta'}
|
|
189
|
-
]);
|
|
190
|
-
t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' });
|
|
191
|
-
t.end();
|
|
192
|
-
});
|
|
193
|
-
|
|
194
|
-
test('allow Callback in the definitions', function (t) {
|
|
195
|
-
var locals = { falpha: falpha, fbeta: fbeta };
|
|
196
|
-
var r = pcode('a, b, Callback', [
|
|
197
|
-
'c := falpha(a, b, Callback)',
|
|
198
|
-
'd = fbeta(a, b)',
|
|
199
|
-
'Callback(err, c, d)'
|
|
200
|
-
], locals);
|
|
201
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
202
|
-
t.deepEqual(r.ast.tasks, [
|
|
203
|
-
{ f: 'falpha', a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'},
|
|
204
|
-
{ f: 'fbeta', a: ['a', 'b'], out: ['d'], type: 'ret', name: 'fbeta'}
|
|
205
|
-
]);
|
|
206
|
-
t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' });
|
|
207
|
-
t.end();
|
|
208
|
-
});
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
test('var prefix two inputs, two mixed tasks, two out params', function (t) {
|
|
215
|
-
var locals = { falpha: falpha, fbeta: fbeta };
|
|
216
|
-
var r = pcode('a, b', [
|
|
217
|
-
'var c := falpha(a, b);',
|
|
218
|
-
'var d = fbeta(a, b);',
|
|
219
|
-
'cb(err, c, d);'
|
|
220
|
-
], locals);
|
|
221
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
222
|
-
t.deepEqual(r.ast.tasks, [
|
|
223
|
-
{ f: 'falpha', a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'},
|
|
224
|
-
{ f: 'fbeta', a: ['a', 'b'], out: ['d'], type: 'ret', name: 'fbeta'}
|
|
225
|
-
]);
|
|
226
|
-
t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' });
|
|
227
|
-
t.end();
|
|
228
|
-
});
|
|
229
|
-
|
|
230
|
-
test('when single ret fn:done', function (t) {
|
|
231
|
-
var locals = { falpha: falpha, fbeta: fbeta };
|
|
232
|
-
var r = pcode('a, b', [
|
|
233
|
-
'c := falpha(a, b)',
|
|
234
|
-
'd = fbeta(a, b) when falpha:done',
|
|
235
|
-
'cb(err, c, d);'
|
|
236
|
-
], locals);
|
|
237
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
238
|
-
t.deepEqual(r.ast.tasks, [
|
|
239
|
-
{ f: 'falpha', a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'},
|
|
240
|
-
{ f: 'fbeta', a: ['a', 'b'], out: ['d'], type: 'ret', after: ['falpha'], name: 'fbeta'}
|
|
241
|
-
]);
|
|
242
|
-
t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' });
|
|
243
|
-
t.end();
|
|
244
|
-
});
|
|
245
|
-
|
|
246
|
-
test('when single cb fn:done', function (t) {
|
|
247
|
-
var locals = { falpha: falpha, fbeta: fbeta };
|
|
248
|
-
var r = pcode('a, b', [
|
|
249
|
-
'c := falpha(a, b) when fbeta:done',
|
|
250
|
-
'd = fbeta(a, b)',
|
|
251
|
-
'cb(err, c, d);'
|
|
252
|
-
], locals);
|
|
253
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
254
|
-
t.deepEqual(r.ast.tasks, [
|
|
255
|
-
{ f: 'falpha', a: ['a', 'b'], out: ['c'], type: 'cb', after: ['fbeta'], name: 'falpha'},
|
|
256
|
-
{ f: 'fbeta', a: ['a', 'b'], out: ['d'], type: 'ret', name: 'fbeta'}
|
|
257
|
-
]);
|
|
258
|
-
t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' });
|
|
259
|
-
t.end();
|
|
260
|
-
});
|
|
261
|
-
|
|
262
|
-
test('when multiple fn:done cb', function (t) {
|
|
263
|
-
var locals = { falpha: falpha, fbeta: fbeta, fcharlie: fcharlie };
|
|
264
|
-
var r = pcode('a, b', [
|
|
265
|
-
'd = fbeta(a, b)',
|
|
266
|
-
'e = fcharlie(a, b)',
|
|
267
|
-
'c := falpha(a, b) when fbeta:done and fcharlie:done',
|
|
268
|
-
'cb(err, c, d);'
|
|
269
|
-
], locals);
|
|
270
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
271
|
-
t.deepEqual(r.ast.tasks, [
|
|
272
|
-
{ f: 'fbeta', a: ['a', 'b'], out: ['d'], type: 'ret', name: 'fbeta'},
|
|
273
|
-
{ f: 'fcharlie', a: ['a', 'b'], out: ['e'], type: 'ret', name: 'fcharlie'},
|
|
274
|
-
{ f: 'falpha', a: ['a', 'b'], out: ['c'], type: 'cb', after: ['fbeta', 'fcharlie'], name: 'falpha'}
|
|
275
|
-
]);
|
|
276
|
-
t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' });
|
|
277
|
-
t.end();
|
|
278
|
-
});
|
|
279
|
-
|
|
280
|
-
test('when multiple fn:done ret', function (t) {
|
|
281
|
-
var locals = { falpha: falpha, fbeta: fbeta, fcharlie: fcharlie };
|
|
282
|
-
var r = pcode('a, b', [
|
|
283
|
-
'd = fbeta(a, b)',
|
|
284
|
-
'e = fcharlie(a, b)',
|
|
285
|
-
'c = falpha(a, b) when fbeta:done and fcharlie:done',
|
|
286
|
-
'cb(err, c, d);'
|
|
287
|
-
], locals);
|
|
288
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
289
|
-
t.deepEqual(r.ast.tasks, [
|
|
290
|
-
{ f: 'fbeta', a: ['a', 'b'], out: ['d'], type: 'ret', name: 'fbeta'},
|
|
291
|
-
{ f: 'fcharlie', a: ['a', 'b'], out: ['e'], type: 'ret', name: 'fcharlie'},
|
|
292
|
-
{ f: 'falpha', a: ['a', 'b'], out: ['c'], type: 'ret', after: ['fbeta', 'fcharlie'], name: 'falpha'}
|
|
293
|
-
]);
|
|
294
|
-
t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' });
|
|
295
|
-
t.end();
|
|
296
|
-
});
|
|
297
|
-
|
|
298
|
-
test('when mixed multiple fn:done', function (t) {
|
|
299
|
-
var locals = { falpha: falpha, fbeta: fbeta, fcharlie: fcharlie };
|
|
300
|
-
var r = pcode('a, b', [
|
|
301
|
-
'd = fbeta(a, b)',
|
|
302
|
-
'e = fcharlie(a, b) when fbeta;',
|
|
303
|
-
'c = falpha(a, b) when fbeta and fcharlie;',
|
|
304
|
-
'cb(err, c, d);'
|
|
305
|
-
], locals);
|
|
306
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
307
|
-
t.deepEqual(r.ast.tasks, [
|
|
308
|
-
{ f: 'fbeta', a: ['a', 'b'], out: ['d'], type: 'ret', name: 'fbeta'},
|
|
309
|
-
{ f: 'fcharlie', a: ['a', 'b'], out: ['e'], type: 'ret', after: ['fbeta'], name: 'fcharlie'},
|
|
310
|
-
{ f: 'falpha', a: ['a', 'b'], out: ['c'], type: 'ret', after: ['fbeta', 'fcharlie'], name: 'falpha'}
|
|
311
|
-
]);
|
|
312
|
-
t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' });
|
|
313
|
-
t.end();
|
|
314
|
-
});
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
/* selectFirst */
|
|
318
|
-
|
|
319
|
-
test('selectFirst', function (t) {
|
|
320
|
-
var locals = { falpha: falpha, fbeta: fbeta, fcharlie: fcharlie };
|
|
321
|
-
var r = pcode.selectFirst('a, b', [
|
|
322
|
-
'c := falpha(a, b)',
|
|
323
|
-
'c = fbeta(a, b)',
|
|
324
|
-
'cb(err, c)'
|
|
325
|
-
], locals, { name: 'myflow', otherOptFoo: 'foo'});
|
|
326
|
-
t.deepEqual(r.ast.inParams, ['a', 'b']);
|
|
327
|
-
t.deepEqual(r.ast.tasks, [
|
|
328
|
-
{ f: 'falpha', a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'},
|
|
329
|
-
{ f: 'fbeta', a: ['a', 'b'], out: ['c'], type: 'ret', name: 'fbeta', after: ['falpha']}
|
|
330
|
-
]);
|
|
331
|
-
t.deepEqual(r.ast.outTask, { type: 'finalcbFirst', a: ['c'] });
|
|
332
|
-
t.equal(r.ast.name, 'myflow', 'name should match if supplied');
|
|
333
|
-
t.equal(r.ast.otherOptFoo, 'foo', 'other options should pass through');
|
|
334
|
-
t.end();
|
|
335
|
-
});
|
|
336
|
-
|
|
337
|
-
// full integration tests
|
|
338
|
-
|
|
339
|
-
test('use pcodeDefine from module', function (t) {
|
|
340
|
-
t.plan(3);
|
|
341
|
-
function multiply(a, b, cb) { cb(null, a * b); }
|
|
342
|
-
function add(a, b, cb) { cb(null, a + b); }
|
|
343
|
-
var locals = { multiply: multiply, add: add };
|
|
344
|
-
var fn = pcode('a, b, cb', [
|
|
345
|
-
'm := multiply(a, b)',
|
|
346
|
-
's := add(m, a)',
|
|
347
|
-
'cb(err, m, s)'
|
|
348
|
-
], locals);
|
|
349
|
-
|
|
350
|
-
fn(2, 3, function (err, m, s) {
|
|
351
|
-
t.deepEqual(err, null, 'should not be any error');
|
|
352
|
-
t.equal(m, 6);
|
|
353
|
-
t.equal(s, 8);
|
|
354
|
-
t.end();
|
|
355
|
-
});
|
|
356
|
-
});
|
|
357
|
-
|
|
358
|
-
test('use pcodeDefine with events', function (t) {
|
|
359
|
-
t.plan(8);
|
|
360
|
-
function multiply(a, b, cb) { cb(null, a * b); }
|
|
361
|
-
function add(a, b, cb) { cb(null, a + b); }
|
|
362
|
-
|
|
363
|
-
var locals = { multiply: multiply, add: add };
|
|
364
|
-
var fn = pcode('a, b, cb', [
|
|
365
|
-
'm := multiply(a, b)',
|
|
366
|
-
's := add(m, a)',
|
|
367
|
-
'cb(err, m, s)'
|
|
368
|
-
], locals);
|
|
369
|
-
|
|
370
|
-
var collector = new EventCollector();
|
|
371
|
-
collector.capture(fn, 'task.complete');
|
|
372
|
-
|
|
373
|
-
fn(2, 3, function (err, m, s) {
|
|
374
|
-
t.deepEqual(err, null, 'should not be any error');
|
|
375
|
-
t.equal(m, 6);
|
|
376
|
-
t.equal(s, 8);
|
|
377
|
-
var events = collector.list();
|
|
378
|
-
t.equal(events.length, 2, 'should have seen two task compl events');
|
|
379
|
-
t.equal(events[0].task.name, 'multiply', 'name matches');
|
|
380
|
-
t.deepEqual(events[0].task.results, [6], 'results match');
|
|
381
|
-
t.equal(events[1].task.name, 'add', 'name matches');
|
|
382
|
-
t.deepEqual(events[1].task.results, [8], 'results match');
|
|
383
|
-
t.end();
|
|
384
|
-
});
|
|
385
|
-
});
|
|
386
|
-
|
|
387
|
-
test('use pcodeDefine.selectFirst with events', function (t) {
|
|
388
|
-
t.plan(7);
|
|
389
|
-
function noSuccess(a, b, cb) {
|
|
390
|
-
setTimeout(function () { cb(null); }, 100); // returns undefined result
|
|
391
|
-
}
|
|
392
|
-
function noSuccessNull(a, b, cb) { cb(null, null); } // returns null result
|
|
393
|
-
function add(a, b, cb) { cb(null, a + b); }
|
|
394
|
-
|
|
395
|
-
var locals = { noSuccess: noSuccess, noSuccessNull: noSuccessNull, add: add };
|
|
396
|
-
var fn = pcode.selectFirst('a, b, cb', [
|
|
397
|
-
'c := noSuccess(a, b)',
|
|
398
|
-
'c := noSuccessNull(a, b)',
|
|
399
|
-
'c := add(a, b)',
|
|
400
|
-
'c := noSuccess(a, b)',
|
|
401
|
-
'cb(err, c)'
|
|
402
|
-
], locals);
|
|
403
|
-
|
|
404
|
-
var collector = new EventCollector();
|
|
405
|
-
collector.capture(fn, 'task.complete');
|
|
406
|
-
|
|
407
|
-
fn(2, 3, function (err, c) {
|
|
408
|
-
t.deepEqual(err, null, 'should not be any error');
|
|
409
|
-
t.equal(c, 5);
|
|
410
|
-
var events = collector.list();
|
|
411
|
-
t.equal(events.length, 3, 'should have seen two task compl events');
|
|
412
|
-
t.equal(events[0].task.name, 'noSuccess', 'name matches');
|
|
413
|
-
t.equal(events[1].task.name, 'noSuccessNull', 'name matches');
|
|
414
|
-
t.equal(events[2].task.name, 'add', 'name matches');
|
|
415
|
-
t.deepEqual(events[2].task.results, [5], 'results match');
|
|
416
|
-
t.end();
|
|
417
|
-
});
|
|
418
|
-
});
|
|
419
|
-
|
|
420
|
-
test('use pcodeDefine events emit to global emitter', function (t) {
|
|
421
|
-
t.plan(8);
|
|
422
|
-
function multiply(a, b, cb) { cb(null, a * b); }
|
|
423
|
-
function add(a, b, cb) { cb(null, a + b); }
|
|
424
|
-
|
|
425
|
-
var locals = { multiply: multiply, add: add };
|
|
426
|
-
var fn = pcode('a, b, cb', [
|
|
427
|
-
'm := multiply(a, b)',
|
|
428
|
-
's := add(m, a)',
|
|
429
|
-
'cb(err, m, s)'
|
|
430
|
-
], locals);
|
|
431
|
-
|
|
432
|
-
var collector = new EventCollector();
|
|
433
|
-
collector.capture(pcode, 'task.complete'); // the global react emitter
|
|
434
|
-
|
|
435
|
-
fn(2, 3, function (err, m, s) {
|
|
436
|
-
t.deepEqual(err, null, 'should not be any error');
|
|
437
|
-
t.equal(m, 6);
|
|
438
|
-
t.equal(s, 8);
|
|
439
|
-
var events = collector.list();
|
|
440
|
-
t.equal(events.length, 2, 'should have seen two task compl events');
|
|
441
|
-
t.equal(events[0].task.name, 'multiply', 'name matches');
|
|
442
|
-
t.deepEqual(events[0].task.results, [6], 'results match');
|
|
443
|
-
t.equal(events[1].task.name, 'add', 'name matches');
|
|
444
|
-
t.deepEqual(events[1].task.results, [8], 'results match');
|
|
445
|
-
t.end();
|
|
446
|
-
});
|
|
447
|
-
});
|
|
448
|
-
|