-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
preset.js
102 lines (81 loc) · 3.16 KB
/
preset.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
describe('iD.presets.Preset', function() {
var fields, p;
beforeEach(function() {
if (!p) {
fields = {};
var i = 0;
for (i in iD.data.presets.fields) {
fields[i] = iD.presets.Field(i, iD.data.presets.fields[i]);
}
p = {};
for (i in iD.data.presets.presets) {
p[i] = iD.presets.Preset(i, iD.data.presets.presets[i], fields);
}
}
});
var w1 = iD.Way({ tags: {
highway: 'motorway'
}}),
w2 = iD.Way({ tags: {
leisure: 'pitch',
sport: 'tennis'
}}),
w3 = iD.Way({ tags: {
highway: 'residential'
}}),
w4 = iD.Way({ tags: {
building: 'yep'
}}),
w5 = iD.Way(),
g = iD.Graph().replace(w1).replace(w2);
it("has optional fields", function() {
expect(p.other.fields).to.eql([]);
});
describe('#matchGeometry', function() {
var n = iD.Node();
var g = iD.Graph().replace(n);
it("returns false if it doesn't match", function() {
expect(p['highway/residential'].matchGeometry('point')).to.equal(false);
});
it("returns true if it does match", function() {
expect(p.other.matchGeometry('point')).to.equal(true);
});
});
describe('#matchTags', function() {
it("returns -1 if preset does not match tags", function() {
expect(p['highway/residential'].matchTags(w1)).to.equal(-1);
});
it("returns 0 for other preset (no match tags)", function() {
expect(p.other.matchTags(w1)).to.equal(0);
});
it("returns the number of matched tags", function() {
expect(p['highway/residential'].matchTags(w3)).to.equal(1);
expect(p['leisure/pitch/tennis'].matchTags(w2)).to.equal(2);
});
it("counts * as a match for any value", function() {
expect(p.building.matchTags(w4)).to.equal(0.5);
expect(p.building.matchTags(w5)).to.equal(-1);
});
});
describe('#applyTags', function() {
it("adds match tags", function() {
expect(p['highway/residential'].applyTags({}, 'area')).to.eql({ highway: 'residential' });
});
it("does not add wildcard tags", function() {
expect(p.amenity.applyTags({}, 'area')).to.eql({});
});
it("adds default tags", function() {
expect(p['amenity/cafe'].applyTags({}, 'area')).to.eql({ amenity: 'cafe', building: 'yes'});
expect(p['amenity/cafe'].applyTags({}, 'point')).to.eql({ amenity: 'cafe' });
});
});
describe('#removeTags', function() {
it('removes match tags', function() {
expect(p['highway/residential'].removeTags({ highway: 'residential' }, 'area')).to.eql({});
});
it('removes default tags', function() {
expect(p['amenity/cafe'].removeTags({ amenity: 'cafe', building: 'yes'}, 'area')).to.eql({});
expect(p['amenity/cafe'].removeTags({ amenity: 'cafe', building: 'yep'}, 'area')).to.eql({ building: 'yep'});
});
});
});