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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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++) {