public void RasterMapperConstructorTest() { RasterMapper mapper = new RasterMapper(RasterMapMode.ValueIsArea, MatrixFactory.CreateIdentity(4)); Assert.AreEqual(RasterMapMode.ValueIsArea, mapper.Mode); Assert.AreEqual(MatrixFactory.CreateIdentity(4), mapper.RasterTransformation); Assert.AreEqual(MatrixFactory.CreateIdentity(4), mapper.GeometryTransformation); Assert.AreEqual(1, mapper.ColumnSize); Assert.AreEqual(1, mapper.RowSize); Assert.AreEqual(new CoordinateVector(1, 0), mapper.ColumnVector); Assert.AreEqual(new CoordinateVector(0, 1), mapper.RowVector); Assert.AreEqual(new CoordinateVector(1, 1, 1), mapper.Scale); Assert.AreEqual(Coordinate.Empty, mapper.Translation); // exceptions Assert.Throws <ArgumentNullException>(() => new RasterMapper(RasterMapMode.ValueIsArea, null)); Assert.Throws <ArgumentException>(() => new RasterMapper(RasterMapMode.ValueIsArea, new Matrix(1, 4))); Assert.Throws <ArgumentException>(() => new RasterMapper(RasterMapMode.ValueIsArea, new Matrix(4, 1))); Assert.Throws <ArgumentException>(() => new RasterMapper(RasterMapMode.ValueIsArea, new Matrix(4, 4, Double.NaN))); Assert.Throws <ArgumentException>(() => new RasterMapper(RasterMapMode.ValueIsArea, new Matrix(4, 4))); Assert.Throws <ArgumentException>(() => { Matrix matrix = new Matrix(4, 4); matrix[3, 0] = matrix[3, 1] = matrix[3, 2] = matrix[3, 3] = 1; new RasterMapper(RasterMapMode.ValueIsArea, matrix); }); Assert.Throws <NotSupportedException>(() => new RasterMapper(RasterMapMode.ValueIsArea, MatrixFactory.CreateDiagonal(0, 0, 0, 1))); }
public void RasterMapperFromMapperTest() { // matrix from identity RasterMapper sourceMapper = new RasterMapper(RasterMapMode.ValueIsArea, MatrixFactory.CreateIdentity(4)); RasterMapper mapper = RasterMapper.FromMapper(sourceMapper, MatrixFactory.CreateIdentity(4)); Assert.AreEqual(RasterMapMode.ValueIsArea, mapper.Mode); Assert.AreEqual(MatrixFactory.CreateIdentity(4), mapper.GeometryTransformation); // coordinate and vector from identity mapper = RasterMapper.FromMapper(sourceMapper, new Coordinate(300, 1000, 0), new CoordinateVector(10, 3)); Assert.AreEqual(RasterMapMode.ValueIsArea, mapper.Mode); Assert.AreEqual(new CoordinateVector(10, 0), mapper.ColumnVector); Assert.AreEqual(new CoordinateVector(0, 3), mapper.RowVector); Assert.AreEqual(new Coordinate(300, 1000), mapper.Translation); // all values from identity mapper = RasterMapper.FromMapper(sourceMapper, 300, 1000, 0, 10, 3, 0); Assert.AreEqual(RasterMapMode.ValueIsArea, mapper.Mode); Assert.AreEqual(new CoordinateVector(10, 0), mapper.ColumnVector); Assert.AreEqual(new CoordinateVector(0, 3), mapper.RowVector); Assert.AreEqual(new Coordinate(300, 1000), mapper.Translation); // exceptions Assert.Throws <ArgumentNullException>(() => RasterMapper.FromMapper(mapper, null)); Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, new Matrix(1, 4))); Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, new Matrix(4, 1))); Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, new Matrix(4, 4, Double.NaN))); Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, new Matrix(4, 4))); Assert.Throws <ArgumentException>(() => { Matrix matrix = new Matrix(4, 4); matrix[3, 0] = matrix[3, 1] = matrix[3, 2] = matrix[3, 3] = 1; RasterMapper.FromMapper(mapper, matrix); }); Assert.Throws <NotSupportedException>(() => RasterMapper.FromMapper(mapper, MatrixFactory.CreateDiagonal(0, 0, 0, 1))); Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, Coordinate.Undefined, new CoordinateVector(0, 1, 0))); Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, Coordinate.Empty, new CoordinateVector(Double.NaN, Double.NaN, Double.NaN))); Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, Coordinate.Empty, new CoordinateVector(0, 1, 0))); Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, Coordinate.Empty, new CoordinateVector(1, 0, 0))); Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, Double.NaN, 0, 0, 1, 0, 0)); Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, 0, Double.NaN, 0, 1, 0, 0)); Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, 0, 0, Double.NaN, 1, 0, 0)); Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, 0, 0, 0, 1, 0, 0)); Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, 0, 0, 0, 0, 1, 0)); Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, 0, 0, 0, Double.NaN, 1, 0)); Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, 0, 0, 0, 1, Double.NaN, 0)); Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, 0, 0, 0, 1, 1, Double.NaN)); }
public void RasterMapperFromTransformationTest() { // matrix RasterMapper mapper = RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, MatrixFactory.CreateIdentity(4)); Assert.AreEqual(RasterMapMode.ValueIsArea, mapper.Mode); Assert.AreEqual(MatrixFactory.CreateIdentity(4), mapper.GeometryTransformation); // coordinate and vector mapper = RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, new Coordinate(300, 1000, 0), new CoordinateVector(10, 3)); Assert.AreEqual(new Coordinate(300, 1000), mapper.Translation); Assert.AreEqual(RasterMapMode.ValueIsArea, mapper.Mode); Assert.AreEqual(10, mapper.ColumnSize); Assert.AreEqual(3, mapper.RowSize); Assert.AreEqual(new CoordinateVector(10, 0), mapper.ColumnVector); Assert.AreEqual(new CoordinateVector(0, 3), mapper.RowVector); // all values mapper = RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, 300, 1000, 0, 10, 3, 0); Assert.AreEqual(new Coordinate(300, 1000), mapper.Translation); Assert.AreEqual(RasterMapMode.ValueIsArea, mapper.Mode); Assert.AreEqual(10, mapper.ColumnSize); Assert.AreEqual(3, mapper.RowSize); Assert.AreEqual(new CoordinateVector(10, 0), mapper.ColumnVector); Assert.AreEqual(new CoordinateVector(0, 3), mapper.RowVector); // exceptions Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, Coordinate.Undefined, new CoordinateVector(0, 1, 0))); Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, Coordinate.Empty, new CoordinateVector(Double.NaN, Double.NaN, Double.NaN))); Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, Coordinate.Empty, new CoordinateVector(0, 1, 0))); Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, Coordinate.Empty, new CoordinateVector(1, 0, 0))); Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, Double.NaN, 0, 0, 1, 0, 0)); Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, 0, Double.NaN, 0, 1, 0, 0)); Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, 0, 0, Double.NaN, 1, 0, 0)); Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, 0, 0, 0, 1, 0, 0)); Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, 0, 0, 0, 0, 1, 0)); Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, 0, 0, 0, Double.NaN, 1, 0)); Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, 0, 0, 0, 1, Double.NaN, 0)); Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, 0, 0, 0, 1, 1, Double.NaN)); }
public void RasterMapperGetHashCodeTest() { RasterMapper mapper1 = new RasterMapper(RasterMapMode.ValueIsArea, MatrixFactory.CreateIdentity(4)); RasterMapper mapper2 = new RasterMapper(RasterMapMode.ValueIsArea, MatrixFactory.CreateIdentity(4)); Assert.AreEqual(mapper1.GetHashCode(), mapper2.GetHashCode()); mapper2 = new RasterMapper(RasterMapMode.ValueIsCoordinate, MatrixFactory.CreateIdentity(4)); Assert.AreNotEqual(mapper1.GetHashCode(), mapper2.GetHashCode()); mapper2 = RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, new Coordinate(300, 1000, 0), new CoordinateVector(10, 3)); Assert.AreNotEqual(mapper1.GetHashCode(), mapper2.GetHashCode()); }
public void RasterMapperEqualsTest() { RasterMapper mapper1 = new RasterMapper(RasterMapMode.ValueIsArea, MatrixFactory.CreateIdentity(4)); RasterMapper mapper2 = new RasterMapper(RasterMapMode.ValueIsArea, MatrixFactory.CreateIdentity(4)); Assert.IsTrue(mapper1.Equals(mapper1)); Assert.IsFalse(mapper1.Equals(null)); Assert.IsTrue(mapper1.Equals(mapper2)); Assert.IsTrue(mapper1.Equals((Object)mapper1)); Assert.IsFalse(mapper1.Equals((Object)null)); Assert.IsTrue(mapper1.Equals((Object)mapper2)); mapper2 = new RasterMapper(RasterMapMode.ValueIsCoordinate, MatrixFactory.CreateIdentity(4)); Assert.IsFalse(mapper1.Equals(mapper2)); Assert.IsFalse(mapper1.Equals((Object)mapper2)); mapper2 = RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, new Coordinate(300, 1000, 0), new CoordinateVector(10, 3)); Assert.IsFalse(mapper1.Equals(mapper2)); Assert.IsFalse(mapper1.Equals((Object)mapper2)); }
public void MatrixComputationsEigenvaluesTest() { // first matrix Matrix matrix = new Matrix(new[, ] { { 5, 4, 1.3 }, { 4, 8.7, 2 }, { 1.3, 2, 0 } }); Double[] expected = new Double[3] { 11.7417, 2.44301, -0.484678 }; Double[] result = MatrixComputations.Eigenvalues(matrix); Array.Sort(expected); Array.Sort(result); result.Length.ShouldBe(expected.Length); for (Int32 index = 0; index < result.Length; index++) { result[index].ShouldBe(expected[index], 0.001); } // second matrix matrix = new Matrix(new[, ] { { 5, 8, 7.6, 2 }, { 8, 42, 0, 1 }, { 7.6, 0, 3, 5 }, { 2, 1, 5, 22.4 } }); expected = new Double[4] { 43.8386, 24.094, 8.97766, -4.51021 }; result = MatrixComputations.Eigenvalues(matrix); Array.Sort(expected); Array.Sort(result); result.Length.ShouldBe(expected.Length); for (Int32 index = 0; index < result.Length; index++) { result[index].ShouldBe(expected[index], 0.001); } // identity matrix matrix = MatrixFactory.CreateIdentity(4); expected = new Double[4] { 1, 1, 1, 1 }; result = MatrixComputations.Eigenvalues(matrix); Array.Sort(expected); Array.Sort(result); result.Length.ShouldBe(expected.Length); for (Int32 index = 0; index < result.Length; index++) { result[index].ShouldBe(expected[index], 0.001); } // exceptions Should.Throw <ArgumentNullException>(() => MatrixComputations.Eigenvalues(null)); }