promise-spawn.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. var assert = require("assert");
  2. var promise = require("../promise");
  3. exports.testResolved = function (){
  4. return promise.spawn(function* (){
  5. yield promise.delay(100);
  6. // can yield non-promise values
  7. var foo = yield 'foo';
  8. assert.ok(foo === 'foo');
  9. var result = yield promise.delay(50).then(function () {
  10. return foo;
  11. });
  12. var error = new Error('Boom!');
  13. var start = new Date();
  14. try {
  15. yield promise.delay(100).then(function () {
  16. throw error;
  17. });
  18. // Should never come here
  19. assert.ok(true === false);
  20. }
  21. catch (e) {
  22. assert.ok(e === error);
  23. assert.ok(new Date() - start >= 100);
  24. }
  25. return result;
  26. }).then(function (value) {
  27. assert.ok(value === 'foo');
  28. return true;
  29. }, function (e) {
  30. // Should never come here
  31. assert.ok(true === false);
  32. });
  33. };
  34. exports.testRejected = function (){
  35. var error = new Error('Boom!');
  36. return promise.spawn(function* (){
  37. var start = new Date();
  38. yield promise.delay(100).then(function () {
  39. assert.ok(new Date() - start >= 100);
  40. throw error;
  41. });
  42. // Should never come here
  43. assert.ok(true === false);
  44. }).then(function () {
  45. // Should never come here
  46. assert.ok(true === false);
  47. }, function (e) {
  48. assert.ok(e === error);
  49. return true;
  50. });
  51. };
  52. if (require.main === module)
  53. require("patr/runner").run(exports);