nicegen
Version:
nice function support for LiteScript. see: github.com/luciotato/LiteScript
140 lines (107 loc) • 3.87 kB
JavaScript
;
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');
*/