test_sanitySpawnTask.xul 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?xml version="1.0"?>
  2. <!-- This Source Code Form is subject to the terms of the Mozilla Public
  3. - License, v. 2.0. If a copy of the MPL was not distributed with this
  4. - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
  5. <?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
  6. type="text/css"?>
  7. <window title="Test spawnTawk function"
  8. xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  9. <script type="application/javascript"
  10. src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
  11. <script type="application/javascript"
  12. src="chrome://mochikit/content/tests/SimpleTest/SpawnTask.js"/>
  13. <script type="application/javascript">
  14. <![CDATA[
  15. SimpleTest.waitForExplicitFinish();
  16. var externalGeneratorFunction = function* () {
  17. return 8;
  18. };
  19. var nestedFunction = function* () {
  20. return yield function* () {
  21. return yield function* () {
  22. return yield function* () {
  23. return yield Promise.resolve(9);
  24. }();
  25. }();
  26. }();
  27. }
  28. var variousTests = function* () {
  29. var val1 = yield [Promise.resolve(1), Promise.resolve(2), Promise.resolve(3)];
  30. is(val1.join(""), "123", "Array of promises -> Promise.all");
  31. var val2 = yield Promise.resolve(2);
  32. is(val2, 2, "Resolved promise yields value.");
  33. var val3 = yield function* () { return 3; };
  34. is(val3, 3, "Generator functions are spawned.");
  35. //var val4 = yield function () { return 4; };
  36. //is(val4, 4, "Plain functions run and return.");
  37. var val5 = yield (function* () { return 5; }());
  38. is(val5, 5, "Generators are spawned.");
  39. try {
  40. var val6 = yield Promise.reject(Error("error6"));
  41. ok(false, "Shouldn't reach this line.");
  42. } catch (error) {
  43. is(error.message, "error6", "Rejected promise throws error.");
  44. }
  45. try {
  46. var val7 = yield function* () { throw Error("error7"); };
  47. ok(false, "Shouldn't reach this line.");
  48. } catch (error) {
  49. is(error.message, "error7", "Thrown error propagates.");
  50. }
  51. var val8 = yield externalGeneratorFunction();
  52. is(val8, 8, "External generator also spawned.");
  53. var val9 = yield nestedFunction();
  54. is(val9, 9, "Nested generator functions work.");
  55. return 10;
  56. };
  57. spawn_task(variousTests).then(function(result) {
  58. is(result, 10, "spawn_task(...) returns promise");
  59. SimpleTest.finish();
  60. });
  61. ]]>
  62. </script>
  63. <body xmlns="http://www.w3.org/1999/xhtml" >
  64. </body>
  65. </window>