test_longstringactor.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. /* -*- indent-tabs-mode: nil; js-indent-level: 2; js-indent-level: 2 -*- */
  2. /* Any copyright is dedicated to the Public Domain.
  3. http://creativecommons.org/publicdomain/zero/1.0/ */
  4. "use strict";
  5. const { LongStringActor } = require("devtools/server/actors/object");
  6. function run_test() {
  7. test_LSA_disconnect();
  8. test_LSA_grip();
  9. test_LSA_onSubstring();
  10. }
  11. const TEST_STRING = "This is a very long string!";
  12. function makeMockLongStringActor()
  13. {
  14. let string = TEST_STRING;
  15. let actor = new LongStringActor(string);
  16. actor.actorID = "longString1";
  17. actor.registeredPool = {
  18. longStringActors: {
  19. [string]: actor
  20. }
  21. };
  22. return actor;
  23. }
  24. function test_LSA_disconnect()
  25. {
  26. let actor = makeMockLongStringActor();
  27. do_check_eq(actor.registeredPool.longStringActors[TEST_STRING], actor);
  28. actor.disconnect();
  29. do_check_eq(actor.registeredPool.longStringActors[TEST_STRING], void 0);
  30. }
  31. function test_LSA_substring()
  32. {
  33. let actor = makeMockLongStringActor();
  34. do_check_eq(actor._substring(0, 4), TEST_STRING.substring(0, 4));
  35. do_check_eq(actor._substring(6, 9), TEST_STRING.substring(6, 9));
  36. do_check_eq(actor._substring(0, TEST_STRING.length), TEST_STRING);
  37. }
  38. function test_LSA_grip()
  39. {
  40. let actor = makeMockLongStringActor();
  41. let grip = actor.grip();
  42. do_check_eq(grip.type, "longString");
  43. do_check_eq(grip.initial, TEST_STRING.substring(0, DebuggerServer.LONG_STRING_INITIAL_LENGTH));
  44. do_check_eq(grip.length, TEST_STRING.length);
  45. do_check_eq(grip.actor, actor.actorID);
  46. }
  47. function test_LSA_onSubstring()
  48. {
  49. let actor = makeMockLongStringActor();
  50. let response;
  51. // From the start
  52. response = actor.onSubstring({
  53. start: 0,
  54. end: 4
  55. });
  56. do_check_eq(response.from, actor.actorID);
  57. do_check_eq(response.substring, TEST_STRING.substring(0, 4));
  58. // In the middle
  59. response = actor.onSubstring({
  60. start: 5,
  61. end: 8
  62. });
  63. do_check_eq(response.from, actor.actorID);
  64. do_check_eq(response.substring, TEST_STRING.substring(5, 8));
  65. // Whole string
  66. response = actor.onSubstring({
  67. start: 0,
  68. end: TEST_STRING.length
  69. });
  70. do_check_eq(response.from, actor.actorID);
  71. do_check_eq(response.substring, TEST_STRING);
  72. // Negative index
  73. response = actor.onSubstring({
  74. start: -5,
  75. end: TEST_STRING.length
  76. });
  77. do_check_eq(response.from, actor.actorID);
  78. do_check_eq(response.substring,
  79. TEST_STRING.substring(-5, TEST_STRING.length));
  80. // Past the end
  81. response = actor.onSubstring({
  82. start: TEST_STRING.length - 5,
  83. end: 100
  84. });
  85. do_check_eq(response.from, actor.actorID);
  86. do_check_eq(response.substring,
  87. TEST_STRING.substring(TEST_STRING.length - 5, 100));
  88. }