var vows = require("vows"), load = require("../load"), assert = require("../assert"); var suite = vows.describe("d3.layout.force"); suite.addBatch({ "force": { topic: load("layout/force").expression("d3.layout.force").document(), "default instance": { topic: function(force) { return force(); }, "friction": { "defaults to .9": function(f) { assert.equal(f.friction(), .9); }, "can be a number": function(f) { f.friction(.5); assert.equal(f.friction(), .5); }, "coerces to a number": function(f) { f.friction(".5"); assert.strictEqual(f.friction(), .5); } }, "gravity": { "defaults to .1": function(f) { assert.equal(f.gravity(), .1); }, "can be a number": function(f) { f.gravity(.5); assert.equal(f.gravity(), .5); }, "coerces to a number": function(f) { f.gravity(".5"); assert.strictEqual(f.gravity(), .5); } }, "theta": { "defaults to .8": function(f) { assert.equal(f.theta(), .8); }, "can be a number": function(f) { f.theta(.5); assert.equal(f.theta(), .5); }, "coerces to a number": function(f) { f.theta(".5"); assert.strictEqual(f.theta(), .5); } }, "charge": { "defaults to -30": function(f) { assert.equal(f.charge(), -30); }, "can be a number": function(f) { f.charge(-40); assert.equal(f.charge(), -40); }, "can be a function": function(f) { // TODO expose the computed value? f.charge(foo); assert.equal(f.charge(), foo); }, "coerces to a number": function(f) { f.charge("-40"); assert.strictEqual(f.charge(), -40); } }, "linkDistance": { "defaults to 20": function(f) { assert.equal(f.linkDistance(), 20); }, "can be a number": function(f) { f.linkDistance(40); assert.equal(f.linkDistance(), 40); }, "can be a function": function(f) { // TODO expose the computed value? f.linkDistance(foo); assert.equal(f.linkDistance(), foo); }, "coerces to a number": function(f) { f.linkDistance("40"); assert.strictEqual(f.linkDistance(), 40); } }, "linkStrength": { "defaults to 1": function(f) { assert.equal(f.linkStrength(), 1); }, "can be a number": function(f) { f.linkStrength(.5); assert.equal(f.linkStrength(), .5); }, "can be a function": function(f) { // TODO expose the computed value? f.linkStrength(foo); assert.equal(f.linkStrength(), foo); }, "coerces to a number": function(f) { f.linkStrength(".5"); assert.strictEqual(f.linkStrength(), .5); } } } } }); function foo(d) { return d.foo; } suite.export(module);