d3/test/scale/category-test.js

74 строки
2.3 KiB
JavaScript
Исходник Обычный вид История

2011-08-17 10:11:52 +04:00
require("../env");
var vows = require("vows"),
assert = require("assert");
var suite = vows.describe("d3.scale.category");
suite.addBatch({
"category10": category(d3.scale.category10, 10),
"category20": category(d3.scale.category20, 20),
"category20b": category(d3.scale.category20b, 20),
"category20c": category(d3.scale.category20c, 20)
});
function category(category, n) {
return {
"is an ordinal scale": function() {
2011-08-19 01:59:55 +04:00
var x = category(), colors = x.range();
assert.lengthOf(x.domain(), 0);
assert.lengthOf(x.range(), n);
2011-08-19 01:59:55 +04:00
assert.equal(x(1), colors[0]);
assert.equal(x(2), colors[1]);
assert.equal(x(1), colors[0]);
var y = x.copy();
assert.deepEqual(y.domain(), x.domain());
assert.deepEqual(y.range(), x.range());
x.domain(d3.range(n));
for (var i = 0; i < n; ++i) assert.equal(x(i + n), x(i));
assert.equal(y(1), colors[0]);
assert.equal(y(2), colors[1]);
2011-08-17 10:11:52 +04:00
},
"each instance is isolated": function() {
var a = category(), b = category(), colors = a.range();
assert.equal(a(1), colors[0]);
assert.equal(b(2), colors[0]);
assert.equal(b(1), colors[1]);
assert.equal(a(1), colors[0]);
},
"contains the expected number of values in the range": function() {
var x = category();
assert.lengthOf(x.range(), n);
2011-08-17 10:11:52 +04:00
},
"each range value is distinct": function() {
var map = {}, count = 0, x = category();
x.range().forEach(function(v) {
if (!(v in map)) {
map[v] = ++count;
}
});
assert.equal(count, x.range().length);
},
"each range value is a hexadecimal color": function() {
var x = category();
x.range().forEach(function(v) {
assert.match(v, /#[0-9a-f]{6}/);
v = d3.rgb(v);
assert.isFalse(isNaN(v.r));
assert.isFalse(isNaN(v.g));
assert.isFalse(isNaN(v.b));
});
},
"no range values are very dark or very light": function() {
var x = category();
x.range().forEach(function(v) {
var c = d3.hsl(v);
assert.isTrue(c.l >= .34, "expected " + v + " to be lighter (l = " + c.l + ")");
assert.isTrue(c.l <= .89, "expected " + v + " to be darker (l = " + c.l + ")");
});
}
};
}
suite.export(module);