public void TouchBoundingBox_union_negative_values()
        {
            TouchPathBoundingBox target = new TouchPathBoundingBox()
            {
                MaxHeight = 4,
                MaxWidth = 3,
                MinHeight = 2,
                MinWidth = 1
            };
            TouchPathBoundingBox input = new TouchPathBoundingBox()
            {
                MaxHeight = -9,
                MaxWidth = -8,
                MinHeight = -7,
                MinWidth = -6
            };
            target.Union(input);
            double expected_max_height = 4;
            double expected_max_width = 3;
            double expected_min_height = -7;
            double expected_min_width = -6;

            double actual_min_height = target.MinHeight;
            double actual_max_height = target.MaxHeight;
            double actual_min_width = target.MinWidth;
            double actual_max_width = target.MaxWidth;

            Assert.AreEqual<double>(expected_max_height, actual_max_height);
            Assert.AreEqual<double>(expected_min_height, actual_min_height);
            Assert.AreEqual<double>(expected_max_width, actual_max_width);
            Assert.AreEqual<double>(expected_min_width, actual_min_width);
        }
        public void TouchBoundingBox_union_offset_gives_boundry()
        {
            TouchPathBoundingBox target = new TouchPathBoundingBox()
            {
                MaxHeight = 4,
                MaxWidth = 3,
                MinHeight = 2,
                MinWidth = 1
            };
            TouchPathBoundingBox input = new TouchPathBoundingBox()
            {
                MaxHeight = 9,
                MaxWidth = 8,
                MinHeight = 7,
                MinWidth = 6
            };
            target.Union(input);
            double expected_max_height = 9;
            double expected_max_width = 8;
            double expected_min_height = 2;
            double expected_min_width = 1;

            double actual_min_height = target.MinHeight;
            double actual_max_height = target.MaxHeight;
            double actual_min_width = target.MinWidth;
            double actual_max_width = target.MaxWidth;

            Assert.AreEqual<double>(expected_max_height, actual_max_height);
            Assert.AreEqual<double>(expected_min_height, actual_min_height);
            Assert.AreEqual<double>(expected_max_width, actual_max_width);
            Assert.AreEqual<double>(expected_min_width, actual_min_width);
        }
 public void TouchPathBoundingBox_union_null_throws_exception()
 {
     TouchPathBoundingBox target = new TouchPathBoundingBox();
     TouchPathBoundingBox value = null;
     target.Union(value);
 }
 public void TouchPathBoundingBox_union_different_type_throws_exception()
 {
     TouchPathBoundingBox target = new TouchPathBoundingBox();
     ClosedLoop value = new ClosedLoop();
     target.Union(value);
 }
        public void TouchBoundingBox_union_very_large_values()
        {
            TouchPathBoundingBox target = new TouchPathBoundingBox()
            {
                MaxHeight = 4,
                MaxWidth = 3,
                MinHeight = 2,
                MinWidth = 1
            };
            TouchPathBoundingBox input = new TouchPathBoundingBox()
            {
                MaxHeight = 1235146141234165,
                MaxWidth = 98709878783251,
                MinHeight = 3450987872198,
                MinWidth = 12348785123412
            };
            target.Union(input);
            double expected_max_height = 1235146141234165;
            double expected_max_width = 98709878783251;
            double expected_min_height = 2;
            double expected_min_width = 1;

            double actual_min_height = target.MinHeight;
            double actual_max_height = target.MaxHeight;
            double actual_min_width = target.MinWidth;
            double actual_max_width = target.MaxWidth;

            Assert.AreEqual<double>(expected_max_height, actual_max_height);
            Assert.AreEqual<double>(expected_min_height, actual_min_height);
            Assert.AreEqual<double>(expected_max_width, actual_max_width);
            Assert.AreEqual<double>(expected_min_width, actual_min_width);
        }
        public void TouchBoundingBox_union_superset_gives_superset()
        {
            TouchPathBoundingBox target = new TouchPathBoundingBox()
            {
                MaxHeight = 4,
                MaxWidth = 3,
                MinHeight = 2,
                MinWidth = 1
            };
            TouchPathBoundingBox input = new TouchPathBoundingBox()
            {
                MaxHeight = 5,
                MaxWidth = 6,
                MinHeight = 0,
                MinWidth = -1
            };
            target.Union(input);
            double expected_max_height = 5;
            double expected_max_width = 6;
            double expected_min_height = 0;
            double expected_min_width = -1;

            double actual_min_height = target.MinHeight;
            double actual_max_height = target.MaxHeight;
            double actual_min_width = target.MinWidth;
            double actual_max_width = target.MaxWidth;

            Assert.AreEqual<double>(expected_max_height, actual_max_height);
            Assert.AreEqual<double>(expected_min_height, actual_min_height);
            Assert.AreEqual<double>(expected_max_width, actual_max_width);
            Assert.AreEqual<double>(expected_min_width, actual_min_width);
        }