@quartic/bokehjs
Version:
Interactive, novel data visualization
48 lines (33 loc) • 2.04 kB
text/coffeescript
{expect} = require "chai"
utils = require "../../utils"
bbox = utils.require "core/util/bbox"
describe "bbox module", ->
describe "empty", ->
it "should be an unbounded box", ->
expect(bbox.empty()).to.deep.equal {minX: Infinity, minY: Infinity, maxX: -Infinity, maxY:-Infinity}
describe "positive_x", ->
it "should be box covering the area where x is positive", ->
expect(bbox.positive_x()).to.deep.equal {minX: Number.MIN_VALUE, minY: -Infinity, maxX: Infinity, maxY: Infinity}
describe "positive_y", ->
it "should be box covering the area where y is positive", ->
expect(bbox.positive_y()).to.deep.equal {minX: -Infinity, minY: Number.MIN_VALUE, maxX: Infinity, maxY: Infinity}
describe "union", ->
empty = bbox.empty()
outside = { minX: 0, maxX: 10, minY: 0, maxY: 10 }
inside = { minX: 4, maxX: 5, minY: 4, maxY: 5 }
overlaps = { minX:-5, maxX: 5, minY: -5, maxY: 5 }
disjoint = { minX:-5, maxX: -1, minY: -5, maxY: -1 }
it "should return empty when inputs are empty", ->
expect(bbox.union(empty, empty)).to.deep.equal empty
it "should return the non-empty bbox when one input is empty", ->
expect(bbox.union(empty, outside)).to.deep.equal outside
expect(bbox.union(outside, empty)).to.deep.equal outside
it "should return the bigger box if one bbox contains another", ->
expect(bbox.union(inside, outside)).to.deep.equal outside
expect(bbox.union(outside, inside)).to.deep.equal outside
it "should return the envelope of overlapping bboxes", ->
expect(bbox.union(overlaps, outside)).to.deep.equal { minX: -5, maxX: 10, minY: -5, maxY: 10}
expect(bbox.union(outside, overlaps)).to.deep.equal { minX: -5, maxX: 10, minY: -5, maxY: 10}
it "should return the envelope of disjoint bboxes", ->
expect(bbox.union(overlaps, outside)).to.deep.equal { minX: -5, maxX: 10, minY: -5, maxY: 10}
expect(bbox.union(outside, overlaps)).to.deep.equal { minX: -5, maxX: 10, minY: -5, maxY: 10}