diff --git a/test/ol.html b/test/ol.html
index f3c74e6edf..b907173fb1 100644
--- a/test/ol.html
+++ b/test/ol.html
@@ -87,6 +87,7 @@
+
diff --git a/test/spec/ol/tilerange.test.js b/test/spec/ol/tilerange.test.js
new file mode 100644
index 0000000000..630308e9e7
--- /dev/null
+++ b/test/spec/ol/tilerange.test.js
@@ -0,0 +1,94 @@
+goog.require('ol.TileRange');
+
+describe('ol.TileRange', function() {
+
+ describe('contains', function() {
+ it('returns the expected value', function() {
+ var tileRange = new ol.TileRange(1, 1, 3, 3);
+ expect(tileRange.contains(new ol.TileCoord(0, 0, 0))).toBeFalsy();
+ expect(tileRange.contains(new ol.TileCoord(0, 0, 1))).toBeFalsy();
+ expect(tileRange.contains(new ol.TileCoord(0, 0, 2))).toBeFalsy();
+ expect(tileRange.contains(new ol.TileCoord(0, 0, 3))).toBeFalsy();
+ expect(tileRange.contains(new ol.TileCoord(0, 0, 4))).toBeFalsy();
+ expect(tileRange.contains(new ol.TileCoord(0, 1, 0))).toBeFalsy();
+ expect(tileRange.contains(new ol.TileCoord(0, 1, 1))).toBeTruthy();
+ expect(tileRange.contains(new ol.TileCoord(0, 1, 2))).toBeTruthy();
+ expect(tileRange.contains(new ol.TileCoord(0, 1, 3))).toBeTruthy();
+ expect(tileRange.contains(new ol.TileCoord(0, 1, 4))).toBeFalsy();
+ expect(tileRange.contains(new ol.TileCoord(0, 2, 0))).toBeFalsy();
+ expect(tileRange.contains(new ol.TileCoord(0, 2, 1))).toBeTruthy();
+ expect(tileRange.contains(new ol.TileCoord(0, 2, 2))).toBeTruthy();
+ expect(tileRange.contains(new ol.TileCoord(0, 2, 3))).toBeTruthy();
+ expect(tileRange.contains(new ol.TileCoord(0, 2, 4))).toBeFalsy();
+ expect(tileRange.contains(new ol.TileCoord(0, 3, 0))).toBeFalsy();
+ expect(tileRange.contains(new ol.TileCoord(0, 3, 1))).toBeTruthy();
+ expect(tileRange.contains(new ol.TileCoord(0, 3, 2))).toBeTruthy();
+ expect(tileRange.contains(new ol.TileCoord(0, 3, 3))).toBeTruthy();
+ expect(tileRange.contains(new ol.TileCoord(0, 3, 4))).toBeFalsy();
+ expect(tileRange.contains(new ol.TileCoord(0, 4, 0))).toBeFalsy();
+ expect(tileRange.contains(new ol.TileCoord(0, 4, 1))).toBeFalsy();
+ expect(tileRange.contains(new ol.TileCoord(0, 4, 2))).toBeFalsy();
+ expect(tileRange.contains(new ol.TileCoord(0, 4, 3))).toBeFalsy();
+ expect(tileRange.contains(new ol.TileCoord(0, 4, 4))).toBeFalsy();
+ });
+ });
+
+ describe('boundingTileRange', function() {
+ it('returns the expected TileRange', function() {
+ var tileRange = new ol.TileRange.boundingTileRange(
+ new ol.TileCoord(3, 1, 3),
+ new ol.TileCoord(3, 2, 0));
+ expect(tileRange.minX).toEqual(1);
+ expect(tileRange.minY).toEqual(0);
+ expect(tileRange.maxX).toEqual(2);
+ expect(tileRange.maxY).toEqual(3);
+ });
+
+ describe('with mixed z', function() {
+ expect(function() {
+ var tileRange = new ol.TileRange.boundingTileRange(
+ new ol.TileCoord(3, 1, 3),
+ new ol.TileCoord(4, 2, 0));
+ }).toThrow();
+ });
+ });
+
+ describe('forEachTileCoord', function() {
+ it('iterates as expected', function() {
+ var tileRange = new ol.TileRange(0, 2, 1, 3);
+
+ var tileCoords = [];
+ tileRange.forEachTileCoord(5, function(tileCoord) {
+ tileCoords.push(new ol.TileCoord(tileCoord.z, tileCoord.x, tileCoord.y));
+ });
+
+ expect(tileCoords.length).toEqual(4);
+
+ expect(tileCoords[0].z).toEqual(5);
+ expect(tileCoords[0].x).toEqual(0);
+ expect(tileCoords[0].y).toEqual(2);
+
+ expect(tileCoords[1].z).toEqual(5);
+ expect(tileCoords[1].x).toEqual(0);
+ expect(tileCoords[1].y).toEqual(3);
+
+ expect(tileCoords[2].z).toEqual(5);
+ expect(tileCoords[2].x).toEqual(1);
+ expect(tileCoords[2].y).toEqual(2);
+
+ expect(tileCoords[3].z).toEqual(5);
+ expect(tileCoords[3].x).toEqual(1);
+ expect(tileCoords[3].y).toEqual(3);
+ });
+ });
+
+ describe('getSize', function() {
+ it('returns the expected size', function() {
+ var tileRange = new ol.TileRange(0, 1, 2, 4);
+ var size = tileRange.getSize();
+ expect(size.width).toEqual(3);
+ expect(size.height).toEqual(4);
+ });
+ });
+
+});