#library('CSSTest');
#import('../../pkg/unittest/unittest.dart');
#import('../../pkg/unittest/html_config.dart');
#import('dart:html');

main() {
  useHtmlConfiguration();
  test('CSSMatrix', () {
    CSSMatrix matrix1 = new CSSMatrix();
    expect(matrix1.m11.round(), equals(1));
    expect(matrix1.m12.round(), isZero);

    CSSMatrix matrix2 = new CSSMatrix('matrix(1, 0, 0, 1, -835, 0)');
    expect(matrix2.a.round(), equals(1));
    expect(matrix2.e.round(), equals(-835));
  });
  test('Point', () {
    Element element = new Element.tag('div');
    element.attributes['style'] =
      '''
      position: absolute;
      width: 60px;
      height: 100px;
      left: 0px;
      top: 0px;
      background-color: red;
      -webkit-transform: translate3d(250px, 100px, 0px) perspective(500px) rotateX(30deg);
      ''';
    document.body.nodes.add(element);

    Point point = new Point(5, 2);
    checkPoint(5, 2, point);
    checkPoint(256, 110, window.webkitConvertPointFromNodeToPage(element, point));
    point.y = 100;
    checkPoint(5, 100, point);
    checkPoint(254, 196, window.webkitConvertPointFromNodeToPage(element, point));
  });
}

void checkPoint(expectedX, expectedY, Point point) {
  expect(point.x.round(), equals(expectedX), reason: 'Wrong point.x');
  expect(point.y.round(), equals(expectedY), reason: 'Wrong point.y');
}
