/js/jetpack/tests/unit/impl.js

http://github.com/zpao/v8monkey · JavaScript · 87 lines · 68 code · 19 blank · 0 comment · 4 complexity · be00cae52b5a50eb7fb34d54adcb186c MD5 · raw file

  1. function echo() {
  2. sendMessage.apply(this, arguments);
  3. }
  4. registerReceiver("echo", echo);
  5. registerReceiver("callback",
  6. function(msgName, data, handle) {
  7. sendMessage("sendback",
  8. callMessage("callback", data)[0],
  9. handle);
  10. });
  11. registerReceiver("gimmeHandle",
  12. function(msgName) {
  13. sendMessage("recvHandle", "ok", createHandle());
  14. });
  15. registerReceiver("kthx",
  16. function(msgName, data, child) {
  17. sendMessage("recvHandleAgain", data + data, child.parent);
  18. });
  19. registerReceiver("echo2", echo);
  20. registerReceiver("multireturn begin",
  21. function() {
  22. var results = callMessage("multireturn");
  23. sendMessage.apply(null, ["multireturn check"].concat(results));
  24. });
  25. registerReceiver("testarray",
  26. function(msgName, array) {
  27. sendMessage("testarray", array.reverse());
  28. });
  29. registerReceiver("test primitive types", echo);
  30. registerReceiver("drop methods", echo);
  31. registerReceiver("exception coping", echo);
  32. registerReceiver("duplicate receivers", echo);
  33. function ok(c, msg)
  34. {
  35. sendMessage("test result", c, msg);
  36. }
  37. registerReceiver("test sandbox", function() {
  38. var addon = createSandbox();
  39. ok(typeof(addon) == "object", "typeof(addon)");
  40. ok("Date" in addon, "addon.Date exists");
  41. ok(addon.Date !== Date, "Date objects are different");
  42. var fn = "var x; var c = 3; function doit() { x = 12; return 4; }";
  43. evalInSandbox(addon, fn);
  44. ok(addon.x === undefined, "x is undefined");
  45. ok(addon.c == 3, "c is 3");
  46. ok(addon.doit() == 4, "doit called successfully");
  47. ok(addon.x == 12, "x is now 12");
  48. var fn2 = "let function barbar{}";
  49. try {
  50. evalInSandbox(addon, fn2);
  51. ok(false, "bad syntax should throw");
  52. }
  53. catch(e) {
  54. ok(true, "bad syntax should throw");
  55. }
  56. var fn3 = "throw new Error('just kidding')";
  57. try {
  58. evalInSandbox(addon, fn3);
  59. ok(false, "thrown error should be caught");
  60. }
  61. catch(e) {
  62. ok(true, "thrown error should be caught");
  63. }
  64. sendMessage("sandbox done");
  65. });
  66. registerReceiver("throw", function(msgName) {
  67. throw new Error("throwing on request");
  68. });