
// @dart = 2.9
import 'dart:html';

import 'package:expect/minitest.dart';

main() {
  var isRectList =
      predicate((x) => x is DomRectList, 'should be a DomRectList');
  var isListOfRectangle =
      predicate((x) => x is List<Rectangle>, 'should be a List<Rectangle>');

  var isRectangle = predicate((x) => x is Rectangle, 'should be a Rectangle');
  var isDomRectReadOnly =
      predicate((x) => x is DomRectReadOnly, 'should be a DomRectReadOnly');

  insertTestDiv() {
    var element = new Element.tag('div');
    element.innerHtml = r'''
    A large block of text should go here. Click this
    block of text multiple times to see each line
    highlight with every click of the mouse button.
    ''';
    document.body.append(element);
    return element;
  }

  test("DomRectList test", () {
    insertTestDiv();
    var range = new Range();
    var rects = range.getClientRects();
    expect(rects, isListOfRectangle);
    expect(rects, isRectList);
  });

  test("ClientRect ==", () {
    var rect1 = document.body.getBoundingClientRect();
    var rect2 = document.body.getBoundingClientRect();
    expect(rect1, isRectangle);
    expect(rect1, isDomRectReadOnly);
    expect(rect1, equals(rect2));
  });
}
