Leaflet/spec/suites/geometry/BoundsSpec.js

112 lines
3.3 KiB
JavaScript
Raw Permalink Normal View History

describe('Bounds', function () {
var a, b, c;
2013-02-05 19:51:27 +08:00
beforeEach(function () {
2010-09-13 19:58:28 +08:00
a = new L.Bounds(
new L.Point(14, 12), // left, top
new L.Point(30, 40)); // right, bottom
2010-09-13 19:58:28 +08:00
b = new L.Bounds([
new L.Point(20, 12), // center, top
new L.Point(14, 20), // left, middle
new L.Point(30, 40) // right, bottom
]);
c = new L.Bounds();
2010-09-13 19:58:28 +08:00
});
2013-02-05 19:51:27 +08:00
describe('constructor', function () {
it('creates bounds with proper min & max on (Point, Point)', function () {
2013-03-02 05:49:20 +08:00
expect(a.min).to.eql(new L.Point(14, 12));
expect(a.max).to.eql(new L.Point(30, 40));
2010-09-13 19:58:28 +08:00
});
it('creates bounds with proper min & max on (Point[])', function () {
2013-03-02 05:49:20 +08:00
expect(b.min).to.eql(new L.Point(14, 12));
expect(b.max).to.eql(new L.Point(30, 40));
2010-09-13 19:58:28 +08:00
});
});
2013-02-05 19:51:27 +08:00
describe('#extend', function () {
it('extends the bounds to contain the given point', function () {
2010-09-13 19:58:28 +08:00
a.extend(new L.Point(50, 20));
2013-03-02 05:49:20 +08:00
expect(a.min).to.eql(new L.Point(14, 12));
expect(a.max).to.eql(new L.Point(50, 40));
2013-02-05 19:51:27 +08:00
2010-09-13 19:58:28 +08:00
b.extend(new L.Point(25, 50));
2013-03-02 05:49:20 +08:00
expect(b.min).to.eql(new L.Point(14, 12));
expect(b.max).to.eql(new L.Point(30, 50));
2010-09-13 19:58:28 +08:00
});
});
2013-02-05 19:51:27 +08:00
describe('#getCenter', function () {
it('returns the center point', function () {
2013-03-02 05:49:20 +08:00
expect(a.getCenter()).to.eql(new L.Point(22, 26));
2010-09-13 19:58:28 +08:00
});
});
2013-02-05 19:51:27 +08:00
describe('#contains', function () {
it('contains other bounds or point', function () {
a.extend(new L.Point(50, 10));
2013-03-02 05:49:20 +08:00
expect(a.contains(b)).to.be.ok();
expect(b.contains(a)).to.not.be.ok();
expect(a.contains(new L.Point(24, 25))).to.be.ok();
expect(a.contains(new L.Point(54, 65))).to.not.be.ok();
});
});
2013-02-05 19:51:27 +08:00
describe('#isValid', function () {
it('returns true if properly set up', function () {
2013-03-02 05:49:20 +08:00
expect(a.isValid()).to.be.ok();
});
it('returns false if is invalid', function () {
2013-03-02 05:49:20 +08:00
expect(c.isValid()).to.not.be.ok();
});
it('returns true if extended', function () {
c.extend([0, 0]);
2013-03-02 05:49:20 +08:00
expect(c.isValid()).to.be.ok();
});
});
2013-02-05 19:51:27 +08:00
describe('#getSize', function () {
it('returns the size of the bounds as point', function () {
2013-03-02 05:49:20 +08:00
expect(a.getSize()).to.eql(new L.Point(16, 28));
2013-02-05 19:51:27 +08:00
});
});
describe('#intersects', function () {
it('returns true if bounds intersect', function () {
2013-03-02 05:49:20 +08:00
expect(a.intersects(b)).to.be(true);
expect(a.intersects(new L.Bounds(new L.Point(100, 100), new L.Point(120, 120)))).to.eql(false);
2013-02-05 19:51:27 +08:00
});
});
describe('#getBottomLeft', function () {
it('returns the proper bounds bottom-left value', function () {
expect(a.getBottomLeft()).to.eql(new L.Point(14, 40)); // left, bottom
});
});
describe('#getTopRight', function () {
it('returns the proper bounds top-right value', function () {
expect(a.getTopRight()).to.eql(new L.Point(30, 12)); // right, top
});
});
describe('#getTopLeft', function () {
it('returns the proper bounds top-left value', function () {
expect(a.getTopLeft()).to.eql(new L.Point(14, 12)); // left, top
});
});
describe('#getBottomRight', function () {
it('returns the proper bounds bottom-right value', function () {
expect(a.getBottomRight()).to.eql(new L.Point(30, 40)); // left, bottom
});
});
2013-02-05 19:51:27 +08:00
describe('L.bounds factory', function () {
it('creates bounds from array of number arrays', function () {
2013-02-05 19:51:27 +08:00
var bounds = L.bounds([[14, 12], [30, 40]]);
2013-03-02 05:49:20 +08:00
expect(bounds).to.eql(a);
2013-02-05 19:51:27 +08:00
});
});
});