public void ShouldRemoveRedundantPositions() { var position1 = new Position // Should be kept { Coordinates = new Coordinates { X = new Coordinate(70), Y = new Coordinate(80) }, CoordinateSystem = new CoordinateSystem { Name = "System A - natural boundaries", SosiCode = 1000, BoundaryBox = new BoundaryBox { MinX = 50, MaxX = 100, MinY = 50, MaxY = 100 } } }; var position2 = new Position // Should be excluded { Coordinates = new Coordinates { X = new Coordinate(70), Y = new Coordinate(80) }, CoordinateSystem = new CoordinateSystem { Name = "System A - extended boundaries", SosiCode = 1000, BoundaryBox = new BoundaryBox { MinX = 0, MaxX = 150, MinY = 0, MaxY = 150 } } }; var position3 = new Position // Should be kept { Coordinates = new Coordinates { X = new Coordinate(80), Y = new Coordinate(70) }, CoordinateSystem = new CoordinateSystem { Name = "System A - natural boundaries", SosiCode = 1000, BoundaryBox = new BoundaryBox { MinX = 50, MaxX = 100, MinY = 50, MaxY = 100 } } }; var position4 = new Position // Should be excluded { Coordinates = new Coordinates { X = new Coordinate(80), Y = new Coordinate(70) }, CoordinateSystem = new CoordinateSystem { Name = "System A - extended boundaries", SosiCode = 1000, BoundaryBox = new BoundaryBox { MinX = 0, MaxX = 150, MinY = 0, MaxY = 150 } } }; var position5 = new Position // Should be kept { Coordinates = new Coordinates { X = new Coordinate(70), Y = new Coordinate(80) }, CoordinateSystem = new CoordinateSystem { Name = "System B - natural boundaries", SosiCode = 1001, BoundaryBox = new BoundaryBox { MinX = 50, MaxX = 100, MinY = 50, MaxY = 100 } } }; var position6 = new Position // Should be excluded { Coordinates = new Coordinates { X = new Coordinate(70), Y = new Coordinate(80) }, CoordinateSystem = new CoordinateSystem { Name = "System B - extended boundaries", SosiCode = 1001, BoundaryBox = new BoundaryBox { MinX = 0, MaxX = 150, MinY = 0, MaxY = 150 } } }; var position7 = new Position // Should be kept { Coordinates = new Coordinates { X = new Coordinate(80), Y = new Coordinate(70) }, CoordinateSystem = new CoordinateSystem { Name = "System B - natural boundaries", SosiCode = 1001, BoundaryBox = new BoundaryBox { MinX = 50, MaxX = 100, MinY = 50, MaxY = 100 } } }; var position8 = new Position // Should be excluded { Coordinates = new Coordinates { X = new Coordinate(80), Y = new Coordinate(70) }, CoordinateSystem = new CoordinateSystem { Name = "System B - extended boundaries", SosiCode = 1001, BoundaryBox = new BoundaryBox { MinX = 0, MaxX = 150, MinY = 0, MaxY = 150 } } }; var positions = new List <Position> { position1, position2, position3, position4, position5, position6, position7, position8 }; var expectedPositions = new List <Position> { position1, position3, position5, position7 }; PositionFinder.RemoveRedundantPositions(positions); PositionListsAreEqual(positions, expectedPositions).Should().BeTrue(); }