blob: be24b36fb59726227c1b8c17eb458b530eb0cca8 [file] [log] [blame]
// compare matrix() strings with some slop on really small values
function floatingPointEqual(a, b)
{
const kEpsilon = 1e-4;
return (Math.abs(a - b) < kEpsilon);
}
function compareMatrices(a, b)
{
if (a == "none" && b == "none")
return true;
var matrixRegex = /matrix(?:3d)?\((.+)\)/;
var resultA = matrixRegex.exec(a);
var resultB = matrixRegex.exec(b);
if (!resultA || !resultB)
return false;
var aValues = resultA[1];
var bValues = resultB[1];
var aComps = aValues.split(',');
var bComps = bValues.split(',');
if (aComps.length != bComps.length)
return false;
for (var i = 0; i < aComps.length; ++i)
{
if (!floatingPointEqual(aComps[i], bComps[i]))
return false;
}
return true;
}
function testTransforms()
{
var testBox = document.getElementById('test-box');
var resultsBox = document.getElementById('results');
gTests.forEach(function(curTest) {
testBox.style.webkitTransform = 'none'; // reset the transform just in case the next step fails
testBox.style.webkitTransform = curTest.transform;
var computedTransform = window.getComputedStyle(testBox).webkitTransform;
var success = compareMatrices(computedTransform, curTest.result);
var result;
if (success)
result = 'transform "<code>' + curTest.transform + '</code>" expected "<code>' + curTest.result + '</code>" : PASS';
else
result = 'transform "<code>' + curTest.transform + '</code>" expected "<code>' + curTest.result + '</code>", got "<code>' + computedTransform + '</code>" : FAIL';
resultsBox.innerHTML += result + '<br>';
});
}