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()); }
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()); }