Making it explicit that this is a range of tiles

With tile range extending rectangle, a tile range that represented a single tile was not allowed.
This commit is contained in:
Tim Schaub
2013-02-18 17:07:31 -07:00
parent 0d6c54847b
commit 8b19751264
2 changed files with 136 additions and 6 deletions

View File

@@ -2,6 +2,20 @@ goog.provide('ol.test.TileRange');
describe('ol.TileRange', function() {
describe('constructor', function() {
it('creates a range', function() {
var range = new ol.TileRange(1, 2, 3, 4);
expect(range).toBeA(ol.TileRange);
});
it('can represent a range of one tile', function() {
var range = new ol.TileRange(2, 3, 2, 3);
expect(range).toBeA(ol.TileRange);
expect(range.getHeight()).toBe(1);
expect(range.getWidth()).toBe(1);
});
});
describe('contains', function() {
it('returns the expected value', function() {
var tileRange = new ol.TileRange(1, 1, 3, 3);
@@ -53,6 +67,36 @@ describe('ol.TileRange', function() {
});
});
describe('equals', function() {
it('determines equivalence of two ranges', function() {
var one = new ol.TileRange(0, 1, 2, 4);
var same = new ol.TileRange(0, 1, 2, 4);
var diff1 = new ol.TileRange(0, 1, 2, 5);
var diff2 = new ol.TileRange(0, 1, 3, 4);
var diff3 = new ol.TileRange(0, 2, 2, 4);
var diff4 = new ol.TileRange(1, 1, 2, 4);
expect(one.equals(same)).toBe(true);
expect(one.equals(diff1)).toBe(false);
expect(one.equals(diff2)).toBe(false);
expect(one.equals(diff3)).toBe(false);
expect(one.equals(diff4)).toBe(false);
});
});
describe('extent', function() {
it('modifies range so it includes another', function() {
var one = new ol.TileRange(0, 1, 2, 4);
var other = new ol.TileRange(-1, 10, -3, 12);
one.extend(other);
expect(one.minX).toBe(-1);
expect(one.minY).toBe(1);
expect(one.maxX).toBe(2);
expect(one.maxY).toBe(12);
});
});
describe('getSize', function() {
it('returns the expected size', function() {
var tileRange = new ol.TileRange(0, 1, 2, 4);
@@ -62,6 +106,29 @@ describe('ol.TileRange', function() {
});
});
describe('intersects', function() {
it('determines if two ranges overlap', function() {
var one = new ol.TileRange(0, 1, 2, 4);
var overlapsRight = new ol.TileRange(2, 1, 4, 4);
var overlapsLeft = new ol.TileRange(-3, 1, 0, 4);
var overlapsTop = new ol.TileRange(0, 4, 2, 5);
var overlapsBottom = new ol.TileRange(0, -3, 2, 1);
expect(one.intersects(overlapsLeft)).toBe(true);
expect(one.intersects(overlapsRight)).toBe(true);
expect(one.intersects(overlapsTop)).toBe(true);
expect(one.intersects(overlapsBottom)).toBe(true);
var right = new ol.TileRange(3, 1, 5, 4);
var left = new ol.TileRange(-3, 1, -1, 4);
var above = new ol.TileRange(0, 5, 2, 6);
var below = new ol.TileRange(0, -3, 2, 0);
expect(one.intersects(right)).toBe(false);
expect(one.intersects(left)).toBe(false);
expect(one.intersects(above)).toBe(false);
expect(one.intersects(below)).toBe(false);
});
});
});
goog.require('ol.TileRange');