Make the Graph#rebase argument an array

This commit is contained in:
John Firebaugh
2013-10-31 15:58:06 -07:00
parent 14bfc52e33
commit 492fc88aa4
10 changed files with 63 additions and 77 deletions
+6 -6
View File
@@ -1,14 +1,14 @@
describe("iD.actions.MergePolygon", function () {
function node(id, x, y) {
e[id] = iD.Node({ id: id, loc: [x, y] });
e.push(iD.Node({ id: id, loc: [x, y] }));
}
function way(id, nodes) {
e[id] = iD.Way({ id: id, nodes: nodes.map(function(n) { return 'n' + n; }) });
e.push(iD.Way({ id: id, nodes: nodes.map(function(n) { return 'n' + n; }) }));
}
var e = {};
var e = [];
node('n0', 0, 0);
node('n1', 5, 0);
@@ -86,8 +86,8 @@ describe("iD.actions.MergePolygon", function () {
});
it("moves all tags to the relation", function() {
graph = graph.replace(e.w0.update({ tags: { 'building': 'yes' }}));
graph = graph.replace(e.w1.update({ tags: { 'natural': 'water' }}));
graph = graph.replace(graph.entity('w0').update({ tags: { 'building': 'yes' }}));
graph = graph.replace(graph.entity('w1').update({ tags: { 'natural': 'water' }}));
graph = iD.actions.MergePolygon(['w0', 'w1'], 'r')(graph);
var r = graph.entity('r');
expect(graph.entity('w0').tags.building).to.equal(undefined);
@@ -97,7 +97,7 @@ describe("iD.actions.MergePolygon", function () {
});
it("doesn't copy area tags from ways", function() {
graph = graph.replace(e.w0.update({ tags: { 'area': 'yes' }}));
graph = graph.replace(graph.entity('w0').update({ tags: { 'area': 'yes' }}));
graph = iD.actions.MergePolygon(['w0', 'w1'], 'r')(graph);
var r = graph.entity('r');
expect(r.tags.area).to.equal(undefined);
+5 -5
View File
@@ -59,15 +59,15 @@ describe('iD.Connection', function () {
});
it('parses a node', function (done) {
c.loadFromURL('data/node.xml', function (err, graph) {
expect(graph.n356552551).to.be.instanceOf(iD.Entity);
c.loadFromURL('data/node.xml', function (err, entities) {
expect(entities[0]).to.be.instanceOf(iD.Entity);
done();
});
});
it('parses a way', function (done) {
c.loadFromURL('data/way.xml', function (err, graph) {
expect(graph.w19698713).to.be.instanceOf(iD.Entity);
c.loadFromURL('data/way.xml', function (err, entities) {
expect(entities[0]).to.be.instanceOf(iD.Entity);
done();
});
});
@@ -116,7 +116,7 @@ describe('iD.Connection', function () {
it('emits a load event', function(done) {
c.loadEntity('n1');
c.on('load', function(error, result) {
expect(result.data.n1).to.be.an.instanceOf(iD.Node);
expect(result.data[0]).to.be.an.instanceOf(iD.Node);
done();
});
+20 -26
View File
@@ -1,11 +1,5 @@
describe('iD.Graph', function() {
describe("constructor", function () {
it("accepts an entities Object", function () {
var entity = iD.Entity(),
graph = iD.Graph({'n-1': entity});
expect(graph.entity('n-1')).to.equal(entity);
});
it("accepts an entities Array", function () {
var entity = iD.Entity(),
graph = iD.Graph([entity]);
@@ -80,14 +74,14 @@ describe('iD.Graph', function() {
it("preserves existing entities", function () {
var node = iD.Node({id: 'n'}),
graph = iD.Graph([node]);
graph.rebase({});
graph.rebase([]);
expect(graph.entity('n')).to.equal(node);
});
it("includes new entities", function () {
var node = iD.Node({id: 'n'}),
graph = iD.Graph();
graph.rebase({'n': node});
graph.rebase([node]);
expect(graph.entity('n')).to.equal(node);
});
@@ -95,13 +89,13 @@ describe('iD.Graph', function() {
var a = iD.Node({id: 'n'}),
b = iD.Node({id: 'n'}),
graph = iD.Graph([a]);
graph.rebase({'n': b});
graph.rebase([b]);
expect(graph.entity('n')).to.equal(a);
});
it("inherits entities from base prototypally", function () {
var graph = iD.Graph();
graph.rebase({'n': iD.Node()});
graph.rebase([iD.Node()]);
expect(graph.entities).not.to.have.ownProperty('n');
});
@@ -111,7 +105,7 @@ describe('iD.Graph', function() {
w2 = iD.Way({id: 'w2', nodes: ['n']}),
graph = iD.Graph([n, w1]);
graph.rebase({ 'w2': w2 });
graph.rebase([w2]);
expect(graph.parentWays(n)).to.eql([w1, w2]);
expect(graph._parentWays.hasOwnProperty('n')).to.be.false;
});
@@ -120,7 +114,7 @@ describe('iD.Graph', function() {
var n = iD.Node({id: 'n'}),
w1 = iD.Way({id: 'w1', nodes: ['n']}),
graph = iD.Graph([n, w1]);
graph.rebase({ 'w1': w1 });
graph.rebase([w1]);
expect(graph.parentWays(n)).to.eql([w1]);
});
@@ -132,8 +126,8 @@ describe('iD.Graph', function() {
graph = iD.Graph([n, w1]),
graph2 = graph.replace(w2);
graph.rebase({ 'w3': w3 });
graph2.rebase({ 'w3': w3 });
graph.rebase([w3]);
graph2.rebase([w3]);
expect(graph2.parentWays(n)).to.eql([w1, w2, w3]);
});
@@ -146,8 +140,8 @@ describe('iD.Graph', function() {
graph = iD.Graph([n1, n2, w1]),
graph2 = graph.replace(w2);
graph.rebase({ 'w1': w1 });
graph2.rebase({ 'w1': w1 });
graph.rebase([w1]);
graph2.rebase([w1]);
expect(graph2.parentWays(n2)).to.eql([]);
});
@@ -158,8 +152,8 @@ describe('iD.Graph', function() {
graph = iD.Graph([n, w1]),
graph2 = graph.remove(w1);
graph.rebase({ 'w1': w1 });
graph2.rebase({ 'w1': w1 });
graph.rebase([w1]);
graph2.rebase([w1]);
expect(graph2.parentWays(n)).to.eql([]);
});
@@ -170,7 +164,7 @@ describe('iD.Graph', function() {
r2 = iD.Relation({id: 'r2', members: [{id: 'n'}]}),
graph = iD.Graph([n, r1]);
graph.rebase({'r2': r2});
graph.rebase([r2]);
expect(graph.parentRelations(n)).to.eql([r1, r2]);
expect(graph._parentRels.hasOwnProperty('n')).to.be.false;
@@ -183,8 +177,8 @@ describe('iD.Graph', function() {
graph = iD.Graph([n, r1]),
graph2 = graph.replace(r2);
graph.rebase({ 'r1': r1 });
graph2.rebase({ 'r1': r1 });
graph.rebase([r1]);
graph2.rebase([r1]);
expect(graph2.parentRelations(n)).to.eql([]);
});
@@ -195,8 +189,8 @@ describe('iD.Graph', function() {
graph = iD.Graph([n, r1]),
graph2 = graph.remove(r1);
graph.rebase({ 'r1': r1 });
graph2.rebase({ 'r1': r1 });
graph.rebase([r1]);
graph2.rebase([r1]);
expect(graph2.parentRelations(n)).to.eql([]);
});
@@ -209,8 +203,8 @@ describe('iD.Graph', function() {
graph = iD.Graph([n, r1]),
graph2 = graph.replace(r2);
graph.rebase({'r3': r3});
graph2.rebase({'r3': r3});
graph.rebase([r3]);
graph2.rebase([r3]);
expect(graph2.parentRelations(n)).to.eql([r1, r2, r3]);
});
@@ -227,7 +221,7 @@ describe('iD.Graph', function() {
}
expect(numParents(n)).to.equal(1);
graph.rebase({w2: w2});
graph.rebase([w2]);
expect(numParents(n)).to.equal(2);
});
});
+7 -7
View File
@@ -19,14 +19,14 @@ describe("iD.History", function () {
describe("#merge", function () {
it("merges the entities into all graph versions", function () {
var n = iD.Node({id: 'n'});
history.merge({n: n});
history.merge([n]);
expect(history.graph().entity('n')).to.equal(n);
});
it("emits a change event with the specified extent", function () {
var extent = {};
history.on('change', spy);
history.merge({}, extent);
history.merge([], extent);
expect(spy).to.have.been.calledWith(undefined, extent);
});
});
@@ -186,14 +186,14 @@ describe("iD.History", function () {
it("includes modified entities", function () {
var node1 = iD.Node({id: "n1"}),
node2 = node1.update({ tags: { yes: "no" } });
history.merge({ n1: node1});
history.merge([node1]);
history.perform(function (graph) { return graph.replace(node2); });
expect(history.changes().modified).to.eql([node2]);
});
it("includes deleted entities", function () {
var node = iD.Node({id: "n1"});
history.merge({ n1: node });
history.merge([node]);
history.perform(function (graph) { return graph.remove(node); });
expect(history.changes().deleted).to.eql([node]);
});
@@ -231,7 +231,7 @@ describe("iD.History", function () {
describe("#toJSON", function() {
it("generates v2 JSON", function() {
var node = iD.Node({id: 'n-1'});
history.merge({n1: iD.Node({id: 'n1'})});
history.merge([iD.Node({id: 'n1'})]);
history.perform(iD.actions.AddEntity(node));
var json = JSON.parse(history.toJSON());
expect(json.version).to.eql(2);
@@ -283,7 +283,7 @@ describe("iD.History", function () {
"index": 1
};
history.fromJSON(JSON.stringify(json));
history.merge({n1: iD.Node({id: 'n1'})});
history.merge([iD.Node({id: 'n1'})]);
expect(history.graph().hasEntity('n1')).to.be.undefined;
expect(history.undoAnnotation()).to.eql("Deleted a point.");
expect(history.imageryUsed()).to.eql(["Bing"]);
@@ -344,7 +344,7 @@ describe("iD.History", function () {
"index": 1
};
history.fromJSON(JSON.stringify(json));
history.merge({n1: iD.Node({id: 'n1'})});
history.merge([iD.Node({id: 'n1'})]);
expect(history.graph().hasEntity('n1')).to.be.undefined;
expect(history.undoAnnotation()).to.eql("Deleted a point.");
expect(history.imageryUsed()).to.eql(["Bing"]);
+10 -10
View File
@@ -5,7 +5,7 @@ describe("iD.Tree", function() {
tree = iD.Tree(graph),
node = iD.Node({id: 'n', loc: [1, 1]});
graph.rebase({n: node});
graph.rebase([node]);
tree.rebase([node]);
expect(tree.intersects(iD.geo.Extent([0, 0], [2, 2]), graph)).to.eql([node]);
@@ -17,11 +17,11 @@ describe("iD.Tree", function() {
node = iD.Node({id: 'n', loc: [1, 1]}),
extent = iD.geo.Extent([0, 0], [2, 2]);
graph.rebase({n: node});
graph.rebase([node]);
tree.rebase([node]);
expect(tree.intersects(extent, graph)).to.eql([node]);
graph.rebase({n: node});
graph.rebase([node]);
tree.rebase([node]);
expect(tree.intersects(extent, graph)).to.eql([node]);
});
@@ -63,11 +63,11 @@ describe("iD.Tree", function() {
relation = iD.Relation({id: 'r', members: [{id: 'n1'}, {id: 'n2'}]}),
extent = iD.geo.Extent([0.5, 0.5], [1.5, 1.5]);
graph.rebase({r: relation, n1: n1});
graph.rebase([relation, n1]);
tree.rebase([relation, n1]);
expect(tree.intersects(extent, graph)).to.eql([]);
graph.rebase({n2: n2});
graph.rebase([n2]);
tree.rebase([n2]);
expect(tree.intersects(extent, graph)).to.eql([n2, relation]);
});
@@ -83,8 +83,8 @@ describe("iD.Tree", function() {
expect(tree.intersects(extent, graph)).to.eql([]);
base.rebase({n: node});
graph.rebase({n: node});
base.rebase([node]);
graph.rebase([node]);
tree.rebase([node]);
expect(tree.intersects(extent, graph)).to.eql([node, way]);
});
@@ -140,7 +140,7 @@ describe("iD.Tree", function() {
var graph = base.replace(node).remove(node);
expect(tree.intersects(extent, graph)).to.eql([]);
base.rebase({n: node});
base.rebase([node]);
tree.rebase([node]);
expect(tree.intersects(extent, graph)).to.eql([]);
});
@@ -156,8 +156,8 @@ describe("iD.Tree", function() {
var graph = base.replace(r1).replace(r2);
expect(tree.intersects(extent, graph)).to.eql([]);
base.rebase({n: node});
graph.rebase({n: node});
base.rebase([node]);
graph.rebase([node]);
tree.rebase([node]);
expect(tree.intersects(extent, graph)).to.eql([node, r1, r2]);
});
+1 -1
View File
@@ -16,7 +16,7 @@ describe('iD.ui.RawTagEditor', function() {
beforeEach(function () {
entity = iD.Node({id: "n12345"});
context = iD();
context.history().merge({n12345: entity});
context.history().merge([entity]);
render({highway: 'residential'});
});