Ejemplo n.º 1
0
        public void IsDivisibleTest()
        {
            // Positive test
            ExtentRectangle rDivisible1 = new ExtentRectangle(5, 6, -1, 1, 100, 100);

            Assert.IsTrue(rDivisible1.IsDivisible());

            //Negative Test
            ExtentRectangle rNotDivisible1 = new ExtentRectangle(5, 6, -2, 2, 100, 100);

            Assert.IsFalse(rNotDivisible1.IsDivisible());

            // Positive test
            ExtentRectangle rDivisible2 = new ExtentRectangle(5.1m, 6.1m, -0.1m, 0.1m, 100, 100);

            Assert.IsTrue(rDivisible2.IsDivisible());

            //Negative Test
            ExtentRectangle rNotDivisible2 = new ExtentRectangle(5.1m, 6.1m, -0.1m, 0.2m, 100, 100);

            Assert.IsFalse(rNotDivisible2.IsDivisible());

            //Negative Test
            ExtentRectangle rNotDivisible3 = new ExtentRectangle(5.1m, 6.1m, -0.2m, 0.1m, 100, 100);

            Assert.IsFalse(rNotDivisible3.IsDivisible());

            // Positive Test for floating point weirdness
            ExtentRectangle rDivisible4 = new ExtentRectangle(5.0999999999999999999999999999999999999999999m, 6.1m, -0.1m, 0.1m, 100, 100);

            Assert.IsTrue(rDivisible4.IsDivisible());

            // Negative Test for floating point weirdness
            ExtentRectangle rNotDivisible4 = new ExtentRectangle(5.0999999999999999999999999999999999999999999m, 6.1m, -0.2m, 0.1m, 100, 100);

            Assert.IsFalse(rNotDivisible4.IsDivisible());
        }
Ejemplo n.º 2
0
        public void MakeDivisibleTest()
        {
            ///
            /// Here's an already divisible raster. Make sure we don't change it.
            ///
            ExtentRectangle eA1 = new ExtentRectangle(5.1m, 6.4m, 0.1m, 0.2m, 100, 100);

            // This should do nothing
            ExtentRectangle eA1result = eA1.GetDivisibleExtent();

            Assert.AreEqual(eA1result.Top, eA1.Top);
            Assert.AreEqual(eA1result.Bottom, eA1.Bottom);
            Assert.AreEqual(eA1result.Left, eA1.Left);
            Assert.AreEqual(eA1result.Right, eA1.Right);
            Assert.AreEqual(eA1result.Rows, eA1.Rows);
            Assert.AreEqual(eA1result.Cols, eA1.Cols);
            Assert.IsTrue(eA1result.Width >= eA1.Width);
            Assert.IsTrue(eA1result.Height >= eA1.Height);
            Assert.IsTrue(eA1result.IsDivisible());

            ///
            /// NEGStep 1: Negative Cell Height, Positive Cell Width
            ///
            ExtentRectangle eNotDivisible = new ExtentRectangle(5.09m, 6.5m, -0.1m, 0.2m, 100, 100);

            Assert.IsFalse(eNotDivisible.IsDivisible());

            // Now Make it divisible in the right way
            ExtentRectangle eDivisible = eNotDivisible.GetDivisibleExtent();

            Assert.AreEqual(eDivisible.Top, 5.1m);
            Assert.AreEqual(eDivisible.Bottom, -5.0m);
            Assert.AreEqual(eDivisible.Left, 6.4m);
            Assert.AreEqual(eDivisible.Right, 26.6m);
            Assert.AreEqual(eDivisible.Rows, 101);
            Assert.AreEqual(eDivisible.Cols, 101);
            Assert.IsTrue(eDivisible.Width >= eNotDivisible.Width);
            Assert.IsTrue(eDivisible.Height >= eNotDivisible.Height);
            Assert.IsTrue(eDivisible.IsDivisible());

            ///
            /// NEGStep 1: Negative Cell Height, Positive Cell Width
            ///
            ExtentRectangle eNegStep1NonDivisible = new ExtentRectangle(5.09m, 6.39m, -0.1m, 0.2m, 100, 100);

            Assert.IsFalse(eNegStep1NonDivisible.IsDivisible());

            //Now Make it divisible in the right way
            ExtentRectangle eNegStep1 = eNegStep1NonDivisible.GetDivisibleExtent();

            Assert.AreEqual(eNegStep1.Top, 5.1m);
            Assert.AreEqual(eNegStep1.Bottom, -5.0m);
            Assert.AreEqual(eNegStep1.Left, 6.2m);
            Assert.AreEqual(eNegStep1.Right, 26.4m);
            Assert.AreEqual(eNegStep1.Rows, 101);
            Assert.AreEqual(eNegStep1.Cols, 101);
            Assert.IsTrue(eNegStep1.Width >= eNegStep1NonDivisible.Width);
            Assert.IsTrue(eNegStep1.Height >= eNegStep1NonDivisible.Height);
            Assert.IsTrue(eNegStep1.IsDivisible());

            ///
            /// NEGStep 2: Positive Cell Height, Negative Cell Width
            ///
            ExtentRectangle eNegStep2NonDivisible = new ExtentRectangle(5.09m, 6.39m, 0.1m, -0.2m, 100, 100);

            Assert.IsFalse(eNegStep2NonDivisible.IsDivisible());

            //Now Make it divisible in the right way
            ExtentRectangle eNegStep2 = eNegStep2NonDivisible.GetDivisibleExtent();

            Assert.AreEqual(eNegStep2.Top, 5.0m);
            Assert.AreEqual(eNegStep2.Bottom, 15.1m);
            Assert.AreEqual(eNegStep2.Left, 6.4m);
            Assert.AreEqual(eNegStep2.Right, -13.8m);
            Assert.AreEqual(eNegStep2.Rows, 101);
            Assert.AreEqual(eNegStep2.Cols, 101);
            Assert.IsTrue(eNegStep2.Width >= eNegStep2NonDivisible.Width);
            Assert.IsTrue(eNegStep2.Height >= eNegStep2NonDivisible.Height);
            Assert.IsTrue(eNegStep2.IsDivisible());

            ///
            /// NegWorldNEGStep 1: Negative Coordinates, Negative Cell Height, Positive Cell Width
            ///
            ExtentRectangle eNWNegStep1NonDivisible = new ExtentRectangle(-5.09m, -6.39m, -0.1m, 0.2m, 100, 100);

            Assert.IsFalse(eNWNegStep1NonDivisible.IsDivisible());

            //Now Make it divisible in the right way
            ExtentRectangle eNWNegStep1 = eNWNegStep1NonDivisible.GetDivisibleExtent();

            Assert.AreEqual(eNWNegStep1.Top, -5.0m);
            Assert.AreEqual(eNWNegStep1.Bottom, -15.1m);
            Assert.AreEqual(eNWNegStep1.Left, -6.4m);
            Assert.AreEqual(eNWNegStep1.Right, 13.8m);
            Assert.AreEqual(eNWNegStep1.Rows, 101);
            Assert.AreEqual(eNWNegStep1.Cols, 101);
            Assert.IsTrue(eNWNegStep1.Width >= eNWNegStep1NonDivisible.Width);
            Assert.IsTrue(eNWNegStep1.Height >= eNWNegStep1NonDivisible.Height);
            Assert.IsTrue(eNWNegStep1.IsDivisible());

            ///
            /// NegWorldNEGStep 2: Negative Coordinates, Positive Cell Height, Negative Cell Width
            ///
            ExtentRectangle eNWNegStep2NonDivisible = new ExtentRectangle(-5.09m, -6.39m, 0.1m, -0.2m, 100, 100);

            Assert.IsFalse(eNWNegStep2NonDivisible.IsDivisible());

            //Now Make it divisible in the right way
            ExtentRectangle eNWNegStep2 = eNWNegStep2NonDivisible.GetDivisibleExtent();

            Assert.AreEqual(eNWNegStep2.Top, -5.1m);
            Assert.AreEqual(eNWNegStep2.Bottom, 5.0m);
            Assert.AreEqual(eNWNegStep2.Left, -6.2m);
            Assert.AreEqual(eNWNegStep2.Right, -26.4m);
            Assert.AreEqual(eNWNegStep2.Rows, 101);
            Assert.AreEqual(eNWNegStep2.Cols, 101);
            Assert.IsTrue(eNWNegStep2.Width >= eNWNegStep2NonDivisible.Width);
            Assert.IsTrue(eNWNegStep2.Height >= eNWNegStep2NonDivisible.Height);
            Assert.IsTrue(eNWNegStep2.IsDivisible());


            // GCD user reported raster issue 2017/01/15 by P
            ExtentRectangle user1_src = new ExtentRectangle(114.58069247m, 122.938517551m, -0.003m, 0.003m, 4410, 11487);

            Assert.IsFalse(user1_src.IsDivisible());

            ExtentRectangle user1_out = user1_src.GetDivisibleExtent();

            Assert.AreEqual(user1_out.Top, 114.582m);
            Assert.AreEqual(user1_out.Bottom, 101.349m);
            Assert.AreEqual(user1_out.Left, 122.937m);
            Assert.AreEqual(user1_out.Right, 157.401m);
            Assert.AreEqual(user1_out.Rows, 4411);
            Assert.AreEqual(user1_out.Cols, 11488);
            Assert.IsTrue(user1_out.Width >= user1_src.Width);
            Assert.IsTrue(user1_out.Height >= user1_src.Height);
            Assert.IsTrue(user1_out.Rows >= user1_src.Rows);
            Assert.IsTrue(user1_out.Cols >= user1_src.Cols);
            Assert.IsTrue(user1_out.IsDivisible());

            // GCD user reported raster issue 2017/11/15 by AT
            ExtentRectangle user2_src = new ExtentRectangle(5629639.30575m, 558111.051499m, -1m, 1m, 47, 46);

            Assert.IsFalse(user2_src.IsDivisible());

            ExtentRectangle user2_out = user2_src.GetDivisibleExtent();

            Assert.AreEqual(user2_out.Top, 5629640m);
            Assert.AreEqual(user2_out.Bottom, 5629592m);
            Assert.AreEqual(user2_out.Left, 558111m);
            Assert.AreEqual(user2_out.Right, 558158m);
            Assert.AreEqual(user2_out.Rows, 48);
            Assert.AreEqual(user2_out.Cols, 47);
            Assert.IsTrue(user2_out.Width >= user2_src.Width);
            Assert.IsTrue(user2_out.Height >= user2_src.Height);
            Assert.IsTrue(user2_out.Rows >= user2_src.Rows);
            Assert.IsTrue(user2_out.Cols >= user2_src.Cols);
            Assert.IsTrue(user2_out.IsDivisible());

            // GCD user reported raster issue 2018/09/04 by M
            ExtentRectangle user3_src = new ExtentRectangle(7111409.27802m, 445073.27318m, -0.05m, 0.05m, 11800, 10160);

            Assert.IsFalse(user3_src.IsDivisible());

            ExtentRectangle user3_out = user3_src.GetDivisibleExtent();

            Assert.AreEqual(user3_out.Top, 7111409.3m);
            Assert.AreEqual(user3_out.Bottom, 7110819.25m);
            Assert.AreEqual(user3_out.Left, 445073.25m);
            Assert.AreEqual(user3_out.Right, 445581.30m);
            Assert.AreEqual(user3_out.Rows, 11801);
            Assert.AreEqual(user3_out.Cols, 10161);
            Assert.IsTrue(user3_out.Width >= user3_src.Width);
            Assert.IsTrue(user3_out.Height >= user3_src.Height);
            Assert.IsTrue(user3_out.Rows >= user3_src.Rows);
            Assert.IsTrue(user3_out.Cols >= user3_src.Cols);
            Assert.IsTrue(user3_out.IsDivisible());

            // Sulphur Creek Sanity Check
            ExtentRectangle user4_src = new ExtentRectangle(592252.5m, 1958980.5m, -0.5m, 0.5m, 583, 413);

            ExtentRectangle user4_out = user4_src.GetDivisibleExtent();

            Assert.AreEqual(user4_out.Top, 592252.5m);
            Assert.AreEqual(user4_out.Bottom, 591961m);
            Assert.AreEqual(user4_out.Left, 1958980.5m);
            Assert.AreEqual(user4_out.Right, 1959187m);
            Assert.AreEqual(user4_out.Rows, 583);
            Assert.AreEqual(user4_out.Cols, 413);
            Assert.IsTrue(user4_out.Width >= user4_src.Width);
            Assert.IsTrue(user4_out.Height >= user4_src.Height);
            Assert.IsTrue(user4_out.Rows >= user4_src.Rows);
            Assert.IsTrue(user4_out.Cols >= user4_src.Cols);
            Assert.IsTrue(user4_out.IsDivisible());
        }