ember-source 1.8.0.beta.4 → 1.8.0.beta.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1ffeb5cdfb2eb08e6473fc492c7492620bb6dab8
4
- data.tar.gz: 097e80d0bed3b23bc532d963ac4236d2bc68003e
3
+ metadata.gz: f30bc696893c2069707688aabc68af377e5ee6a0
4
+ data.tar.gz: ba5e80a8ef7488147776338c8b12fc23d6abf958
5
5
  SHA512:
6
- metadata.gz: 633d7ca1d371f1a22efc8647b307c03e682ae4ec52c557e200f5a84b6bfc460f7cbd8a2019e451d6b15abdd1154445d4b5833bc776832caff8f4340552c37c02
7
- data.tar.gz: 9c16f7819ee9d7cea4deb894fcc2be592063eff8e6abb1c7d1b63949f079f92fb55ce8ad99c9a1a5e7742a1ec116efc34888bb821f78d677b35493630186cec4
6
+ metadata.gz: b8d4d2db19c645fd03e9060125e94f290ef54184d4f88132226a46fb4bcd3e77852e8ea17f905c174ac823be8d228909e573c71487c589c64625279568211771
7
+ data.tar.gz: 99ca05ee6df42a141f1a2b7c48142d8ab0d2c68c107019fb022fded5ec9f07bbb06b98ed48b02a2e9f7b24e6e6e1eb22d2a78a2ebc74334db00594049365e46c
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.8.0-beta.4
1
+ 1.8.0-beta.5
@@ -5,7 +5,7 @@
5
5
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
6
6
  * @license Licensed under MIT license
7
7
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
8
- * @version 1.8.0-beta.4
8
+ * @version 1.8.0-beta.5
9
9
  */
10
10
 
11
11
  (function() {
@@ -2508,8 +2508,8 @@ define("ember-metal/array",
2508
2508
  __exports__.lastIndexOf = lastIndexOf;
2509
2509
  });
2510
2510
  define("ember-metal/binding",
2511
- ["ember-metal/core","ember-metal/property_get","ember-metal/property_set","ember-metal/utils","ember-metal/map","ember-metal/observer","ember-metal/run_loop","ember-metal/path_cache","exports"],
2512
- function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __exports__) {
2511
+ ["ember-metal/core","ember-metal/property_get","ember-metal/property_set","ember-metal/utils","ember-metal/observer","ember-metal/run_loop","ember-metal/path_cache","exports"],
2512
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __exports__) {
2513
2513
  "use strict";
2514
2514
  var Ember = __dependency1__["default"];
2515
2515
  // Ember.Logger, Ember.LOG_BINDINGS, assert
@@ -2517,12 +2517,11 @@ define("ember-metal/binding",
2517
2517
  var set = __dependency3__.set;
2518
2518
  var trySet = __dependency3__.trySet;
2519
2519
  var guidFor = __dependency4__.guidFor;
2520
- var Map = __dependency5__["default"];
2521
- var addObserver = __dependency6__.addObserver;
2522
- var removeObserver = __dependency6__.removeObserver;
2523
- var _suspendObserver = __dependency6__._suspendObserver;
2524
- var run = __dependency7__["default"];
2525
- var isGlobalPath = __dependency8__.isGlobal;
2520
+ var addObserver = __dependency5__.addObserver;
2521
+ var removeObserver = __dependency5__.removeObserver;
2522
+ var _suspendObserver = __dependency5__._suspendObserver;
2523
+ var run = __dependency6__["default"];
2524
+ var isGlobalPath = __dependency7__.isGlobal;
2526
2525
 
2527
2526
 
2528
2527
  // ES6TODO: where is Ember.lookup defined?
@@ -2566,10 +2565,9 @@ define("ember-metal/binding",
2566
2565
  //
2567
2566
 
2568
2567
  function Binding(toPath, fromPath) {
2569
- this._direction = 'fwd';
2568
+ this._direction = undefined;
2570
2569
  this._from = fromPath;
2571
2570
  this._to = toPath;
2572
- this._directionMap = new Map();
2573
2571
  this._readyToSync = undefined;
2574
2572
  this._oneWay = undefined;
2575
2573
  }
@@ -2725,19 +2723,18 @@ define("ember-metal/binding",
2725
2723
  },
2726
2724
 
2727
2725
  _scheduleSync: function(obj, dir) {
2728
- var directionMap = this._directionMap;
2729
- var existingDir = directionMap.get(obj);
2726
+ var existingDir = this._direction;
2730
2727
 
2731
2728
  // if we haven't scheduled the binding yet, schedule it
2732
- if (!existingDir) {
2729
+ if (existingDir === undefined) {
2733
2730
  run.schedule('sync', this, this._sync, obj);
2734
- directionMap.set(obj, dir);
2731
+ this._direction = dir;
2735
2732
  }
2736
2733
 
2737
2734
  // If both a 'back' and 'fwd' sync have been scheduled on the same object,
2738
2735
  // default to a 'fwd' sync so that it remains deterministic.
2739
2736
  if (existingDir === 'back' && dir === 'fwd') {
2740
- directionMap.set(obj, 'fwd');
2737
+ this._direction = 'fwd';
2741
2738
  }
2742
2739
  },
2743
2740
 
@@ -2749,13 +2746,12 @@ define("ember-metal/binding",
2749
2746
 
2750
2747
  // get the direction of the binding for the object we are
2751
2748
  // synchronizing from
2752
- var directionMap = this._directionMap;
2753
- var direction = directionMap.get(obj);
2749
+ var direction = this._direction;
2754
2750
 
2755
2751
  var fromPath = this._from;
2756
2752
  var toPath = this._to;
2757
2753
 
2758
- directionMap.delete(obj);
2754
+ this._direction = undefined;
2759
2755
 
2760
2756
  // if we're synchronizing from the remote object...
2761
2757
  if (direction === 'fwd') {
@@ -2800,10 +2796,9 @@ define("ember-metal/binding",
2800
2796
  @method from
2801
2797
  @static
2802
2798
  */
2803
- from: function() {
2799
+ from: function(from) {
2804
2800
  var C = this;
2805
- var binding = new C();
2806
- return binding.from.apply(binding, arguments);
2801
+ return new C(undefined, from);
2807
2802
  },
2808
2803
 
2809
2804
  /*
@@ -2812,10 +2807,9 @@ define("ember-metal/binding",
2812
2807
  @method to
2813
2808
  @static
2814
2809
  */
2815
- to: function() {
2810
+ to: function(to) {
2816
2811
  var C = this;
2817
- var binding = new C();
2818
- return binding.to.apply(binding, arguments);
2812
+ return new C(to, undefined);
2819
2813
  },
2820
2814
 
2821
2815
  /**
@@ -2836,8 +2830,7 @@ define("ember-metal/binding",
2836
2830
  */
2837
2831
  oneWay: function(from, flag) {
2838
2832
  var C = this;
2839
- var binding = new C(null, from);
2840
- return binding.oneWay(flag);
2833
+ return new C(undefined, from).oneWay(flag);
2841
2834
  }
2842
2835
 
2843
2836
  });
@@ -4769,7 +4762,7 @@ define("ember-metal/core",
4769
4762
 
4770
4763
  @class Ember
4771
4764
  @static
4772
- @version 1.8.0-beta.4
4765
+ @version 1.8.0-beta.5
4773
4766
  */
4774
4767
 
4775
4768
  if ('undefined' === typeof Ember) {
@@ -4796,10 +4789,10 @@ define("ember-metal/core",
4796
4789
  /**
4797
4790
  @property VERSION
4798
4791
  @type String
4799
- @default '1.8.0-beta.4'
4792
+ @default '1.8.0-beta.5'
4800
4793
  @static
4801
4794
  */
4802
- Ember.VERSION = '1.8.0-beta.4';
4795
+ Ember.VERSION = '1.8.0-beta.5';
4803
4796
 
4804
4797
  /**
4805
4798
  Standard environmental variables. You can define these in a global `EmberENV`
@@ -6698,13 +6691,12 @@ define("ember-metal/map",
6698
6691
  var presenceSet = this.presenceSet;
6699
6692
  var list = this.list;
6700
6693
 
6701
- if (presenceSet[guid]) {
6694
+ if (presenceSet[guid] === true) {
6702
6695
  return;
6703
6696
  }
6704
6697
 
6705
6698
  presenceSet[guid] = true;
6706
- list.push(obj);
6707
- this.size++;
6699
+ this.size = list.push(obj);
6708
6700
 
6709
6701
  return this;
6710
6702
  },
@@ -6734,13 +6726,13 @@ define("ember-metal/map",
6734
6726
  var presenceSet = this.presenceSet;
6735
6727
  var list = this.list;
6736
6728
 
6737
- if (presenceSet[guid] !== undefined) {
6729
+ if (presenceSet[guid] === true) {
6738
6730
  delete presenceSet[guid];
6739
6731
  var index = indexOf.call(list, obj);
6740
6732
  if (index > -1) {
6741
6733
  list.splice(index, 1);
6742
6734
  }
6743
- this.size--;
6735
+ this.size = list.length;
6744
6736
  return true;
6745
6737
  } else {
6746
6738
  return false;
@@ -6766,7 +6758,7 @@ define("ember-metal/map",
6766
6758
  var guid = guidFor(obj);
6767
6759
  var presenceSet = this.presenceSet;
6768
6760
 
6769
- return !!presenceSet[guid];
6761
+ return presenceSet[guid] === true;
6770
6762
  },
6771
6763
 
6772
6764
  /**
@@ -6948,8 +6940,7 @@ define("ember-metal/map",
6948
6940
  var values = this.values;
6949
6941
  var guid = guidFor(key);
6950
6942
 
6951
- if (values[guid]) {
6952
- keys.delete(key, guid);
6943
+ if (keys.delete(key, guid)) {
6953
6944
  delete values[guid];
6954
6945
  this.size = keys.size;
6955
6946
  return true;
@@ -6966,7 +6957,6 @@ define("ember-metal/map",
6966
6957
  @return {Boolean} true if the item was present, false otherwise
6967
6958
  */
6968
6959
  has: function(key) {
6969
- if (this.size === 0) { return false; }
6970
6960
  return this.keys.has(key);
6971
6961
  },
6972
6962
 
@@ -16788,7 +16778,7 @@ define("ember-runtime/mixins/mutable_array",
16788
16778
  },
16789
16779
 
16790
16780
  /**
16791
- Replace all the the receiver's content with content of the argument.
16781
+ Replace all the receiver's content with content of the argument.
16792
16782
  If argument is an empty array receiver will be cleared.
16793
16783
 
16794
16784
  ```javascript
@@ -19790,7 +19780,7 @@ define("ember-runtime/system/namespace",
19790
19780
  },
19791
19781
 
19792
19782
  toString: function() {
19793
- var name = get(this, 'name');
19783
+ var name = get(this, 'name') || get(this, 'modulePrefix');
19794
19784
  if (name) { return name; }
19795
19785
 
19796
19786
  findNamespaces();
@@ -5,7 +5,7 @@
5
5
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
6
6
  * @license Licensed under MIT license
7
7
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
8
- * @version 1.8.0-beta.4
8
+ * @version 1.8.0-beta.5
9
9
  */
10
10
 
11
11
  (function() {
@@ -14991,19 +14991,17 @@ define("ember-metal/tests/binding/oneWay_test.jshint",
14991
14991
  });
14992
14992
  });
14993
14993
  define("ember-metal/tests/binding/sync_test",
14994
- ["ember-metal/tests/props_helper","ember-metal/run_loop","ember-metal/observer","ember-metal/platform","ember-metal/binding","ember-metal/watching","ember-metal/computed","ember-metal/properties"],
14995
- function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__) {
14994
+ ["ember-metal/tests/props_helper","ember-metal/run_loop","ember-metal/observer","ember-metal/binding","ember-metal/computed","ember-metal/properties"],
14995
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__) {
14996
14996
  "use strict";
14997
14997
  var testBoth = __dependency1__["default"];
14998
14998
  var run = __dependency2__["default"];
14999
14999
  var addObserver = __dependency3__.addObserver;
15000
15000
  var removeObserver = __dependency3__.removeObserver;
15001
15001
  var _suspendObserver = __dependency3__._suspendObserver;
15002
- var create = __dependency4__.create;
15003
- var bind = __dependency5__.bind;
15004
- var rewatch = __dependency6__.rewatch;
15005
- var computed = __dependency7__.computed;
15006
- var defineProperty = __dependency8__.defineProperty;
15002
+ var bind = __dependency4__.bind;
15003
+ var computed = __dependency5__.computed;
15004
+ var defineProperty = __dependency6__.defineProperty;
15007
15005
 
15008
15006
  QUnit.module("system/binding/sync_test.js");
15009
15007
 
@@ -15099,49 +15097,6 @@ define("ember-metal/tests/binding/sync_test",
15099
15097
  equal(get(a, 'foo'), "what is going on");
15100
15098
  });
15101
15099
 
15102
- testBoth("bindings should do the right thing when binding is in prototype", function(get, set) {
15103
- var obj, proto, a, b, selectionChanged;
15104
- run(function() {
15105
- obj = {
15106
- selection: null
15107
- };
15108
-
15109
- selectionChanged = 0;
15110
-
15111
- addObserver(obj, 'selection', function () {
15112
- selectionChanged++;
15113
- });
15114
-
15115
- proto = {
15116
- obj: obj,
15117
- changeSelection: function (value) {
15118
- set(this, 'selection', value);
15119
- }
15120
- };
15121
- bind(proto, 'selection', 'obj.selection');
15122
-
15123
- a = create(proto);
15124
- b = create(proto);
15125
- rewatch(a);
15126
- rewatch(b);
15127
- });
15128
-
15129
- run(function () {
15130
- set(a, 'selection', 'a');
15131
- });
15132
-
15133
- run(function () {
15134
- set(b, 'selection', 'b');
15135
- });
15136
-
15137
- run(function () {
15138
- set(a, 'selection', 'a');
15139
- });
15140
-
15141
- equal(selectionChanged, 3);
15142
- equal(get(obj, 'selection'), 'a');
15143
- });
15144
-
15145
15100
  testBoth("bindings should not try to sync destroyed objects", function(get, set) {
15146
15101
  var a, b;
15147
15102
 
@@ -17550,13 +17505,15 @@ define("ember-metal/tests/libraries_test.jshint",
17550
17505
  });
17551
17506
  });
17552
17507
  define("ember-metal/tests/map_test",
17553
- ["ember-metal/map"],
17554
- function(__dependency1__) {
17508
+ ["ember-metal/map","ember-metal/platform"],
17509
+ function(__dependency1__, __dependency2__) {
17555
17510
  "use strict";
17556
17511
  var OrderedSet = __dependency1__.OrderedSet;
17557
17512
  var Map = __dependency1__.Map;
17558
17513
  var MapWithDefault = __dependency1__.MapWithDefault;
17559
17514
 
17515
+ var hasPropertyAccessors = __dependency2__.hasPropertyAccessors;
17516
+
17560
17517
  var object, number, string, map, variety;
17561
17518
  var varieties = [['Map', Map], ['MapWithDefault', MapWithDefault]];
17562
17519
 
@@ -17756,40 +17713,42 @@ define("ember-metal/tests/map_test",
17756
17713
  mapHasEntries([ ], map2);
17757
17714
  });
17758
17715
 
17759
- test("length", function() {
17760
- expectDeprecation('Usage of `length` is deprecated, use `size` instead.');
17716
+ if (hasPropertyAccessors) {
17717
+ test("length", function() {
17718
+ expectDeprecation('Usage of `length` is deprecated, use `size` instead.');
17761
17719
 
17762
- //Add a key twice
17763
- equal(map.length, 0);
17764
- map.set(string, "a string");
17765
- equal(map.length, 1);
17766
- map.set(string, "the same string");
17767
- equal(map.length, 1);
17720
+ //Add a key twice
17721
+ equal(map.length, 0);
17722
+ map.set(string, "a string");
17723
+ equal(map.length, 1);
17724
+ map.set(string, "the same string");
17725
+ equal(map.length, 1);
17768
17726
 
17769
- //Add another
17770
- map.set(number, "a number");
17771
- equal(map.length, 2);
17727
+ //Add another
17728
+ map.set(number, "a number");
17729
+ equal(map.length, 2);
17772
17730
 
17773
- //Remove one that doesn't exist
17774
- map["delete"]('does not exist');
17775
- equal(map.length, 2);
17731
+ //Remove one that doesn't exist
17732
+ map["delete"]('does not exist');
17733
+ equal(map.length, 2);
17776
17734
 
17777
- //Check copy
17778
- var copy = map.copy();
17779
- equal(copy.length, 2);
17735
+ //Check copy
17736
+ var copy = map.copy();
17737
+ equal(copy.length, 2);
17780
17738
 
17781
- //Remove a key twice
17782
- map["delete"](number);
17783
- equal(map.length, 1);
17784
- map["delete"](number);
17785
- equal(map.length, 1);
17739
+ //Remove a key twice
17740
+ map["delete"](number);
17741
+ equal(map.length, 1);
17742
+ map["delete"](number);
17743
+ equal(map.length, 1);
17786
17744
 
17787
- //Remove the last key
17788
- map["delete"](string);
17789
- equal(map.length, 0);
17790
- map["delete"](string);
17791
- equal(map.length, 0);
17792
- });
17745
+ //Remove the last key
17746
+ map["delete"](string);
17747
+ equal(map.length, 0);
17748
+ map["delete"](string);
17749
+ equal(map.length, 0);
17750
+ });
17751
+ }
17793
17752
 
17794
17753
  test("size", function() {
17795
17754
  //Add a key twice
@@ -18031,6 +17990,22 @@ define("ember-metal/tests/map_test",
18031
17990
  equal(map.get(boxed), 'not-a-number');
18032
17991
  });
18033
17992
 
17993
+ test("0 value", function() {
17994
+ var obj = {};
17995
+ equal(map.has(obj), false);
17996
+
17997
+ equal(map.size, 0);
17998
+ map.set(obj, 0);
17999
+ equal(map.size, 1);
18000
+
18001
+ equal(map.has(obj), true);
18002
+ equal(map.get(obj), 0);
18003
+
18004
+ map["delete"](obj);
18005
+ equal(map.has(obj), false);
18006
+ equal(map.get(obj), undefined);
18007
+ equal(map.size, 0);
18008
+ });
18034
18009
  }
18035
18010
 
18036
18011
  for (var i = 0; i < varieties.length; i++) {
@@ -5,7 +5,7 @@
5
5
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
6
6
  * @license Licensed under MIT license
7
7
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
8
- * @version 1.8.0-beta.4
8
+ * @version 1.8.0-beta.5
9
9
  */
10
10
 
11
11
  (function() {
@@ -14991,19 +14991,17 @@ define("ember-metal/tests/binding/oneWay_test.jshint",
14991
14991
  });
14992
14992
  });
14993
14993
  define("ember-metal/tests/binding/sync_test",
14994
- ["ember-metal/tests/props_helper","ember-metal/run_loop","ember-metal/observer","ember-metal/platform","ember-metal/binding","ember-metal/watching","ember-metal/computed","ember-metal/properties"],
14995
- function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__) {
14994
+ ["ember-metal/tests/props_helper","ember-metal/run_loop","ember-metal/observer","ember-metal/binding","ember-metal/computed","ember-metal/properties"],
14995
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__) {
14996
14996
  "use strict";
14997
14997
  var testBoth = __dependency1__["default"];
14998
14998
  var run = __dependency2__["default"];
14999
14999
  var addObserver = __dependency3__.addObserver;
15000
15000
  var removeObserver = __dependency3__.removeObserver;
15001
15001
  var _suspendObserver = __dependency3__._suspendObserver;
15002
- var create = __dependency4__.create;
15003
- var bind = __dependency5__.bind;
15004
- var rewatch = __dependency6__.rewatch;
15005
- var computed = __dependency7__.computed;
15006
- var defineProperty = __dependency8__.defineProperty;
15002
+ var bind = __dependency4__.bind;
15003
+ var computed = __dependency5__.computed;
15004
+ var defineProperty = __dependency6__.defineProperty;
15007
15005
 
15008
15006
  QUnit.module("system/binding/sync_test.js");
15009
15007
 
@@ -15099,49 +15097,6 @@ define("ember-metal/tests/binding/sync_test",
15099
15097
  equal(get(a, 'foo'), "what is going on");
15100
15098
  });
15101
15099
 
15102
- testBoth("bindings should do the right thing when binding is in prototype", function(get, set) {
15103
- var obj, proto, a, b, selectionChanged;
15104
- run(function() {
15105
- obj = {
15106
- selection: null
15107
- };
15108
-
15109
- selectionChanged = 0;
15110
-
15111
- addObserver(obj, 'selection', function () {
15112
- selectionChanged++;
15113
- });
15114
-
15115
- proto = {
15116
- obj: obj,
15117
- changeSelection: function (value) {
15118
- set(this, 'selection', value);
15119
- }
15120
- };
15121
- bind(proto, 'selection', 'obj.selection');
15122
-
15123
- a = create(proto);
15124
- b = create(proto);
15125
- rewatch(a);
15126
- rewatch(b);
15127
- });
15128
-
15129
- run(function () {
15130
- set(a, 'selection', 'a');
15131
- });
15132
-
15133
- run(function () {
15134
- set(b, 'selection', 'b');
15135
- });
15136
-
15137
- run(function () {
15138
- set(a, 'selection', 'a');
15139
- });
15140
-
15141
- equal(selectionChanged, 3);
15142
- equal(get(obj, 'selection'), 'a');
15143
- });
15144
-
15145
15100
  testBoth("bindings should not try to sync destroyed objects", function(get, set) {
15146
15101
  var a, b;
15147
15102
 
@@ -17550,13 +17505,15 @@ define("ember-metal/tests/libraries_test.jshint",
17550
17505
  });
17551
17506
  });
17552
17507
  define("ember-metal/tests/map_test",
17553
- ["ember-metal/map"],
17554
- function(__dependency1__) {
17508
+ ["ember-metal/map","ember-metal/platform"],
17509
+ function(__dependency1__, __dependency2__) {
17555
17510
  "use strict";
17556
17511
  var OrderedSet = __dependency1__.OrderedSet;
17557
17512
  var Map = __dependency1__.Map;
17558
17513
  var MapWithDefault = __dependency1__.MapWithDefault;
17559
17514
 
17515
+ var hasPropertyAccessors = __dependency2__.hasPropertyAccessors;
17516
+
17560
17517
  var object, number, string, map, variety;
17561
17518
  var varieties = [['Map', Map], ['MapWithDefault', MapWithDefault]];
17562
17519
 
@@ -17756,40 +17713,42 @@ define("ember-metal/tests/map_test",
17756
17713
  mapHasEntries([ ], map2);
17757
17714
  });
17758
17715
 
17759
- test("length", function() {
17760
- expectDeprecation('Usage of `length` is deprecated, use `size` instead.');
17716
+ if (hasPropertyAccessors) {
17717
+ test("length", function() {
17718
+ expectDeprecation('Usage of `length` is deprecated, use `size` instead.');
17761
17719
 
17762
- //Add a key twice
17763
- equal(map.length, 0);
17764
- map.set(string, "a string");
17765
- equal(map.length, 1);
17766
- map.set(string, "the same string");
17767
- equal(map.length, 1);
17720
+ //Add a key twice
17721
+ equal(map.length, 0);
17722
+ map.set(string, "a string");
17723
+ equal(map.length, 1);
17724
+ map.set(string, "the same string");
17725
+ equal(map.length, 1);
17768
17726
 
17769
- //Add another
17770
- map.set(number, "a number");
17771
- equal(map.length, 2);
17727
+ //Add another
17728
+ map.set(number, "a number");
17729
+ equal(map.length, 2);
17772
17730
 
17773
- //Remove one that doesn't exist
17774
- map["delete"]('does not exist');
17775
- equal(map.length, 2);
17731
+ //Remove one that doesn't exist
17732
+ map["delete"]('does not exist');
17733
+ equal(map.length, 2);
17776
17734
 
17777
- //Check copy
17778
- var copy = map.copy();
17779
- equal(copy.length, 2);
17735
+ //Check copy
17736
+ var copy = map.copy();
17737
+ equal(copy.length, 2);
17780
17738
 
17781
- //Remove a key twice
17782
- map["delete"](number);
17783
- equal(map.length, 1);
17784
- map["delete"](number);
17785
- equal(map.length, 1);
17739
+ //Remove a key twice
17740
+ map["delete"](number);
17741
+ equal(map.length, 1);
17742
+ map["delete"](number);
17743
+ equal(map.length, 1);
17786
17744
 
17787
- //Remove the last key
17788
- map["delete"](string);
17789
- equal(map.length, 0);
17790
- map["delete"](string);
17791
- equal(map.length, 0);
17792
- });
17745
+ //Remove the last key
17746
+ map["delete"](string);
17747
+ equal(map.length, 0);
17748
+ map["delete"](string);
17749
+ equal(map.length, 0);
17750
+ });
17751
+ }
17793
17752
 
17794
17753
  test("size", function() {
17795
17754
  //Add a key twice
@@ -18031,6 +17990,22 @@ define("ember-metal/tests/map_test",
18031
17990
  equal(map.get(boxed), 'not-a-number');
18032
17991
  });
18033
17992
 
17993
+ test("0 value", function() {
17994
+ var obj = {};
17995
+ equal(map.has(obj), false);
17996
+
17997
+ equal(map.size, 0);
17998
+ map.set(obj, 0);
17999
+ equal(map.size, 1);
18000
+
18001
+ equal(map.has(obj), true);
18002
+ equal(map.get(obj), 0);
18003
+
18004
+ map["delete"](obj);
18005
+ equal(map.has(obj), false);
18006
+ equal(map.get(obj), undefined);
18007
+ equal(map.size, 0);
18008
+ });
18034
18009
  }
18035
18010
 
18036
18011
  for (var i = 0; i < varieties.length; i++) {