Add tests for the Map object

This commit is contained in:
Tom MacWright
2012-10-26 11:23:50 -04:00
parent 08b29ba999
commit af4e048a30
7 changed files with 44 additions and 18 deletions
+1 -2
View File
@@ -24,7 +24,6 @@
<script type="text/javascript" src="js/iD/controller/edit/SelectedWay.js"></script>
<script type="text/javascript" src="js/iD/controller/edit/SelectedWayNode.js"></script>
<script type="text/javascript" src="js/iD/renderer/renderer.js"></script>
<script type="text/javascript" src="js/iD/renderer/Map.js"></script>
<script type="text/javascript" src="js/iD/ui/Inspector.js"></script>
@@ -62,7 +61,7 @@
var connection = new iD.Connection("http://www.overpass-api.de/api/xapi?");
// Initialise map
var map = iD.renderer.Map({
var map = iD.Map({
selector: "#map",
connection: connection,
width: $(document).width(),
+4 -1
View File
@@ -151,6 +151,9 @@ iD.Connection = function(apiURL) {
function parse(callback) {
return function(dom) {
if (!dom.childNodes) {
return callback(new Error('Bad request'));
}
for (var i = 0; i < dom.childNodes[0].childNodes.length; i++) {
var obj = dom.childNodes[0].childNodes[i], attrib;
if (obj.nodeName === 'node') {
@@ -177,7 +180,7 @@ iD.Connection = function(apiURL) {
assign(relation);
}
}
callback();
callback(null);
};
}
+2 -2
View File
@@ -4,7 +4,7 @@
// ----------------------------------------------------------------------
// Connection base class
iD.renderer.Map = function(obj) {
iD.Map = function(obj) {
var map = {},
selection = [],
width = obj.width || 800,
@@ -285,7 +285,7 @@ iD.renderer.Map = function(obj) {
function getZoom(zoom) {
var s = projection.scale();
return Math.max(Math.log(s) / Math.log(2) - 8, 0);
return Math.max(Math.log(s) / Math.log(2) - 7, 0);
}
function setZoom(zoom) {
-1
View File
@@ -1 +0,0 @@
iD.renderer = {};
+5
View File
@@ -12,12 +12,16 @@
<!-- include source files here... -->
<script type="text/javascript" src="../js/lib/underscore-min.js"></script>
<script type="text/javascript" src="../js/lib/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="../js/lib/d3.v2.min.js"></script>
<script type="text/javascript" src="../js/iD/Util.js"></script>
<script type="text/javascript" src="../js/iD/Node.js"></script>
<script type="text/javascript" src="../js/iD/Relation.js"></script>
<script type="text/javascript" src="../js/iD/Entity.js"></script>
<script type="text/javascript" src="../js/iD/Way.js"></script>
<script type="text/javascript" src="../js/iD/Connection.js"></script>
<script type="text/javascript" src="../js/iD/actions/UndoStack.js"></script>
<script type="text/javascript" src="../js/iD/Controller.js"></script>
<script type="text/javascript" src="../js/iD/renderer/Map.js"></script>
<!-- include spec files here... -->
<script type="text/javascript" src="spec/Util.js"></script>
@@ -25,6 +29,7 @@
<script type="text/javascript" src="spec/Entity.js"></script>
<script type="text/javascript" src="spec/Relation.js"></script>
<script type="text/javascript" src="spec/Way.js"></script>
<script type="text/javascript" src="spec/Map.js"></script>
<script type="text/javascript" src="spec/Connection.js"></script>
<script type="text/javascript">
+30
View File
@@ -0,0 +1,30 @@
describe('Map', function() {
var node, foo;
beforeEach(function() {
foo = document.body.appendChild(document.createElement('div'));
foo.id = 'foo';
map = iD.Map({
selector: '#foo',
connection: iD.Connection()
});
});
afterEach(function() {
foo.parentNode.removeChild(foo);
});
it('can set and get its zoom level', function() {
expect(map.setZoom(4)).toEqual(map);
expect(map.getZoom()).toEqual(4);
});
it('can zoom out and in', function() {
expect(map.setZoom(4)).toEqual(map);
expect(map.getZoom()).toEqual(4);
expect(map.zoomOut()).toEqual(map);
expect(map.getZoom()).toEqual(3);
expect(map.zoomIn()).toEqual(map);
expect(map.getZoom()).toEqual(4);
});
});
+2 -12
View File
@@ -15,22 +15,12 @@ describe('Node', function() {
expect(node.lon).toEqual(-77);
});
it('reprojects a latp parameter', function() {
expect(node.latp).toBeCloseTo(41.1376);
node.project();
expect(node.latp).toBeCloseTo(41.1376);
});
it('knows if it is within a bounding box', function() {
expect(node.within(-90, 90, 90, -90)).toBeTruthy();
});
it('knows if it is without a bounding box', function() {
expect(node.within(-90, -85, 90, -90)).toBeFalsy();
expect(node.within([[-90, 90], [90, -90]])).toBeTruthy();
});
it('can provide geojson', function() {
var gj = node.toGeoJSON();
var gj = node.toGeoJSON();
expect(gj.type).toEqual('Feature');
expect(gj.geometry.type).toEqual('Point');
});