// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

// @dart = 2.9

import 'dart:math';
import 'package:expect/expect.dart';

main() {
  testConstruction();
  testIntersection();
  testIntersects();
  testBoundingBox();
  testContainsRectangle();
  testContainsPoint();
  testHashCode();
  testEdgeCases();
  testEquality();
  testNegativeLengths();
  testNaNLeft();
  testNaNTop();
  testNaNWidth();
  testNaNHeight();
}

Rectangle createRectangle(List<num> a) =>
    a != null ? Rectangle(a[0], a[1], a[2] - a[0], a[3] - a[1]) : null;

testConstruction() {
  var r0 = Rectangle(10, 20, 30, 40);
  Expect.equals('Rectangle (10, 20) 30 x 40', r0.toString());
  Expect.equals(40, r0.right);
  Expect.equals(60, r0.bottom);

  var r1 = Rectangle.fromPoints(r0.topLeft, r0.bottomRight);
  Expect.equals(r0, r1);

  var r2 = Rectangle.fromPoints(r0.bottomRight, r0.topLeft);
  Expect.equals(r0, r2);
}

testIntersection() {
  var tests = [
    [
      [10, 10, 20, 20],
      [15, 15, 25, 25],
      [15, 15, 20, 20]
    ],
    [
      [10, 10, 20, 20],
      [20, 0, 30, 10],
      [20, 10, 20, 10]
    ],
    [
      [0, 0, 1, 1],
      [10, 11, 12, 13],
      null
    ],
    [
      [11, 12, 98, 99],
      [22, 23, 34, 35],
      [22, 23, 34, 35]
    ]
  ];

  for (var test in tests) {
    var r0 = createRectangle(test[0]);
    var r1 = createRectangle(test[1]);
    var expected = createRectangle(test[2]);

    Expect.equals(expected, r0.intersection(r1));
    Expect.equals(expected, r1.intersection(r0));
  }
}

testIntersects() {
  var r0 = Rectangle(10, 10, 20, 20);
  var r1 = Rectangle(15, 15, 25, 25);
  var r2 = Rectangle(0, 0, 1, 1);

  Expect.isTrue(r0.intersects(r1));
  Expect.isTrue(r1.intersects(r0));

  Expect.isFalse(r0.intersects(r2));
  Expect.isFalse(r2.intersects(r0));
}

testBoundingBox() {
  var tests = [
    [
      [10, 10, 20, 20],
      [15, 15, 25, 25],
      [10, 10, 25, 25]
    ],
    [
      [10, 10, 20, 20],
      [20, 0, 30, 10],
      [10, 0, 30, 20]
    ],
    [
      [0, 0, 1, 1],
      [10, 11, 12, 13],
      [0, 0, 12, 13]
    ],
    [
      [11, 12, 98, 99],
      [22, 23, 34, 35],
      [11, 12, 98, 99]
    ]
  ];

  for (var test in tests) {
    var r0 = createRectangle(test[0]);
    var r1 = createRectangle(test[1]);
    var expected = createRectangle(test[2]);

    Expect.equals(expected, r0.boundingBox(r1));
    Expect.equals(expected, r1.boundingBox(r0));
  }
}

testContainsRectangle() {
  var r = Rectangle(-10, 0, 20, 10);
  Expect.isTrue(r.containsRectangle(r));

  Expect.isFalse(r.containsRectangle(
      Rectangle(double.nan, double.nan, double.nan, double.nan)));

  var r2 = Rectangle(0, 2, 5, 5);
  Expect.isTrue(r.containsRectangle(r2));
  Expect.isFalse(r2.containsRectangle(r));

  r2 = Rectangle(-11, 2, 5, 5);
  Expect.isFalse(r.containsRectangle(r2));
  r2 = Rectangle(0, 2, 15, 5);
  Expect.isFalse(r.containsRectangle(r2));
  r2 = Rectangle(0, 2, 5, 10);
  Expect.isFalse(r.containsRectangle(r2));
  r2 = Rectangle(0, 0, 5, 10);
  Expect.isTrue(r.containsRectangle(r2));
}

testContainsPoint() {
  var r = Rectangle(20, 40, 60, 80);

  // Test middle.
  Expect.isTrue(r.containsPoint(Point(50, 80)));

  // Test edges.
  Expect.isTrue(r.containsPoint(Point(20, 40)));
  Expect.isTrue(r.containsPoint(Point(50, 40)));
  Expect.isTrue(r.containsPoint(Point(80, 40)));
  Expect.isTrue(r.containsPoint(Point(80, 80)));
  Expect.isTrue(r.containsPoint(Point(80, 120)));
  Expect.isTrue(r.containsPoint(Point(50, 120)));
  Expect.isTrue(r.containsPoint(Point(20, 120)));
  Expect.isTrue(r.containsPoint(Point(20, 80)));

  // Test outside.
  Expect.isFalse(r.containsPoint(Point(0, 0)));
  Expect.isFalse(r.containsPoint(Point(50, 0)));
  Expect.isFalse(r.containsPoint(Point(100, 0)));
  Expect.isFalse(r.containsPoint(Point(100, 80)));
  Expect.isFalse(r.containsPoint(Point(100, 160)));
  Expect.isFalse(r.containsPoint(Point(50, 160)));
  Expect.isFalse(r.containsPoint(Point(0, 160)));
  Expect.isFalse(r.containsPoint(Point(0, 80)));
}

testHashCode() {
  var a = Rectangle(0, 1, 2, 3);
  var b = Rectangle(0, 1, 2, 3);
  Expect.equals(b.hashCode, a.hashCode);

  var c = Rectangle(1, 0, 2, 3);
  Expect.isFalse(a.hashCode == c.hashCode);
}

testEdgeCases() {
  edgeTest(double a, double l) {
    var r = Rectangle(a, a, l, l);
    Expect.equals(r, r.boundingBox(r));
    Expect.equals(r, r.intersection(r));
  }

  var bignum1 = 0x20000000000000 + 0.0;
  var bignum2 = 0x20000000000002 + 0.0;
  var bignum3 = 0x20000000000004 + 0.0;
  edgeTest(1.0, bignum1);
  edgeTest(1.0, bignum2);
  edgeTest(1.0, bignum3);
  edgeTest(bignum1, 1.0);
  edgeTest(bignum2, 1.0);
  edgeTest(bignum3, 1.0);
}

testEquality() {
  var bignum = 0x80000000000008 + 0.0;
  var r1 = Rectangle(bignum, bignum, 1.0, 1.0);
  var r2 = Rectangle(bignum, bignum, 2.0, 2.0);
  Expect.equals(r2, r1);
  Expect.equals(r2.hashCode, r1.hashCode);
  Expect.equals(r2.right, r1.right);
  Expect.equals(r2.bottom, r1.bottom);
  Expect.equals(1.0, r1.width);
  Expect.equals(2.0, r2.width);
}

testNegativeLengths() {
  // Constructor allows negative lengths, but clamps them to zero.
  Expect.equals(Rectangle(4, 4, 0, 0), Rectangle(4, 4, -2, -2));
  Expect.equals(Rectangle(4, 4, 0, 0), MutableRectangle(4, 4, -2, -2));

  // Setters clamp negative lengths to zero.
  var mutable = MutableRectangle(0, 0, 1, 1);
  mutable.width = -1;
  mutable.height = -1;
  Expect.equals(Rectangle(0, 0, 0, 0), mutable);

  // Test that doubles are clamped to double zero.
  var rectangle = Rectangle(1.5, 1.5, -2.5, -2.5);
  Expect.isTrue(identical(rectangle.width, 0.0));
  Expect.isTrue(identical(rectangle.height, 0.0));

  var inf = double.infinity;
  rectangle = Rectangle(1.5, 1.5, -inf, -inf);
  Expect.isTrue(identical(rectangle.width, 0.0));
  Expect.isTrue(identical(rectangle.height, 0.0));
}

testNaNLeft() {
  var rectangles = [
    const Rectangle(double.nan, 1, 2, 3),
    MutableRectangle(double.nan, 1, 2, 3),
    Rectangle.fromPoints(Point(double.nan, 1), Point(2, 4)),
    MutableRectangle.fromPoints(Point(double.nan, 1), Point(2, 4)),
  ];
  for (var r in rectangles) {
    Expect.isFalse(r.containsPoint(Point(0, 1)));
    Expect.isFalse(r.containsRectangle(Rectangle(0, 1, 2, 3)));
    Expect.isFalse(r.intersects(Rectangle(0, 1, 2, 3)));
    Expect.isTrue(r.left.isNaN);
    Expect.isTrue(r.right.isNaN);
  }
}

testNaNTop() {
  var rectangles = [
    const Rectangle(0, double.nan, 2, 3),
    MutableRectangle(0, double.nan, 2, 3),
    Rectangle.fromPoints(Point(0, double.nan), Point(2, 4)),
    MutableRectangle.fromPoints(Point(0, double.nan), Point(2, 4)),
  ];
  for (var r in rectangles) {
    Expect.isFalse(r.containsPoint(Point(0, 1)));
    Expect.isFalse(r.containsRectangle(Rectangle(0, 1, 2, 3)));
    Expect.isFalse(r.intersects(Rectangle(0, 1, 2, 3)));
    Expect.isTrue(r.top.isNaN);
    Expect.isTrue(r.bottom.isNaN);
  }
}

testNaNWidth() {
  var rectangles = [
    const Rectangle(0, 1, double.nan, 3),
    MutableRectangle(0, 1, double.nan, 3),
    Rectangle.fromPoints(Point(0, 1), Point(double.nan, 4)),
    MutableRectangle.fromPoints(Point(0, 1), Point(double.nan, 4)),
  ];
  for (var r in rectangles) {
    Expect.isFalse(r.containsPoint(Point(0, 1)));
    Expect.isFalse(r.containsRectangle(Rectangle(0, 1, 2, 3)));
    Expect.isFalse(r.intersects(Rectangle(0, 1, 2, 3)));
    Expect.isTrue(r.right.isNaN);
    Expect.isTrue(r.width.isNaN);
  }
}

testNaNHeight() {
  var rectangles = [
    const Rectangle(0, 1, 2, double.nan),
    MutableRectangle(0, 1, 2, double.nan),
    Rectangle.fromPoints(Point(0, 1), Point(2, double.nan)),
    MutableRectangle.fromPoints(Point(0, 1), Point(2, double.nan)),
  ];
  for (var r in rectangles) {
    Expect.isFalse(r.containsPoint(Point(0, 1)));
    Expect.isFalse(r.containsRectangle(Rectangle(0, 1, 2, 3)));
    Expect.isFalse(r.intersects(Rectangle(0, 1, 2, 3)));
    Expect.isTrue(r.bottom.isNaN);
    Expect.isTrue(r.height.isNaN);
  }
}
