diff --git a/d3/d3-tests.ts b/d3/d3-tests.ts index c4d058574b..ab3953e9ec 100644 --- a/d3/d3-tests.ts +++ b/d3/d3-tests.ts @@ -590,7 +590,7 @@ function bivariateAreaChart() { }); x.domain(d3.extent(data, function (d) { return d.date; })); - y.domain([d3.min(data, function (d) { return d.low; }), d3.max(data, function (d) { return d.high; })]); + y.domain([d3.min(data, function (d) { return d.low; }), d3.max(data, function (d) { return d.high; })]); svg.append("path") .datum(data) @@ -2424,3 +2424,44 @@ function svgDiagonalTest () { d.target(function (d) { return {x: d.x, y: d.y}; }); d.target(function (d, i) { return {x: d.x * i, y: d.y * i}; }); } + +// Tests for d3.extent +// Adopted from: https://github.com/mbostock/d3/blob/master/test/arrays/extent-test.js +function extentTest() { + var o = { valueOf: function () { return NaN; } }; + d3.extent([1]); + d3.extent([5, 1, 2, 3, 4]); + d3.extent([20, 3]); + d3.extent([3, 20]); + d3.extent(["c", "a", "b"]); + d3.extent(["20", "3"]); + d3.extent(["3", "20"]); + d3.extent([NaN, 1, 2, 3, 4, 5]); + d3.extent([o, 1, 2, 3, 4, 5]); + d3.extent([1, 2, 3, 4, 5, NaN]); + d3.extent([1, 2, 3, 4, 5, o]); + d3.extent([10, null, 3, undefined, 5, NaN]); + d3.extent([-1, null, -3, undefined, -5, NaN]); + d3.extent([20, "3"]); + d3.extent(["20", 3]); + d3.extent([3, "20"]); + d3.extent(["3", 20]); + + d3.extent([1], (d) => { return d; }); + d3.extent([5, 1, 2, 3, 4], (d) => { return d; }); + d3.extent([20, 3], (d) => { return d; }); + d3.extent([3, 20], (d) => { return d; }); + d3.extent(["c", "a", "b"], (d) => { return d; }); + d3.extent(["20", "3"], (d) => { return d; }); + d3.extent(["3", "20"], (d) => { return d; }); + d3.extent([NaN, 1, 2, 3, 4, 5], (d) => { return d; }); + d3.extent([o, 1, 2, 3, 4, 5], (d) => { return d; }); + d3.extent([1, 2, 3, 4, 5, NaN], (d) => { return d; }); + d3.extent([1, 2, 3, 4, 5, o], (d) => { return d; }); + d3.extent([10, null, 3, undefined, 5, NaN], (d) => { return d; }); + d3.extent([-1, null, -3, undefined, -5, NaN], (d) => { return d; }); + d3.extent([20, "3"], (d) => { return d; }); + d3.extent(["20", 3], (d) => { return d; }); + d3.extent([3, "20"], (d) => { return d; }); + d3.extent(["3", 20], (d) => { return d; }); +} \ No newline at end of file diff --git a/d3/d3.d.ts b/d3/d3.d.ts index 988d4fb35c..b944869d53 100644 --- a/d3/d3.d.ts +++ b/d3/d3.d.ts @@ -88,21 +88,21 @@ declare module D3 { * @param arr Array to search * @param map Accsessor function */ - min(arr: T[], map?: (v: T) => number): number; + min(arr: T[], map?: (v: T) => U): U; /** * Find the maximum value in an array * * @param arr Array to search * @param map Accsessor function */ - max(arr: T[], map?: (v: T) => number): number; + max(arr: T[], map?: (v: T) => U): U; /** * Find the minimum and maximum value in an array * * @param arr Array to search * @param map Accsessor function */ - extent(arr: T[], map?: (v: T) => number): number[]; + extent(arr: T[], map?: (v: T) => U): U[]; /** * Compute the sum of an array of numbers *