public void Collision_FloatingPointError_StillWorks() { var hitbox = new CollisionBox(-7.5f, -9f, 15, 21); hitbox.Name = "Test"; hitbox.Environment = true; hitbox.PushAway = true; _position.SetPosition(5f, 115.999992f); _collision.AddBox(hitbox); _collision.Message(new HitBoxMessage(EntityMock.Object, new List <CollisionBox>(), new HashSet <string>() { "Test" }, false)); var layer = new Mock <IScreenLayer>(); layer.SetupGet(l => l.Stage).Returns(Container); var tileset = new Common.Tileset() { TileSize = 16 }; var backTile = new Common.Tile(1, new Common.TileSprite(tileset)); var blankSquare = new MapSquare(layer.Object, backTile, 0, 0, 16); Screen.Setup(s => s.SquareAt(It.IsAny <float>(), It.IsAny <float>())).Returns(blankSquare); var blockTile = new Common.Tile(2, new Common.TileSprite(tileset)); blockTile.Properties = new Common.TileProperties() { Blocking = true }; var blockSquare = new MapSquare(layer.Object, blockTile, 0, 8, 16); Screen.Setup(s => s.SquareAt(It.IsInRange <float>(0, 16, Range.Inclusive), It.IsInRange <float>(128, 144, Range.Inclusive))).Returns(blockSquare); Assert.IsFalse(_collision.BlockBottom); Container.Tick(); Assert.IsTrue(_collision.BlockBottom); Container.Tick(); Assert.IsTrue(_collision.BlockBottom); Container.Tick(); Assert.IsTrue(_collision.BlockBottom); }