| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 assertTrue(notifyDesc.configurable); | 138 assertTrue(notifyDesc.configurable); |
| 139 assertTrue(notifyDesc.writable); | 139 assertTrue(notifyDesc.writable); |
| 140 assertFalse(notifyDesc.enumerable); | 140 assertFalse(notifyDesc.enumerable); |
| 141 assertThrows(function() { notifier.notify({}); }, TypeError); | 141 assertThrows(function() { notifier.notify({}); }, TypeError); |
| 142 assertThrows(function() { notifier.notify({ type: 4 }); }, TypeError); | 142 assertThrows(function() { notifier.notify({ type: 4 }); }, TypeError); |
| 143 | 143 |
| 144 assertThrows(function() { notifier.performChange(1, function(){}); }, TypeError)
; | 144 assertThrows(function() { notifier.performChange(1, function(){}); }, TypeError)
; |
| 145 assertThrows(function() { notifier.performChange(undefined, function(){}); }, Ty
peError); | 145 assertThrows(function() { notifier.performChange(undefined, function(){}); }, Ty
peError); |
| 146 assertThrows(function() { notifier.performChange('foo', undefined); }, TypeError
); | 146 assertThrows(function() { notifier.performChange('foo', undefined); }, TypeError
); |
| 147 assertThrows(function() { notifier.performChange('foo', 'bar'); }, TypeError); | 147 assertThrows(function() { notifier.performChange('foo', 'bar'); }, TypeError); |
| 148 var testSelf = {}; | |
| 149 notifier.performChange('foo', function() { | 148 notifier.performChange('foo', function() { |
| 150 assertTrue(testSelf === this); | 149 assertEquals(undefined, this); |
| 151 }, testSelf); | |
| 152 var self = this; | |
| 153 notifier.performChange('foo', function() { | |
| 154 assertTrue(self === this); | |
| 155 }); | 150 }); |
| 156 | 151 |
| 157 var notify = notifier.notify; | 152 var notify = notifier.notify; |
| 158 assertThrows(function() { notify.call(undefined, { type: 'a' }); }, TypeError); | 153 assertThrows(function() { notify.call(undefined, { type: 'a' }); }, TypeError); |
| 159 assertThrows(function() { notify.call(null, { type: 'a' }); }, TypeError); | 154 assertThrows(function() { notify.call(null, { type: 'a' }); }, TypeError); |
| 160 assertThrows(function() { notify.call(5, { type: 'a' }); }, TypeError); | 155 assertThrows(function() { notify.call(5, { type: 'a' }); }, TypeError); |
| 161 assertThrows(function() { notify.call('hello', { type: 'a' }); }, TypeError); | 156 assertThrows(function() { notify.call('hello', { type: 'a' }); }, TypeError); |
| 162 assertThrows(function() { notify.call(false, { type: 'a' }); }, TypeError); | 157 assertThrows(function() { notify.call(false, { type: 'a' }); }, TypeError); |
| 163 assertThrows(function() { notify.call({}, { type: 'a' }); }, TypeError); | 158 assertThrows(function() { notify.call({}, { type: 'a' }); }, TypeError); |
| 164 assertFalse(recordCreated); | 159 assertFalse(recordCreated); |
| (...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 393 } | 388 } |
| 394 | 389 |
| 395 Thingy.MULTIPLY = 'multiply'; | 390 Thingy.MULTIPLY = 'multiply'; |
| 396 Thingy.INCREMENT = 'increment'; | 391 Thingy.INCREMENT = 'increment'; |
| 397 Thingy.INCREMENT_AND_MULTIPLY = 'incrementAndMultiply'; | 392 Thingy.INCREMENT_AND_MULTIPLY = 'incrementAndMultiply'; |
| 398 | 393 |
| 399 Thingy.prototype = { | 394 Thingy.prototype = { |
| 400 increment: function(amount) { | 395 increment: function(amount) { |
| 401 var notifier = Object.getNotifier(this); | 396 var notifier = Object.getNotifier(this); |
| 402 | 397 |
| 398 var self = this; |
| 403 notifier.performChange(Thingy.INCREMENT, function() { | 399 notifier.performChange(Thingy.INCREMENT, function() { |
| 404 this.a += amount; | 400 self.a += amount; |
| 405 this.b += amount; | 401 self.b += amount; |
| 406 }, this); | 402 }); |
| 407 | 403 |
| 408 notifier.notify({ | 404 notifier.notify({ |
| 409 object: this, | 405 object: this, |
| 410 type: Thingy.INCREMENT, | 406 type: Thingy.INCREMENT, |
| 411 incremented: amount | 407 incremented: amount |
| 412 }); | 408 }); |
| 413 }, | 409 }, |
| 414 | 410 |
| 415 multiply: function(amount) { | 411 multiply: function(amount) { |
| 416 var notifier = Object.getNotifier(this); | 412 var notifier = Object.getNotifier(this); |
| 417 | 413 |
| 414 var self = this; |
| 418 notifier.performChange(Thingy.MULTIPLY, function() { | 415 notifier.performChange(Thingy.MULTIPLY, function() { |
| 419 this.a *= amount; | 416 self.a *= amount; |
| 420 this.b *= amount; | 417 self.b *= amount; |
| 421 }, this); | 418 }); |
| 422 | 419 |
| 423 notifier.notify({ | 420 notifier.notify({ |
| 424 object: this, | 421 object: this, |
| 425 type: Thingy.MULTIPLY, | 422 type: Thingy.MULTIPLY, |
| 426 multiplied: amount | 423 multiplied: amount |
| 427 }); | 424 }); |
| 428 }, | 425 }, |
| 429 | 426 |
| 430 incrementAndMultiply: function(incAmount, multAmount) { | 427 incrementAndMultiply: function(incAmount, multAmount) { |
| 431 var notifier = Object.getNotifier(this); | 428 var notifier = Object.getNotifier(this); |
| 432 | 429 |
| 430 var self = this; |
| 433 notifier.performChange(Thingy.INCREMENT_AND_MULTIPLY, function() { | 431 notifier.performChange(Thingy.INCREMENT_AND_MULTIPLY, function() { |
| 434 this.increment(incAmount); | 432 self.increment(incAmount); |
| 435 this.multiply(multAmount); | 433 self.multiply(multAmount); |
| 436 }, this); | 434 }); |
| 437 | 435 |
| 438 notifier.notify({ | 436 notifier.notify({ |
| 439 object: this, | 437 object: this, |
| 440 type: Thingy.INCREMENT_AND_MULTIPLY, | 438 type: Thingy.INCREMENT_AND_MULTIPLY, |
| 441 incremented: incAmount, | 439 incremented: incAmount, |
| 442 multiplied: multAmount | 440 multiplied: multAmount |
| 443 }); | 441 }); |
| 444 } | 442 } |
| 445 } | 443 } |
| 446 | 444 |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 498 | 496 |
| 499 RecursiveThingy.MULTIPLY_FIRST_N = 'multiplyFirstN'; | 497 RecursiveThingy.MULTIPLY_FIRST_N = 'multiplyFirstN'; |
| 500 | 498 |
| 501 RecursiveThingy.prototype = { | 499 RecursiveThingy.prototype = { |
| 502 __proto__: Array.prototype, | 500 __proto__: Array.prototype, |
| 503 | 501 |
| 504 multiplyFirstN: function(amount, n) { | 502 multiplyFirstN: function(amount, n) { |
| 505 if (!n) | 503 if (!n) |
| 506 return; | 504 return; |
| 507 var notifier = Object.getNotifier(this); | 505 var notifier = Object.getNotifier(this); |
| 506 var self = this; |
| 508 notifier.performChange(RecursiveThingy.MULTIPLY_FIRST_N, function() { | 507 notifier.performChange(RecursiveThingy.MULTIPLY_FIRST_N, function() { |
| 509 this[n-1] = this[n-1]*amount; | 508 self[n-1] = self[n-1]*amount; |
| 510 this.multiplyFirstN(amount, n-1); | 509 self.multiplyFirstN(amount, n-1); |
| 511 }, this); | 510 }); |
| 512 | 511 |
| 513 notifier.notify({ | 512 notifier.notify({ |
| 514 object: this, | 513 object: this, |
| 515 type: RecursiveThingy.MULTIPLY_FIRST_N, | 514 type: RecursiveThingy.MULTIPLY_FIRST_N, |
| 516 multiplied: amount, | 515 multiplied: amount, |
| 517 n: n | 516 n: n |
| 518 }); | 517 }); |
| 519 }, | 518 }, |
| 520 } | 519 } |
| 521 | 520 |
| (...skipping 28 matching lines...) Expand all Loading... |
| 550 this.push('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'A', 'Q', 'K'); | 549 this.push('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'A', 'Q', 'K'); |
| 551 } | 550 } |
| 552 | 551 |
| 553 DeckSuit.SHUFFLE = 'shuffle'; | 552 DeckSuit.SHUFFLE = 'shuffle'; |
| 554 | 553 |
| 555 DeckSuit.prototype = { | 554 DeckSuit.prototype = { |
| 556 __proto__: Array.prototype, | 555 __proto__: Array.prototype, |
| 557 | 556 |
| 558 shuffle: function() { | 557 shuffle: function() { |
| 559 var notifier = Object.getNotifier(this); | 558 var notifier = Object.getNotifier(this); |
| 559 var self = this; |
| 560 notifier.performChange(DeckSuit.SHUFFLE, function() { | 560 notifier.performChange(DeckSuit.SHUFFLE, function() { |
| 561 this.reverse(); | 561 self.reverse(); |
| 562 this.sort(function() { return Math.random()* 2 - 1; }); | 562 self.sort(function() { return Math.random()* 2 - 1; }); |
| 563 var cut = this.splice(0, 6); | 563 var cut = self.splice(0, 6); |
| 564 Array.prototype.push.apply(this, cut); | 564 Array.prototype.push.apply(self, cut); |
| 565 this.reverse(); | 565 self.reverse(); |
| 566 this.sort(function() { return Math.random()* 2 - 1; }); | 566 self.sort(function() { return Math.random()* 2 - 1; }); |
| 567 var cut = this.splice(0, 6); | 567 var cut = self.splice(0, 6); |
| 568 Array.prototype.push.apply(this, cut); | 568 Array.prototype.push.apply(self, cut); |
| 569 this.reverse(); | 569 self.reverse(); |
| 570 this.sort(function() { return Math.random()* 2 - 1; }); | 570 self.sort(function() { return Math.random()* 2 - 1; }); |
| 571 }, this); | 571 }); |
| 572 | 572 |
| 573 notifier.notify({ | 573 notifier.notify({ |
| 574 object: this, | 574 object: this, |
| 575 type: DeckSuit.SHUFFLE | 575 type: DeckSuit.SHUFFLE |
| 576 }); | 576 }); |
| 577 }, | 577 }, |
| 578 } | 578 } |
| 579 | 579 |
| 580 DeckSuit.observe = function(thingy, callback) { | 580 DeckSuit.observe = function(thingy, callback) { |
| 581 Object.observe(thingy, callback, [DeckSuit.SHUFFLE]); | 581 Object.observe(thingy, callback, [DeckSuit.SHUFFLE]); |
| (...skipping 943 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1525 for (var n1 = 0; n1 < 3; ++n1) | 1525 for (var n1 = 0; n1 < 3; ++n1) |
| 1526 for (var n2 = 0; n2 < 3; ++n2) | 1526 for (var n2 = 0; n2 < 3; ++n2) |
| 1527 for (var i in mutation) | 1527 for (var i in mutation) |
| 1528 TestFastElementsLength(mutation[i], b1 != 0, b2 != 0, 20*n1, 20*n2); | 1528 TestFastElementsLength(mutation[i], b1 != 0, b2 != 0, 20*n1, 20*n2); |
| 1529 | 1529 |
| 1530 for (var b1 = 0; b1 < 2; ++b1) | 1530 for (var b1 = 0; b1 < 2; ++b1) |
| 1531 for (var b2 = 0; b2 < 2; ++b2) | 1531 for (var b2 = 0; b2 < 2; ++b2) |
| 1532 for (var n = 0; n < 3; ++n) | 1532 for (var n = 0; n < 3; ++n) |
| 1533 for (var i in mutationByIncr) | 1533 for (var i in mutationByIncr) |
| 1534 TestFastElementsLength(mutationByIncr[i], b1 != 0, b2 != 0, 7*n, 7*n+1); | 1534 TestFastElementsLength(mutationByIncr[i], b1 != 0, b2 != 0, 7*n, 7*n+1); |
| OLD | NEW |