diff --git a/dist/locales/en.json b/dist/locales/en.json
index e4b2ccb4d..aab4fc36b 100644
--- a/dist/locales/en.json
+++ b/dist/locales/en.json
@@ -376,6 +376,7 @@
"cancel": "Cancel",
"changes": "{count} Changes",
"download_changes": "Download osmChange file",
+ "errors": "Errors",
"warnings": "Warnings",
"modified": "Modified",
"deleted": "Deleted",
@@ -6895,6 +6896,27 @@
},
"name": "Hike & Bike"
},
+ "kelkkareitit": {
+ "attribution": {
+ "text": "© Kelkkareitit.fi"
+ },
+ "description": "Kelkkareitit.fi snowmobile trails from OSM (Nordic coverage)",
+ "name": "Nordic snowmobile overlay"
+ },
+ "lantmateriet-orto1960": {
+ "attribution": {
+ "text": "© Lantmäteriet, CC0"
+ },
+ "description": "Mosaic of Swedish orthophotos from the period 1949-1970.",
+ "name": "Lantmäteriet Historic Orthophoto 1960"
+ },
+ "lantmateriet-orto1975": {
+ "attribution": {
+ "text": "© Lantmäteriet, CC0"
+ },
+ "description": "Mosaic of Swedish orthophotos from the period 1970-1980. To be expanded.",
+ "name": "Lantmäteriet Historic Orthophoto 1975"
+ },
"mapbox_locator_overlay": {
"attribution": {
"text": "Terms & Feedback"
@@ -6931,8 +6953,8 @@
"attribution": {
"text": "© Lantmäteriet"
},
- "description": "Scan of ´Economic maps´ ca 1950-1980",
- "name": "Lantmäteriet Economic Map (historic)"
+ "description": "Scan of ´Economic maps´ ca. 1950-1980",
+ "name": "Lantmäteriet Economic Map ca 1950-1980"
},
"qa_no_address": {
"attribution": {
@@ -6946,6 +6968,13 @@
},
"name": "skobbler"
},
+ "skoterleder": {
+ "attribution": {
+ "text": "© Skoterleder.org"
+ },
+ "description": "Snowmobile trails",
+ "name": "Snowmobile map Sweden"
+ },
"stamen-terrain-background": {
"attribution": {
"text": "Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL"
diff --git a/modules/core/context.js b/modules/core/context.js
index 626545886..25a72c2ae 100644
--- a/modules/core/context.js
+++ b/modules/core/context.js
@@ -7,8 +7,6 @@ import _isObject from 'lodash-es/isObject';
import _isString from 'lodash-es/isString';
import _map from 'lodash-es/map';
-import { parse as parseMapCSS } from 'mapcss-parse';
-
import { dispatch as d3_dispatch } from 'd3-dispatch';
import {
@@ -465,7 +463,7 @@ export function coreContext() {
var validationsUrl = utilStringQs(window.location.hash).validations;
d3_text(validationsUrl, function (err, mapcss) {
if (err) return;
- var validations = _map(parseMapCSS(mapcss), function(mapcssConfig) { return utilMapCSSRule(mapcssConfig, context); });
+ var validations = _map(mapcss, function(mapcss) { return utilMapCSSRule(mapcss, context.presets().areaKeys()); });
context.validationRules = function() { return validations; };
});
}
diff --git a/modules/util/mapcss_rule.js b/modules/util/mapcss_rule.js
index d2b3259de..7187bdb90 100644
--- a/modules/util/mapcss_rule.js
+++ b/modules/util/mapcss_rule.js
@@ -1,8 +1,8 @@
import _isMatch from 'lodash-es/isMatch';
import _intersection from 'lodash-es/intersection';
-import { tagMap } from 'mapcss-parse';
+import _reduce from 'lodash-es/reduce';
-export function utilMapCSSRule(selector, context) {
+export function utilMapCSSRule(selector, areaKeys) {
var ruleChecks = {
equals: function (tags) {
return _isMatch(tags, selector.equals);
@@ -59,13 +59,49 @@ export function utilMapCSSRule(selector, context) {
.map(function(key) { return ruleChecks[key]; });
},
+ buildTagMap: function() {
+ var selectorKeys = Object.keys(selector);
+ var tagMap = _reduce(selectorKeys, function (expectedTags, key) {
+ var values;
+ if (/regex/gi.test(key)) {
+ Object.keys(selector[key]).forEach(function(regexKey) {
+ values = selector[key][regexKey].map(function(val) {
+ return val.replace(/\$|\^/g, '');
+ });
+
+ if (expectedTags.hasOwnProperty(regexKey)) {
+ values = values.concat(expectedTags[regexKey]);
+ }
+
+ expectedTags[regexKey] = values;
+ });
+ }
+ if (/(greater|less)Than(Equal)?|equals|presence/g.test(key)) {
+ var tagKey = /presence/.test(key) ? selector[key] : Object.keys(selector[key])[0];
+
+ values = (key === 'equals') ? [selector[key][tagKey]] : [];
+
+ if (expectedTags.hasOwnProperty(tagKey)) {
+ values = (key === 'equals') ? values.concat(expectedTags[tagKey]) : [];
+ }
+
+ expectedTags[tagKey] = values;
+ }
+ return expectedTags;
+ }, {});
+ return tagMap;
+ },
matches: function(entity) {
return this.buildChecks().every(function(check) { return check(entity.tags); });
},
+ areaKeys: function() {
+ return areaKeys;
+ },
// borrowed from Way#isArea()
- inferGeometry: function (tagMap, context) {
- var areaKeys = context.presets().areaKeys();
+ inferGeometry: function () {
+ var tagMap = this.buildTagMap();
+ var areaKeys = this.areaKeys();
var lineKeys = {
highway: {
rest_area: true,
@@ -110,7 +146,7 @@ export function utilMapCSSRule(selector, context) {
if (entity.type === 'node' || entity.type === 'relation') {
return selector.geometry === entity.type;
} else if (entity.type === 'way') {
- return this.inferGeometry(tagMap(selector), context) === entity.geometry(graph);
+ return this.inferGeometry(areaKeys) === entity.geometry(graph);
}
},
findWarnings: function (entity, graph, warnings) {
diff --git a/modules/validations/mapcss_checks.js b/modules/validations/mapcss_checks.js
index e287d2bd8..5f0d753d4 100644
--- a/modules/validations/mapcss_checks.js
+++ b/modules/validations/mapcss_checks.js
@@ -1,5 +1,5 @@
export function validationMapCSSChecks() {
- var validation = function(changes, graph, rules, areaKeys) {
+ var validation = function(changes, graph, rules) {
var warnings = [];
var createdModified = ['created', 'modified'];
for (var i = 0; i < createdModified.length; i++) {
diff --git a/package.json b/package.json
index 52c1ac628..3f2f448fc 100644
--- a/package.json
+++ b/package.json
@@ -36,7 +36,6 @@
"@mapbox/vector-tile": "^1.3.1",
"diacritics": "1.3.0",
"lodash-es": "4.17.10",
- "mapcss-parse": "github:DigitalGlobe/mapcss-parse#12",
"marked": "0.4.0",
"node-diff3": "1.0.0",
"osm-auth": "1.0.2",
diff --git a/test/index.html b/test/index.html
index b094f4b32..f2d81848d 100644
--- a/test/index.html
+++ b/test/index.html
@@ -24,7 +24,6 @@
-
@@ -89,7 +88,6 @@
-
@@ -116,7 +114,6 @@
-
@@ -138,7 +135,7 @@
-
+
diff --git a/test/spec/presets/index.js b/test/spec/presets/index.js
index 248c4e132..742a0a6b7 100644
--- a/test/spec/presets/index.js
+++ b/test/spec/presets/index.js
@@ -192,7 +192,7 @@ describe('iD.presetIndex', function() {
}
};
var currentPresets = iD.Context().presets();
- var overwrittenPresets = iD.Context().overwritePresets(testPresets);
+ var overwrittenPresets = iD.Context().presets().overwrite(testPresets);
expect(currentPresets).to.not.eql(overwrittenPresets);
});
});
diff --git a/test/spec/spec_helpers.js b/test/spec/spec_helpers.js
index f8b0b13f4..262159477 100644
--- a/test/spec/spec_helpers.js
+++ b/test/spec/spec_helpers.js
@@ -1,6 +1,5 @@
/* globals chai:false */
/* eslint no-extend-native:off */
-
iD.debug = true;
// disable things that use the network
diff --git a/test/spec/util/mapcss_rule.js b/test/spec/util/mapcss_rule.js
index 6c25c9e77..0052dc05d 100644
--- a/test/spec/util/mapcss_rule.js
+++ b/test/spec/util/mapcss_rule.js
@@ -43,9 +43,13 @@ describe('iD.utilMapCSSRule', function() {
'error': 'amenity cannot be healthcare or school!'
}
];
- var rules = selectors.map(function(s) { return iD.utilMapCSSRule(s); });
+ var areaKeys = iD.Context().presets().areaKeys();
+ var rules = selectors.map(function(s) { return iD.utilMapCSSRule(s, areaKeys); });
it ('turns selector object in mapcssRule', function () {
- var ruleKeys = ['ruleChecks', 'type','buildChecks','matches', 'inferGeometry', 'geometryMatches','findWarnings'];
+ var ruleKeys = [
+ 'ruleChecks', 'type','buildChecks', 'buildTagMap', 'matches',
+ 'areaKeys', 'inferGeometry', 'geometryMatches','findWarnings'
+ ];
rules.forEach(function(rule) {
expect(Object.keys(rule)).to.eql(ruleKeys);
});
@@ -53,7 +57,7 @@ describe('iD.utilMapCSSRule', function() {
describe('#type', function() {
it('is either error or warning', function() {
selectors.forEach(function(s) {
- expect(['error', 'warning'].indexOf(iD.utilMapCSSRule(s).type)).to.be.greaterThan(-1);
+ expect(['error', 'warning'].indexOf(iD.utilMapCSSRule(s, areaKeys).type)).to.be.greaterThan(-1);
});
});
});
@@ -75,6 +79,28 @@ describe('iD.utilMapCSSRule', function() {
});
});
});
+ describe('#buildTagMap', function() {
+ it('builds tag map from selector config', function () {
+ var selector = {
+ 'geometry':'node',
+ 'equals':{'amenity':'marketplace'},
+ 'positiveRegex': { 'marketplace:type': ['open', 'indoor', 'mall']},
+ 'greaterThan': { 'width': 10, 'area': 300 },
+ 'presence': 'opening_hours',
+ 'absence':'name',
+ 'warning':'throwWarning: "[amenity=marketplace]: MapRules preset \'Market\': must be coupled with name";'
+ };
+ var tagMap = {
+ 'amenity':['marketplace'],
+ 'marketplace:type':['open','indoor','mall'],
+ 'width':[],
+ 'opening_hours':[]
+ };
+
+ var rule = iD.utilMapCSSRule(selector, areaKeys);
+ expect(rule.buildTagMap()).to.be.eql(tagMap);
+ });
+ });
describe('#matches', function() {
it('determines if an entity matches the MapCSS rule checks', function() {
var node = iD.Entity({ type: 'node', tags: { power: 'tower' }});
@@ -84,17 +110,23 @@ describe('iD.utilMapCSSRule', function() {
});
});
});
+ describe('areaKeys', function() {
+ it('returns areaKeys used to construct rule', function() {
+ var rule = iD.utilMapCSSRule(selectors[0], areaKeys);
+ expect(rule.areaKeys()).to.eql(areaKeys);
+ });
+ });
describe('#ruleChecks', function() {
describe('equals', function() {
it('is true when entity.tags intersects selector.equals', function() {
var pseudoSelector = { equals: {'amenity': 'school'} };
- var pseudoRule = iD.utilMapCSSRule(pseudoSelector);
+ var pseudoRule = iD.utilMapCSSRule(pseudoSelector, areaKeys);
var school = iD.Entity({ type: 'node', tags: { amenity: 'school' }});
expect(pseudoRule.ruleChecks.equals(school.tags)).to.be.true;
});
it('is false when entity.tags intersects selector.equals', function() {
var pseudoSelector = { equals: { 'man_made': 'water_tap'} };
- var pseudoRule = iD.utilMapCSSRule(pseudoSelector);
+ var pseudoRule = iD.utilMapCSSRule(pseudoSelector, areaKeys);
var school = iD.Entity({ type: 'node', tags: { amenity: 'school' } } );
expect(pseudoRule.ruleChecks.equals(school.tags)).to.be.false;
});
@@ -102,13 +134,13 @@ describe('iD.utilMapCSSRule', function() {
describe('notEquals', function() {
it('is true when entity.tags does not intersect selector.notEquals', function() {
var pseudoSelector = { notEquals: { 'man_made': 'water_tap'} };
- var pseudoRule = iD.utilMapCSSRule(pseudoSelector);
+ var pseudoRule = iD.utilMapCSSRule(pseudoSelector, areaKeys);
var school = iD.Entity({ type: 'node', tags: { amenity: 'school' } } );
expect(pseudoRule.ruleChecks.notEquals(school.tags)).to.be.true;
});
it('is false when entity.tags does not intersect selector.notEquals', function() {
var pseudoSelector = { notEquals: { 'amenity': 'school'} };
- var pseudoRule = iD.utilMapCSSRule(pseudoSelector);
+ var pseudoRule = iD.utilMapCSSRule(pseudoSelector, areaKeys);
var school = iD.Entity({ type: 'node', tags: { amenity: 'school' } } );
expect(pseudoRule.ruleChecks.notEquals(school.tags)).to.be.false;
});
@@ -116,13 +148,13 @@ describe('iD.utilMapCSSRule', function() {
describe('presence', function() {
it('is true when entity.tags\' key s include selector.presence', function() {
var pseudoSelector = { presence: 'name' };
- var pseudoRule = iD.utilMapCSSRule(pseudoSelector);
+ var pseudoRule = iD.utilMapCSSRule(pseudoSelector, areaKeys);
var kHouse = iD.Entity({ type: 'node', tags: { amenity: 'marketplace', name: 'Kensington Square' }});
expect(pseudoRule.ruleChecks.presence(kHouse.tags)).to.be.true;
});
it('is false when entity tags\' keys do not include selector.presence', function() {
var pseudoSelector = { presence: 'name' };
- var pseudoRule = iD.utilMapCSSRule(pseudoSelector);
+ var pseudoRule = iD.utilMapCSSRule(pseudoSelector, areaKeys);
var notKHouse = iD.Entity({ type: 'node', tags: { amenity: 'marketplace' }});
expect(pseudoRule.ruleChecks.presence(notKHouse.tags)).to.be.false;
});
@@ -130,13 +162,13 @@ describe('iD.utilMapCSSRule', function() {
describe('absence', function() {
it('is true when entity.tags\' keys do not include selector.absence', function() {
var pseudoSelector = { absence: 'name' };
- var pseudoRule = iD.utilMapCSSRule(pseudoSelector);
+ var pseudoRule = iD.utilMapCSSRule(pseudoSelector, areaKeys);
var notKHouse = iD.Entity({ type: 'node', tags: { amenity: 'marketplace' }});
expect(pseudoRule.ruleChecks.absence(notKHouse.tags)).to.be.true;
});
it('is false when entity.tags\' keys include selector.absence', function() {
var pseudoSelector = { absence: 'name' };
- var pseudoRule = iD.utilMapCSSRule(pseudoSelector);
+ var pseudoRule = iD.utilMapCSSRule(pseudoSelector, areaKeys);
var kHouse = iD.Entity({ type: 'node', tags: { amenity: 'marketplace', name: 'Kensington Square' }});
expect(pseudoRule.ruleChecks.presence(kHouse.tags)).to.be.false;
});
@@ -144,13 +176,13 @@ describe('iD.utilMapCSSRule', function() {
describe('greaterThan', function() {
it('is true when entity.tags\' equivalent value is greater than selector.greaterThan', function() {
var pseudoSelector = { greaterThan: { height: 10 }};
- var pseudoRule = iD.utilMapCSSRule(pseudoSelector);
+ var pseudoRule = iD.utilMapCSSRule(pseudoSelector, areaKeys);
var tallSchool = iD.Entity({ type: 'node', tags: { amenity: 'school', height: 9000 }});
expect(pseudoRule.ruleChecks.greaterThan(tallSchool.tags)).to.be.true;
});
it('is false when entity.tags\' equivalent value is less than or equal to selector.greaterThan', function() {
var pseudoSelector = { greaterThan: { height: 10 }};
- var pseudoRule = iD.utilMapCSSRule(pseudoSelector);
+ var pseudoRule = iD.utilMapCSSRule(pseudoSelector, areaKeys);
var smallSchool = iD.Entity({ type: 'node', tags: { amenity: 'school', height: 9 }});
expect(pseudoRule.ruleChecks.greaterThan(smallSchool.tags)).to.be.false;
});
@@ -158,13 +190,13 @@ describe('iD.utilMapCSSRule', function() {
describe('greaterThanEqual', function() {
it('is true when entity.tags\' equivalent value is greater than or equal to selector.greaterThanEqual', function() {
var pseudoSelector = { greaterThanEqual: { height: 10 } };
- var pseudoRule = iD.utilMapCSSRule(pseudoSelector);
+ var pseudoRule = iD.utilMapCSSRule(pseudoSelector, areaKeys);
var okHeightSchool = iD.Entity({ type: 'node', tags: { amenity: 'school', height: 10 }});
expect(pseudoRule.ruleChecks.greaterThanEqual(okHeightSchool.tags)).to.be.true;
});
it('is false when entity.tags\' equivalent value is less than to selector.greaterThanEqual', function() {
var pseudoSelector = { greaterThanEqual: { height: 10 }};
- var pseudoRule = iD.utilMapCSSRule(pseudoSelector);
+ var pseudoRule = iD.utilMapCSSRule(pseudoSelector, areaKeys);
var smallSchool = iD.Entity({ type: 'node', tags: { amenity: 'school', height: 9 }});
expect(pseudoRule.ruleChecks.greaterThanEqual(smallSchool.tags)).to.be.false;
});
@@ -172,13 +204,13 @@ describe('iD.utilMapCSSRule', function() {
describe('lessThan', function() {
it('is true when entity.tags\' equivalent value is less than to selector.lessThan', function() {
var pseudoSelector = { lessThan: { height: 10 } };
- var pseudoRule = iD.utilMapCSSRule(pseudoSelector);
+ var pseudoRule = iD.utilMapCSSRule(pseudoSelector, areaKeys);
var smallSchool = iD.Entity({ type: 'node', tags: { amenity: 'school', height: 3 }});
expect(pseudoRule.ruleChecks.lessThan(smallSchool.tags)).to.be.tru;
});
it('is false when entity.tags\' equivalent value is greater than or equal to selector.lessThan', function() {
var pseudoSelector = { lessThan: { height: 10 } };
- var pseudoRule = iD.utilMapCSSRule(pseudoSelector);
+ var pseudoRule = iD.utilMapCSSRule(pseudoSelector, areaKeys);
var notOkHeightSchool = iD.Entity({ type: 'node', tags: { amenity: 'school', height: 10 }});
expect(pseudoRule.ruleChecks.lessThan(notOkHeightSchool.tags)).to.be.false;
});
@@ -186,13 +218,13 @@ describe('iD.utilMapCSSRule', function() {
describe('lessThanEqual', function() {
it('is true when entity.tags\' equivalent value is less than or equal to to selector.lessThan', function() {
var pseudoSelector = { lessThanEqual: { height: 10 } };
- var pseudoRule = iD.utilMapCSSRule(pseudoSelector);
+ var pseudoRule = iD.utilMapCSSRule(pseudoSelector, areaKeys);
var okHeightSchool = iD.Entity({ type: 'node', tags: { 'amenity': 'school', 'height': 10 }});
expect(pseudoRule.ruleChecks.lessThanEqual(okHeightSchool.tags)).to.be.true;
});
it('is false when entity.tags\' equivalent value is greater than to selector.lessThan', function() {
var pseudoSelector = { lessThanEqual: { height: 10 } };
- var pseudoRule = iD.utilMapCSSRule(pseudoSelector);
+ var pseudoRule = iD.utilMapCSSRule(pseudoSelector, areaKeys);
var notOkHeightSchool = iD.Entity({ type: 'node', tags: { amenity: 'school', height: 11 }});
expect(pseudoRule.ruleChecks.lessThanEqual(notOkHeightSchool.tags)).to.be.false;
});
@@ -200,7 +232,7 @@ describe('iD.utilMapCSSRule', function() {
describe('positiveRegex', function() {
it('is true when entity.tags\' equivalent value matches regular expression built from selector.positiveRegex', function() {
var pseudoSelector = { positiveRegex: { amenity: ['^school$', '^healthcare$'] }};
- var pseudoRule = iD.utilMapCSSRule(pseudoSelector);
+ var pseudoRule = iD.utilMapCSSRule(pseudoSelector, areaKeys);
var okAmenities = [
iD.Entity({ type: 'node', tags: { amenity: 'school' }}),
iD.Entity({ type: 'node', tags: { amenity: 'healthcare' }})
@@ -211,7 +243,7 @@ describe('iD.utilMapCSSRule', function() {
});
it('is false when entity.tags\' equivalent value does not match regular expression built from selector.positiveRegex', function() {
var pseudoSelector = { positiveRegex: { amenity: ['^school$', '^healthcare$'] }};
- var pseudoRule = iD.utilMapCSSRule(pseudoSelector);
+ var pseudoRule = iD.utilMapCSSRule(pseudoSelector, areaKeys);
var notOkAmenities = [
iD.Entity({ type: 'node', tags: { amenity: 'parking' }}),
iD.Entity({ type: 'node', tags: { amenity: 'place_of_worship' }})
@@ -224,7 +256,7 @@ describe('iD.utilMapCSSRule', function() {
describe('negativeRegex', function() {
it('is true when entity.tags\' equivalent value does not match regular exprsesion built from selector.negativeRegex', function() {
var pseudoSelector = { negativeRegex: { amenity: ['^school$', '^healthcare$'] }};
- var pseudoRule = iD.utilMapCSSRule(pseudoSelector);
+ var pseudoRule = iD.utilMapCSSRule(pseudoSelector, areaKeys);
var notOkAmenities = [
iD.Entity({ type: 'node', tags: { amenity: 'parking' }}),
iD.Entity({ type: 'node', tags: { amenity: 'place_of_worship' }})
@@ -235,7 +267,7 @@ describe('iD.utilMapCSSRule', function() {
});
it('is false when entity.tags\' equivalent value matches regular expression built from selector.negativeRegex', function() {
var pseudoSelector = { negativeRegex: { amenity: ['^school$', '^healthcare$'] }};
- var pseudoRule = iD.utilMapCSSRule(pseudoSelector);
+ var pseudoRule = iD.utilMapCSSRule(pseudoSelector, areaKeys);
var okAmenities = [
iD.Entity({ type: 'node', tags: { amenity: 'school' }}),
iD.Entity({ type: 'node', tags: { amenity: 'healthcare' }})
@@ -247,79 +279,54 @@ describe('iD.utilMapCSSRule', function() {
});
});
describe('#inferGeometry', function() {
- var amenityDerivedArea = {
- selector: {
+ it ('infers selector geometry from its tags', function() {
+ var amenityDerivedArea = {
'geometry': 'closedway',
'presence': 'amenity',
'positiveRegex': { amenity: ['^school$', '^healthcare$'] },
'error': 'amenity cannot be healthcare or school!'
- },
- tagMap: {
- amenity: [ 'school', 'healthcare' ]
- }
- };
-
- var areaDerivedArea = {
- selector: {
+ };
+
+ var areaDerivedArea = {
'geometry': 'closedway',
'equals': { area: 'yes' },
- },
- tagMap: {
- amenity: [ 'school', 'healthcare' ],
- area: [ 'yes' ]
- }
- };
+ };
- var badAreaDerivedLine = {
- selector: {
+ var badAreaDerivedLine = {
'geometry': 'closedway',
'equals': { 'area': 'no' }
- },
- tagMap: {
- area: ['no']
- }
- };
+ };
- var roundHouseRailwayDerivedArea = {
- selector: {
+ var roundHouseRailwayDerivedArea = {
'geometry': 'closedway',
'equals': { 'railway': 'roundhouse' }
- },
- tagMap: {
- railway: ['roundhouse']
- }
- };
+ };
- var justClosedWayDerivedLine = {
- selector: {
+ var justClosedWayDerivedLine = {
'geometry': 'closedway'
- },
- tagMap: {}
- };
+ };
- var areaKeys = iD.Context().presets().areaKeys();
- var rule, geom;
-
- rule = iD.utilMapCSSRule(amenityDerivedArea.selector);
- geom = rule.inferGeometry(amenityDerivedArea.tagMap, areaKeys);
- expect(geom).to.be.eql('area');
+ var rule, geom;
+ rule = iD.utilMapCSSRule(amenityDerivedArea, areaKeys);
+ geom = rule.inferGeometry();
+ expect(geom).to.be.eql('area');
- rule = iD.utilMapCSSRule(areaDerivedArea.selector);
- geom = rule.inferGeometry(areaDerivedArea.tagMap, areaKeys);
- expect(geom).to.be.eql('area');
+ rule = iD.utilMapCSSRule(areaDerivedArea, areaKeys);
+ geom = rule.inferGeometry();
+ expect(geom).to.be.eql('area');
- rule = iD.utilMapCSSRule(badAreaDerivedLine.selector);
- geom = rule.inferGeometry(badAreaDerivedLine.tagMap);
- expect(geom).to.be.eql('line');
+ rule = iD.utilMapCSSRule(badAreaDerivedLine, areaKeys);
+ geom = rule.inferGeometry();
+ expect(geom).to.be.eql('line');
- rule = iD.utilMapCSSRule(roundHouseRailwayDerivedArea.selector);
- geom = rule.inferGeometry(roundHouseRailwayDerivedArea.tagMap, areaKeys);
- expect(geom).to.be.eql('area');
-
- rule = iD.utilMapCSSRule(justClosedWayDerivedLine.selector);
- geom = rule.inferGeometry(justClosedWayDerivedLine.tagMap);
- expect(geom).to.be.eql('line');
+ rule = iD.utilMapCSSRule(roundHouseRailwayDerivedArea, areaKeys);
+ geom = rule.inferGeometry();
+ expect(geom).to.be.eql('area');
+ rule = iD.utilMapCSSRule(justClosedWayDerivedLine, areaKeys);
+ geom = rule.inferGeometry();
+ expect(geom).to.be.eql('line');
+ });
});
describe('#findWarnings', function() {
it('adds found warnings to warnings array', function() {
@@ -332,12 +339,11 @@ describe('iD.utilMapCSSRule', function() {
});
});
- // warnings.forEach(function(warning) {
- // console.log(warning);
- // expect(warning.message).to.not.be.null;
- // expect(['mapcss_warning', 'mapcss_error'].indexOf(warning.id)).to.be.greaterThan(-1);
- // expect(warning.entity).to.be.instanceOf(iD.Entity);
- // });
+ warnings.forEach(function(warning) {
+ expect(warning.message).to.not.be.null;
+ expect(['mapcss_warning', 'mapcss_error'].indexOf(warning.id)).to.be.greaterThan(-1);
+ expect(warning.entity).to.be.instanceOf(iD.Entity);
+ });
});
});
});