mirror of
				https://github.com/crazy-max/ghaction-upx.git
				synced 2025-11-04 04:58:11 -07:00 
			
		
		
		
	
		
			
				
	
	
		
			138 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
var assert = require('assert');
 | 
						|
var Pend = require('./');
 | 
						|
 | 
						|
var tests = [
 | 
						|
  {
 | 
						|
    name: "basic",
 | 
						|
    fn: testBasic,
 | 
						|
  },
 | 
						|
  {
 | 
						|
    name: "max",
 | 
						|
    fn: testWithMax,
 | 
						|
  },
 | 
						|
  {
 | 
						|
    name: "callback twice",
 | 
						|
    fn: testCallbackTwice,
 | 
						|
  },
 | 
						|
  {
 | 
						|
    name: "calling wait twice",
 | 
						|
    fn: testCallingWaitTwice,
 | 
						|
  },
 | 
						|
  {
 | 
						|
    name: "hold()",
 | 
						|
    fn: testHoldFn,
 | 
						|
  },
 | 
						|
];
 | 
						|
var testCount = tests.length;
 | 
						|
 | 
						|
doOneTest();
 | 
						|
 | 
						|
function doOneTest() {
 | 
						|
  var test = tests.shift();
 | 
						|
  if (!test) {
 | 
						|
    console.log(testCount + " tests passed.");
 | 
						|
    return;
 | 
						|
  }
 | 
						|
  process.stdout.write(test.name + "...");
 | 
						|
  test.fn(function() {
 | 
						|
    process.stdout.write("OK\n");
 | 
						|
    doOneTest();
 | 
						|
  });
 | 
						|
}
 | 
						|
 | 
						|
function testBasic(cb) {
 | 
						|
  var pend = new Pend();
 | 
						|
  var results = [];
 | 
						|
  pend.go(function(cb) {
 | 
						|
    results.push(1);
 | 
						|
    setTimeout(function() {
 | 
						|
      results.push(3);
 | 
						|
      cb();
 | 
						|
    }, 500);
 | 
						|
  });
 | 
						|
  pend.go(function(cb) {
 | 
						|
    results.push(2);
 | 
						|
    setTimeout(function() {
 | 
						|
      results.push(4);
 | 
						|
      cb();
 | 
						|
    }, 1000);
 | 
						|
  });
 | 
						|
  pend.wait(function(err) {
 | 
						|
    assert.deepEqual(results, [1,2,3,4]);
 | 
						|
    cb();
 | 
						|
  });
 | 
						|
  assert.deepEqual(results, [1, 2]);
 | 
						|
}
 | 
						|
 | 
						|
function testWithMax(cb) {
 | 
						|
  var pend = new Pend();
 | 
						|
  var results = [];
 | 
						|
  pend.max = 2;
 | 
						|
  pend.go(function(cb) {
 | 
						|
    results.push('a');
 | 
						|
    setTimeout(function() {
 | 
						|
      results.push(1);
 | 
						|
      cb();
 | 
						|
    }, 500);
 | 
						|
  });
 | 
						|
  pend.go(function(cb) {
 | 
						|
    results.push('b');
 | 
						|
    setTimeout(function() {
 | 
						|
      results.push(1);
 | 
						|
      cb();
 | 
						|
    }, 500);
 | 
						|
  });
 | 
						|
  pend.go(function(cb) {
 | 
						|
    results.push('c');
 | 
						|
    setTimeout(function() {
 | 
						|
      results.push(2);
 | 
						|
      cb();
 | 
						|
    }, 100);
 | 
						|
  });
 | 
						|
  pend.wait(function(err) {
 | 
						|
    assert.deepEqual(results, ['a', 'b', 1, 'c', 1, 2]);
 | 
						|
    cb();
 | 
						|
  });
 | 
						|
  assert.deepEqual(results, ['a', 'b']);
 | 
						|
}
 | 
						|
 | 
						|
function testCallbackTwice(cb) {
 | 
						|
  var pend = new Pend();
 | 
						|
  pend.go(function(cb) {
 | 
						|
    setTimeout(cb, 100);
 | 
						|
  });
 | 
						|
  pend.go(function(cb) {
 | 
						|
    cb();
 | 
						|
    assert.throws(cb, /callback called twice/);
 | 
						|
  });
 | 
						|
  pend.wait(cb);
 | 
						|
}
 | 
						|
 | 
						|
function testCallingWaitTwice(cb) {
 | 
						|
  var pend = new Pend();
 | 
						|
  pend.go(function(cb) {
 | 
						|
    setTimeout(cb, 100);
 | 
						|
  });
 | 
						|
  pend.wait(function() {
 | 
						|
    pend.go(function(cb) {
 | 
						|
      setTimeout(cb, 50);
 | 
						|
    });
 | 
						|
    pend.go(function(cb) {
 | 
						|
      setTimeout(cb, 10);
 | 
						|
    });
 | 
						|
    pend.go(function(cb) {
 | 
						|
      setTimeout(cb, 20);
 | 
						|
    });
 | 
						|
    pend.wait(cb);
 | 
						|
  });
 | 
						|
}
 | 
						|
 | 
						|
function testHoldFn(cb) {
 | 
						|
  var pend = new Pend();
 | 
						|
  setTimeout(pend.hold(), 100);
 | 
						|
  pend.go(function(cb) {
 | 
						|
    cb();
 | 
						|
  });
 | 
						|
  pend.wait(cb);
 | 
						|
}
 |