diff --git a/modules/core/way.js b/modules/core/way.js index 06424b4e7..1b66e660c 100644 --- a/modules/core/way.js +++ b/modules/core/way.js @@ -190,8 +190,9 @@ _.extend(Way.prototype, { if (!str) return; var parsedArray = str.split('|') .map(function (s) { + if (s === 'none') return s; var m = parseInt(s); - if (s === '' || m === maxspeed) return 'none'; + if (s === '' || m === maxspeed) return null; return _.isNaN(m) ? 'unknown': m; }); return parsedArray; diff --git a/test/spec/core/way.js b/test/spec/core/way.js index a052f7a87..14e4a86a0 100644 --- a/test/spec/core/way.js +++ b/test/spec/core/way.js @@ -1466,7 +1466,7 @@ describe('iD.Way', function() { }); }); - describe('maxspeed:lanes', function() { + describe.only('maxspeed:lanes', function() { it('should parse correctly', function() { var maxspeedLanes = iD.Way({ @@ -1494,10 +1494,10 @@ describe('iD.Way', function() { } }).lanes().metadata; expect(metadata.maxspeedLanes.forward).to.deep.equal([ - 'none', 40, 40, 40 + null, 40, 40, 40 ]); expect(metadata.maxspeedLanes.backward).to.deep.equal([ - 'none' + null ]); }); @@ -1511,7 +1511,7 @@ describe('iD.Way', function() { } }).lanes().metadata.maxspeedLanes; expect(maxspeedLanes.unspecified).to.deep.equal([ - 30, 'none', 'none', 'none' + 30, null, null, null ]); }); @@ -1529,7 +1529,7 @@ describe('iD.Way', function() { } }).lanes(); expect(lanes.metadata.maxspeedLanes.unspecified).to.deep.equal([ - 30, 'none', 'none', 'none' + 30, null, null, null ]); }); @@ -1543,7 +1543,7 @@ describe('iD.Way', function() { } }).lanes().metadata.maxspeedLanes; expect(maxspeedLanes.unspecified).to.deep.equal([ - 30, 'none', 'none', 'none', 'none' + 30, null, null, null, null ]); maxspeedLanes = iD.Way({ tags: { @@ -1565,7 +1565,7 @@ describe('iD.Way', function() { } }).lanes().metadata.maxspeedLanes; expect(maxspeedLanes.unspecified).to.deep.equal([ - 'none', 40, 40, 40, 40 + null, 40, 40, 40, 40 ]); }); @@ -1579,7 +1579,7 @@ describe('iD.Way', function() { } }).lanes().metadata.maxspeedLanes; expect(maxspeedLanes.unspecified).to.deep.equal([ - 'none', 40, 'unknown', 40, 40 + null, 40, 'unknown', 40, 40 ]); maxspeedLanes = iD.Way({ tags: { @@ -1591,9 +1591,23 @@ describe('iD.Way', function() { }).lanes().metadata.maxspeedLanes; expect(maxspeedLanes.unspecified).to.deep.equal([ - 'none', 40, 'unknown', 40, 'unknown' + null, 40, 'unknown', 40, 'unknown' ]); }); + + it('should parse maxspeed when none', function() { + var maxspeedLanes = iD.Way({ + tags: { + highway: 'residential', + lanes: 5, + 'maxspeed:lanes': '30|40|none|40|40' + } + }).lanes().metadata.maxspeedLanes; + expect(maxspeedLanes.unspecified).to.deep.equal([ + 30, 40, 'none', 40, 40 + ]); + }); + it('fills lanes.unspecified with key \'maxspeed\' correctly', function() { var lanes = iD.Way({ tags: { @@ -1607,7 +1621,7 @@ describe('iD.Way', function() { return l.maxspeed; }); expect(maxspeedLanes).to.deep.equal([ - 'none', 40, 'unknown', 40, 40 + null, 40, 'unknown', 40, 40 ]); }); });