UNPKG

nicegen

Version:

nice function support for LiteScript. see: github.com/luciotato/LiteScript

140 lines (107 loc) 3.87 kB
"use strict"; var util = require("util"); var fs = require('fs'), dns = require("dns"); var nicegen = require("../nicegen"); // ---------------------- // DNS TESTS ------------ // ---------------------- function resolveAndReverse( domain, __callback){ return nicegen( this, resolveAndReverse__generator, arguments) }; function* resolveAndReverse__generator(domain){ try{ var addresses = yield [dns,'resolve', domain]; for(var inx=0,addr;inx<addresses.length;inx++){ addr=addresses[inx] console.log(""+addr+", and the reverse for "+addr+" is "+ (yield [dns, 'reverse', addr])); } }catch(err){ console.log(err.message," during resolveAndReverse"); } } function parallelResolveAndReverse( domain, __callback){ return nicegen( this, parallelResolveAndReverse__generator, arguments) }; function* parallelResolveAndReverse__generator(domain){ try{ var addresses = yield [dns,'resolve4', domain]; var results = yield ['map', addresses, dns, 'reverse']; for(var inx=0,addr;inx<addresses.length;inx++){ addr=addresses[inx] console.log(""+addr+", and the reverse for "+addr+" is "+ results[inx]); } }catch(err){ console.log(err.message," during parallel resolveAndReverse"); } } // ---------------------- // OBJECT TESTS --------- // ---------------------- function Constructor(value,pong){ this.value = value; this.pong = pong; } Constructor.prototype.think=function(callback){ if (!this) { var errMsg='ERR: this is null, at: Constructor.prototype.think'; console.log(errMsg); callback(new Error(errMsg)); } else { console.log('thinking...'); var self=this; // callback after 1.5 secs setTimeout(function(){ callback(null, 'the answer is: '+self.value)} ,Math.floor(Math.random()*400)+200); } }; Constructor.prototype.pingPong=function(ping,callback){ // callback before return callback(null, ping+'...'+this.pong); } var theAnswer = new Constructor(42,'tomeito'); var theWrongAnswer = new Constructor('a thousand','tomatito'); // ------------------- // RUN TESTS (Fiber)-- // ------------------- function runTests(__callback){ nicegen(this,runTests_generator,arguments); }; function* runTests_generator(){ console.log('----------------------------------'); console.log('T1: sequential_resolve_reverse_ES6'); console.log('T2: resolve, then parallel reverse'); console.log('T3: METHOD TEST (passing "this" to object methods)'); console.log('--------------------------------'); console.log('.'); console.log('.'); console.log('start'); console.time('PARALLEL Resolve And Reverse'); yield[null,parallelResolveAndReverse,'google.com'] console.timeEnd('PARALLEL Resolve And Reverse'); console.time('Resolve And Reverse'); yield[null,resolveAndReverse,'google.com'] console.timeEnd('Resolve And Reverse'); console.log(yield[theAnswer,'think']); console.log(yield[theWrongAnswer,'think']); console.log(yield[theAnswer,'pingPong','tomato']); console.log(yield[theWrongAnswer,'pingPong','pera']); } // MAIN runTests(); /* //ASYNC CALLED console.log('start'); console.time('Resolve And Reverse'); resolveAndReverse('google.com',function(err,data){ console.timeEnd('Resolve And Reverse'); if(err){console.log(err)} else{if(data)console.log(data)}; }); console.time('PARALLEL Resolve And Reverse'); parallelResolveAndReverse('google.com',function(err,data){ console.timeEnd('PARALLEL Resolve And Reverse'); if(err){console.log(err)} else{if(data)console.log(data)}; }); console.log('after call'); */