<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Compound 2D Transforms</title>
  <style type="text/css" media="screen">
    .container {
      height: 100px;
      width: 200px;
      margin: 30px;
      outline: 1px solid black;
    }
    .box {
      height: 100%;
      width: 100%;
      background-color: green;
      -webkit-transform: rotate(90deg);
    }
    #results {
      margin-top: 100px;
    }
  </style>
  <script src="resources/transform-test-utils.js" type="text/javascript" charset="utf-8"></script>
  <script type="text/javascript" charset="utf-8">
    if (window.testRunner) {
      testRunner.dumpAsText();
      testRunner.waitUntilDone();
    }

    var gTests = [
      // zero functions
      { 'transform' : 'none', 'result' : 'none' },
      { 'transform' : '', 'result' : 'matrix(5.96046e-08, 1, -1, 5.96046e-08, 0, 0)' }, // revert back to box

      // one function - see non-compound test for tougher examples
      { 'transform' : 'translate(50px, 20px)', 'result' : 'matrix(1, 0, 0, 1, 50, 20)' },
      { 'transform' : 'rotate(12deg)',         'result' : 'matrix(0.978148, 0.207912, -0.207912, 0.978148, 0, 0)' },
      { 'transform' : 'scale(1.7)',            'result' : 'matrix(1.7, 0, 0, 1.7, 0, 0)' },
      { 'transform' : 'skew(12deg)',           'result' : 'matrix(1, 0, 0.212557, 1, 0, 0)' },
      { 'transform' : 'matrix(0.978148, 0.207912, -0.207912, 0.978148, 50, 20)', 'result' : 'matrix(0.978148, 0.207912, -0.207912, 0.978148, 50, 20)' },
      
      // two functions
      { 'transform' : 'translate(50px, 20px) rotate(12deg)',          'result' : 'matrix(0.978148, 0.207912, -0.207912, 0.978148, 50, 20)' },
      { 'transform' : 'rotate(12deg) translate(50px, 20px)',          'result' : 'matrix(0.978148, 0.207912, -0.207912, 0.978148, 44.7491, 29.9585)' },

      // three functions
      { 'transform' : 'rotate(12deg) translate(50px, 20px) scale(1.4)',   'result' : 'matrix(1.36941, 0.291076, -0.291076, 1.36941, 44.7491, 29.9585)' },
      { 'transform' : 'scale(1.4) rotate(12deg) translate(50px, 20px) ',  'result' : 'matrix(1.36941, 0.291076, -0.291076, 1.36941, 62.6488, 41.942)' },
      { 'transform' : 'scale(1.4) translate(50px, 20px) rotate(12deg)',   'result' : 'matrix(1.36941, 0.291076, -0.291076, 1.36941, 70, 28)' },
      { 'transform' : 'translate(50px, 20px) rotate(12deg) translateY(50px) scale(1.4)',   'result' : 'matrix(1.36941, 0.291076, -0.291076, 1.36941, 39.6044, 68.9074)' },

      // lots of functions
      { 'transform' : 'rotate(12deg) translate(50px, 20px) scale(1.4) translate(-80px, 40px) skew(34deg) translate(10px, 10px) scale(0.7) skewY(-25deg) rotate(21deg) translateX(50px) scale(1.4, 1.8)', 
        'result' : 'matrix(1.20517, 0.148207, 0.258987, 2.04004, -13.3847, 85.31)' },
        
      // invalid compound functions
      { 'transform' : ',rotate(12deg) translate(50px, 20px)', 'result' : 'none' }, // has comma
      { 'transform' : 'rotate(12deg), translate(50px, 20px)', 'result' : 'none' }, // has comma
      { 'transform' : 'rotate(12deg) + translate(50px, 20px)', 'result' : 'none' }, // has plus
      { 'transform' : 'rotate(12deg) translate(50, 20)', 'result' : 'none' }, // missing units
      { 'transform' : '(rotate(12deg) translate(50px, 20px))', 'result' : 'none' }, // bad syntax
      { 'transform' : 'rotate(12deg) translate(50px, 20px) eggs(10)', 'result' : 'none' }, // invalid function
      { 'transform' : 'rotate(12deg) matrix(0.978148, 0.207912, -0.207912, 0.978148, 50, 20, 666)', 'result' : 'none' }, // too many arguments
      
    ];
    
    function runTests()
    {
      testTransforms();

      if (window.testRunner)
        testRunner.notifyDone();
    }
  </script>
</head>
<body onload="runTests()">

  <div class="container">
    <div id="test-box" class="box"></div>
  </div>

  <div id="results">
  </div>
</body>
</html>
