245 lines
7.4 KiB
JavaScript
245 lines
7.4 KiB
JavaScript
describe('Line', function() {
|
|
var line
|
|
|
|
beforeEach(function() {
|
|
line = draw.line(0,100,100,0)
|
|
})
|
|
|
|
afterEach(function() {
|
|
draw.clear()
|
|
})
|
|
|
|
// #487
|
|
describe('()', function(){
|
|
it('will take an array as input', function(){
|
|
line = draw.line([[0,100],[100,0]])
|
|
var attrs = line.attr()
|
|
expect(attrs.x1).toBe(0)
|
|
expect(attrs.y1).toBe(100)
|
|
expect(attrs.x2).toBe(100)
|
|
expect(attrs.y2).toBe(0)
|
|
})
|
|
|
|
it('falls back to a line with its two points at [0,0] without an argument', function() {
|
|
line = draw.line()
|
|
var attrs = line.attr()
|
|
expect(attrs.x1).toBe(0)
|
|
expect(attrs.y1).toBe(0)
|
|
expect(attrs.x2).toBe(0)
|
|
expect(attrs.y2).toBe(0)
|
|
})
|
|
})
|
|
|
|
describe('x()', function() {
|
|
it('should return the value of x without an argument', function() {
|
|
expect(line.x()).toBe(0)
|
|
})
|
|
it('should set the value of x with the first argument', function() {
|
|
line.x(123)
|
|
var box = line.bbox()
|
|
expect(box.x).toBe(123)
|
|
})
|
|
})
|
|
|
|
describe('y()', function() {
|
|
it('should return the value of y without an argument', function() {
|
|
expect(line.y()).toBe(0)
|
|
})
|
|
it('should set the value of y with the first argument', function() {
|
|
line.y(345)
|
|
var box = line.bbox()
|
|
expect(box.y).toBe(345)
|
|
})
|
|
})
|
|
|
|
describe('cx()', function() {
|
|
it('should return the value of cx without an argument', function() {
|
|
expect(line.cx()).toBe(50)
|
|
})
|
|
it('should set the value of cx with the first argument', function() {
|
|
line.cx(123)
|
|
var box = line.bbox()
|
|
expect(box.cx).toBe(123)
|
|
})
|
|
})
|
|
|
|
describe('cy()', function() {
|
|
it('should return the value of cy without an argument', function() {
|
|
expect(line.cy()).toBe(50)
|
|
})
|
|
it('should set the value of cy with the first argument', function() {
|
|
line.cy(345)
|
|
var box = line.bbox()
|
|
expect(box.cy).toBe(345)
|
|
})
|
|
})
|
|
|
|
describe('move()', function() {
|
|
it('should set the x and y position', function() {
|
|
line.move(123,456)
|
|
var box = line.bbox()
|
|
expect(box.x).toBe(123)
|
|
expect(box.y + box.height).toBe(556)
|
|
expect(box.x + box.width).toBe(223)
|
|
expect(box.y).toBe(456)
|
|
})
|
|
})
|
|
|
|
describe('dx()', function() {
|
|
it('moves the x positon of the element relative to the current position', function() {
|
|
line.move(50,60)
|
|
line.dx(100)
|
|
var box = line.bbox()
|
|
expect(box.x).toBe(150)
|
|
expect(box.y + box.height).toBe(160)
|
|
expect(box.x + box.width).toBe(250)
|
|
expect(box.y).toBe(60)
|
|
})
|
|
})
|
|
|
|
describe('dy()', function() {
|
|
it('moves the y positon of the element relative to the current position', function() {
|
|
line.move(50, 60)
|
|
line.dy(120)
|
|
var box = line.bbox()
|
|
expect(box.x).toBe(50)
|
|
expect(box.y + box.height).toBe(280)
|
|
expect(box.x + box.width).toBe(150)
|
|
expect(box.y).toBe(180)
|
|
})
|
|
})
|
|
|
|
describe('dmove()', function() {
|
|
it('moves the x and y positon of the element relative to the current position', function() {
|
|
line.move(50,60)
|
|
line.dmove(80, 25)
|
|
var box = line.bbox()
|
|
expect(box.x).toBe(130)
|
|
expect(box.y + box.height).toBe(185)
|
|
expect(box.x + box.width).toBe(230)
|
|
expect(box.y).toBe(85)
|
|
})
|
|
})
|
|
|
|
describe('center()', function() {
|
|
it('should set the cx and cy position', function() {
|
|
line.center(321,567)
|
|
var box = line.bbox()
|
|
expect(box.x).toBe(271)
|
|
expect(box.y + box.height).toBe(617)
|
|
expect(box.x + box.width).toBe(371)
|
|
expect(box.y).toBe(517)
|
|
})
|
|
})
|
|
|
|
describe('width()', function() {
|
|
it('sets the width of the element', function() {
|
|
line.width(400)
|
|
var box = line.bbox()
|
|
expect(box.x).toBe(0)
|
|
expect(box.x + box.width).toBe(400)
|
|
})
|
|
it('get the width of the element without argument', function() {
|
|
line.width(123)
|
|
var box = line.bbox()
|
|
expect(line.width()).toBe(box.width)
|
|
})
|
|
})
|
|
|
|
describe('height()', function() {
|
|
it('sets the height of the element', function() {
|
|
line.height(300)
|
|
var box = line.bbox()
|
|
expect(box.y).toBe(0)
|
|
expect(box.y + box.height).toBe(300)
|
|
})
|
|
it('gets the height of the element without argument', function() {
|
|
line.height(456)
|
|
var box = line.bbox()
|
|
expect(line.height()).toBe(box.height)
|
|
})
|
|
})
|
|
|
|
describe('size()', function() {
|
|
it('should define the width and height of the element', function() {
|
|
line.size(987,654)
|
|
var box = line.bbox()
|
|
expect(box.x).toBe(0)
|
|
expect(box.y + box.height).toBe(654)
|
|
expect(box.x + box.width).toBe(987)
|
|
expect(box.y).toBe(0)
|
|
})
|
|
it('defines the width and height proportionally with only the width value given', function() {
|
|
var box = line.bbox()
|
|
line.size(500)
|
|
expect(line.width()).toBe(500)
|
|
expect(line.width() / line.height()).toBe(box.width / box.height)
|
|
})
|
|
it('defines the width and height proportionally with only the height value given', function() {
|
|
var box = line.bbox()
|
|
line.size(null, 525)
|
|
expect(line.height()).toBe(525)
|
|
expect(line.width() / line.height()).toBe(box.width / box.height)
|
|
})
|
|
})
|
|
|
|
describe('scale()', function() {
|
|
it('should scale the element universally with one argument', function() {
|
|
var box1 = line.rbox()
|
|
, box2 = line.scale(2).rbox()
|
|
|
|
expect(box2.width).toBe(box1.width * 2)
|
|
expect(box2.height).toBe(box1.height * 2)
|
|
})
|
|
it('should scale the element over individual x and y axes with two arguments', function() {
|
|
var box1 = line.rbox()
|
|
, box2 = line.scale(2,3.5).rbox()
|
|
|
|
expect(box2.width).toBe(box1.width * 2)
|
|
expect(box2.height).toBe(box1.height * 3.5)
|
|
})
|
|
})
|
|
|
|
describe('translate()', function() {
|
|
it('should set the translation of an element', function() {
|
|
line.transform({ x: 12, y: 12 })
|
|
expect(line.node.getAttribute('transform')).toBe('matrix(1,0,0,1,12,12)')
|
|
})
|
|
})
|
|
|
|
describe('plot()', function() {
|
|
it('should update the start and end points', function() {
|
|
line.plot(100,200,300,400)
|
|
var box = line.bbox()
|
|
expect(box.x).toBe(100)
|
|
expect(box.y).toBe(200)
|
|
expect(box.x + box.width).toBe(300)
|
|
expect(box.y + box.height).toBe(400)
|
|
})
|
|
it('change the x1,y1,x2,y2 attributes of the underlying line node when a string is passed', function() {
|
|
expect(line.plot('100,50 200,10')).toBe(line)
|
|
|
|
var attrs = line.attr()
|
|
expect(attrs.x1).toBe(100)
|
|
expect(attrs.y1).toBe(50)
|
|
expect(attrs.x2).toBe(200)
|
|
expect(attrs.y2).toBe(10)
|
|
})
|
|
it('change the x1,y1,x2,y2 attributes of the underlying line node when 4 numbers are passed', function() {
|
|
expect(line.plot(45, 24, 220, 300)).toBe(line)
|
|
|
|
var attrs = line.attr()
|
|
expect(attrs.x1).toBe(45)
|
|
expect(attrs.y1).toBe(24)
|
|
expect(attrs.x2).toBe(220)
|
|
expect(attrs.y2).toBe(300)
|
|
})
|
|
it('return the coordinates in a point array when no arguments are passed', function () {
|
|
var attrs = line.attr()
|
|
, pointArray = new SVG.PointArray([[attrs.x1, attrs.y1], [attrs.x2, attrs.y2]])
|
|
|
|
expect(line.plot()).toEqual(pointArray)
|
|
})
|
|
})
|
|
})
|