Merge branch 'shuffle-subset' of github.com:PrajitR/d3 into shuffle-subset

This commit is contained in:
Mike Bostock 2014-11-15 14:35:29 -08:00
Родитель 94168faabc 0f03bdd599
Коммит fcd87f6b34
5 изменённых файлов: 59 добавлений и 9 удалений

10
d3.js поставляемый
Просмотреть файл

@ -163,11 +163,15 @@
return d3_ascending(f(d), x);
} : f);
};
d3.shuffle = function(array) {
var m = array.length, t, i;
d3.shuffle = function(array, i0, i1) {
if ((m = arguments.length) < 3) {
i1 = array.length;
if (m < 2) i0 = 0;
}
var m = i1 - i0, t, i;
while (m) {
i = Math.random() * m-- | 0;
t = array[m], array[m] = array[i], array[i] = t;
t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;
}
return array;
};

6
d3.min.js поставляемый

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -1,8 +1,9 @@
d3.shuffle = function(array) {
var m = array.length, t, i;
d3.shuffle = function(array, i0, i1) {
if ((m = arguments.length) < 3) { i1 = array.length; if (m < 2) i0 = 0; }
var m = i1 - i0, t, i;
while (m) {
i = Math.random() * m-- | 0;
t = array[m], array[m] = array[i], array[i] = t;
t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;
}
return array;
};

Просмотреть файл

@ -0,0 +1,43 @@
var vows = require("vows"),
load = require("../load"),
assert = require("../assert"),
seedrandom = require("seedrandom");
var suite = vows.describe("d3.shuffle");
var _random;
suite.addBatch({
"shuffle": {
topic: load("arrays/shuffle").sandbox({Math: Math}).expression("d3.shuffle"),
"(using seedrandom)": {
topic: function(random) {
_random = Math.random;
return random;
},
"shuffles an array in-place": function(shuffle) {
Math.seedrandom("a random seed.");
var array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
assert.strictEqual(shuffle(array), array);
assert.deepEqual(array, [6, 4, 7, 9, 3, 1, 5, 8, 0, 2]);
},
"shuffles a subset of an array from the specified start": function(shuffle) {
Math.seedrandom("a random seed.");
var array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
assert.strictEqual(shuffle(array, 4), array);
assert.deepEqual(array, [0, 1, 2, 3, 9, 7, 6, 8, 4, 5]);
},
"shuffles a subset of an array between the specified start and end": function(shuffle) {
Math.seedrandom("a random seed.");
var array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
assert.strictEqual(shuffle(array, 3, 8), array);
assert.deepEqual(array, [0, 1, 2, 5, 7, 6, 3, 4, 8, 9]);
},
teardown: function() {
Math.random = _random;
}
}
}
});
suite.export(module);

Просмотреть файл

@ -5,6 +5,8 @@ var vows = require("vows"),
var suite = vows.describe("d3.random");
var _random;
// Testing a random number generator is a bit more complicated than testing
// deterministic code, so we use different techniques.
//