public void ClosestBoundaryPointTest()
        {
            int Constrain(int location, int lowerBound, int upperBound)
            {
                if (location < lowerBound)
                {
                    return(lowerBound);
                }
                else if (location < upperBound)
                {
                    return(location);
                }
                else
                {
                    return(upperBound - 1);
                }
            }

            var rect = new Rectangle(100, 200, 300, 400);

            for (var x = rect.Left - 200; x < rect.Right + 200; x++)
            {
                var xExpected = Constrain(x, rect.Left, rect.Right);

                for (var y = rect.Top - 200; y < rect.Bottom + 200; y++)
                {
                    var p         = new Point(x, y);
                    var actual    = GeometryUtil.ClosestBoundaryPoint(rect, p);
                    var yExpected = Constrain(y, rect.Top, rect.Bottom);

                    Assert.AreEqual(new Point(xExpected, yExpected), actual, $"{x}, {y}");
                }
            }
        }