Skip to content

Commit

Permalink
refactor translate matcher; translate-rotate matcher
Browse files Browse the repository at this point in the history
two more fixes for dc-js#509 - down to 26 path match failures
  • Loading branch information
gordonwoodhull committed Feb 4, 2014
1 parent 121ec6f commit a274020
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 16 deletions.
4 changes: 2 additions & 2 deletions spec/coordinate-grid-chart-spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -329,7 +329,7 @@ describe('dc.coordinateGridChart', function() {
});

it('should position the label to the left of the chart', function () {
expect(chart.selectAll('text.y-axis-label.y-label').attr("transform")).toBe("translate(12,85),rotate(-90)");
expect(chart.selectAll('text.y-axis-label.y-label').attr("transform")).toMatchTransRot(12,85,-90);
});

describe("with custom padding", function() {
Expand Down Expand Up @@ -376,7 +376,7 @@ describe('dc.coordinateGridChart', function() {
});

it('should position the label to the right of the chart', function () {
expect(chart.selectAll('text.y-axis-label.y-label').attr("transform")).toBe("translate(488,85),rotate(90)");
expect(chart.selectAll('text.y-axis-label.y-label').attr("transform")).toMatchTransRot(488,85,90);
});

describe("with custom padding", function() {
Expand Down
50 changes: 36 additions & 14 deletions spec/helpers/spec-helper.js
Original file line number Diff line number Diff line change
@@ -1,21 +1,48 @@
function parseTranslate(actual) {
var parts = /translate\((-?[\d\.]*)(?:[, ](.*))?\)/.exec(actual);
if(!parts)
return null;
if(parts[2]===undefined)
parts[2] = 0;
expect(parts.length).toEqual(3);
return parts;
}

function parseTranslateRotate(actual) {
var parts = /translate\((-?[\d\.]*)(?:[, ](.*))?\)[, ]rotate\((-?[\d\.]*)\)/.exec(actual);
if(!parts)
return null;
if(parts[2]===undefined)
parts[2] = 0;
expect(parts.length).toEqual(4);
return parts;
}

beforeEach(function() {
d3.select("body").append("div").attr("id", "test-content");
jasmine.clock().install();
var matchers = {
toMatchTranslate: function() {
return {
compare: function(actual, x, y, prec) {
var parts = /translate\((.*)[, ](.*)\)/.exec(actual);
prec = prec || 10; // default 10 digits after decimal
if(!parts && !y) { // IE clips y if it's 0
parts = /translate\((.*)\)/.exec(actual);
if(parts) parts.push(0);
}
var parts = parseTranslate(actual);
if(!parts)
return {pass: false, message: "'" + actual + "' did not match translate(x[,y]) regexp"};
expect(+parts[1]).toBeCloseTo(x, prec);
expect(+parts[2]).toBeCloseTo(y, prec);
return {pass: true}; // ignore possibility of not.toBeTranslate (?)
}
};
},
toMatchTransRot: function() {
return {
compare: function(actual, x, y, r, prec) {
var parts = parseTranslateRotate(actual);
if(!parts)
return {pass: false, message: "'" + actual + "' did not match translate(x,y) regexp"};
expect(parts.length).toEqual(3);
return {pass: false, message: "'" + actual + "' did not match translate(x[,y]),rotate(r) regexp"};
expect(+parts[1]).toBeCloseTo(x, prec);
expect(+parts[2]).toBeCloseTo(y, prec);
expect(+parts[3]).toBeCloseTo(r, prec);
return {pass: true}; // ignore possibility of not.toBeTranslate (?)
}
};
Expand Down Expand Up @@ -44,12 +71,7 @@ function appendChartID(id) {
}

function coordsFromTranslate(translationString) {
var regex = /translate\((.+)[, ](.+)\)/;
var result = regex.exec(translationString);
if(!result) { // IE clips y if it's 0
result = /translate\((.*)\)/.exec(translationString);
if(result) result.push(0);
}
var result = parseTranslate(translationString);
expect(result).not.toBeNull();
return { x: +result[1], y: +result[2] };
}

0 comments on commit a274020

Please sign in to comment.