ObservableDictionaryTest.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. var __extends = (this && this.__extends) || function (d, b) {
  2. for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
  3. function __() { this.constructor = d; }
  4. d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  5. };
  6. var JasmineTest;
  7. (function (JasmineTest) {
  8. var ObservableStringDictionary = BABYLON.ObservableStringDictionary;
  9. var PropertyChangedBase = BABYLON.PropertyChangedBase;
  10. var DictionaryChanged = BABYLON.DictionaryChanged;
  11. var Customer = (function (_super) {
  12. __extends(Customer, _super);
  13. function Customer(firstName, lastName) {
  14. _super.call(this);
  15. this._firstName = firstName;
  16. this._lastName = lastName;
  17. }
  18. Object.defineProperty(Customer.prototype, "firstName", {
  19. get: function () {
  20. return this._firstName;
  21. },
  22. set: function (value) {
  23. if (this._firstName === value) {
  24. return;
  25. }
  26. var old = this._firstName;
  27. var oldDN = this.displayName;
  28. this._firstName = value;
  29. this.onPropertyChanged("firstName", old, value);
  30. this.onPropertyChanged("displayName", oldDN, this.displayName);
  31. },
  32. enumerable: true,
  33. configurable: true
  34. });
  35. Object.defineProperty(Customer.prototype, "lastName", {
  36. get: function () {
  37. return this._lastName;
  38. },
  39. set: function (value) {
  40. if (this._lastName === value) {
  41. return;
  42. }
  43. var old = this._lastName;
  44. var oldDN = this.displayName;
  45. this._lastName = value;
  46. this.onPropertyChanged("lastName", old, value);
  47. this.onPropertyChanged("displayName", oldDN, this.displayName);
  48. },
  49. enumerable: true,
  50. configurable: true
  51. });
  52. Object.defineProperty(Customer.prototype, "displayName", {
  53. get: function () {
  54. return this.firstName + " " + this.lastName;
  55. },
  56. enumerable: true,
  57. configurable: true
  58. });
  59. return Customer;
  60. }(PropertyChangedBase));
  61. describe("Tools - ObservableDictionary", function () {
  62. it("Add", function () {
  63. var oa = new ObservableStringDictionary(true);
  64. oa.add("cust0", new Customer("loic", "baumann"));
  65. oa.propertyChanged.add(function (e, c) {
  66. expect(e.oldValue).toBe(1, "PropChanged length is bad");
  67. expect(e.newValue).toBe(2, "PropChanged length is bad");
  68. });
  69. oa.dictionaryChanged.add(function (e, c) {
  70. expect(e.action).toEqual(DictionaryChanged.newItemAction);
  71. var item = e.newItem;
  72. expect(item.key).toEqual("cust1");
  73. expect(item.value.firstName).toEqual("david");
  74. expect(item.value.lastName).toEqual("catuhe");
  75. });
  76. oa.add("cust1", new Customer("david", "catuhe"));
  77. expect(oa.count).toBe(2);
  78. var cust = oa.get("cust1");
  79. expect(cust).toBeDefined();
  80. expect(cust.firstName).toEqual("david");
  81. expect(cust.lastName).toEqual("catuhe");
  82. });
  83. it("Remove", function () {
  84. var oa = new ObservableStringDictionary(true);
  85. var cust0 = new Customer("loic", "baumann");
  86. var cust1 = new Customer("david", "catuhe");
  87. oa.add("cust0", cust0);
  88. oa.add("cust1", cust1);
  89. oa.propertyChanged.add(function (e, c) {
  90. expect(e.oldValue).toBe(2, "PropChanged length is bad");
  91. expect(e.newValue).toBe(1, "PropChanged length is bad");
  92. });
  93. oa.dictionaryChanged.add(function (e, c) {
  94. expect(e.action).toEqual(DictionaryChanged.removedItemAction);
  95. var key = e.removedKey;
  96. expect(key).toEqual("cust0");
  97. });
  98. oa.watchedObjectChanged.add(function (e, c) {
  99. fail("watchedObject shouldn't be called as only a removed object had a property changed");
  100. });
  101. expect(oa.count).toBe(2);
  102. var cust = oa.get("cust1");
  103. expect(cust).toBeDefined();
  104. expect(cust.firstName).toEqual("david");
  105. expect(cust.lastName).toEqual("catuhe");
  106. oa.remove("cust0");
  107. cust = oa.get("cust0");
  108. expect(cust).toBeUndefined();
  109. cust0.firstName = "nockawa";
  110. });
  111. it("Watched Element", function () {
  112. var oa = new ObservableStringDictionary(true);
  113. oa.add("cust0", new Customer("loic", "baumann"));
  114. oa.add("cust1", new Customer("david", "catuhe"));
  115. var triggerCounter = 0;
  116. oa.watchedObjectChanged.add(function (e, c) {
  117. if (triggerCounter === 0) {
  118. expect(e.key).toBe("cust1");
  119. expect(e.propertyChanged.propertyName).toBe("firstName");
  120. expect(e.propertyChanged.oldValue).toBe("david");
  121. expect(e.propertyChanged.newValue).toBe("delta");
  122. ++triggerCounter;
  123. }
  124. else {
  125. expect(e.key).toBe("cust1");
  126. expect(e.propertyChanged.propertyName).toBe("displayName");
  127. expect(e.propertyChanged.oldValue).toBe("david catuhe");
  128. expect(e.propertyChanged.newValue).toBe("delta catuhe");
  129. ++triggerCounter;
  130. }
  131. });
  132. var cust = oa.get("cust1");
  133. cust.firstName = "delta";
  134. });
  135. });
  136. })(JasmineTest || (JasmineTest = {}));
  137. //# sourceMappingURL=ObservableDictionaryTest.js.map