public void TestDetectMovingDown()
        {
            Assert.IsFalse(ML.DetectMovingDown(null));

            var notD1 = new int[32] {
                -1, -1, -3, -15, -1, 1, 0, -1, -1, 1, -10, -18, 0, 0, 1, 0, 0, -1, -7, 0, 7, 0, 1, 1, 0, -1, 0, -1, 0, 0, 1, 0
            };
            var notD2 = new int[32] {
                0, 1, 1, 2, 0, -1, 0, 0, 0, 1, 18, 23, -2, -1, -1, -1, 0, 1, 7, -12, -10, -1, 0, 0, 0, -1, 1, 0, -1, -1, -1, 1
            };
            var notD3 = new int[32] {
                0, 0, 0, 1, 12, 24, 2, 1, 1, 0, 0, 3, -20, 29, 4, 1, 0, 0, -3, 3, -10, 9, 2, 1, 0, 0, 0, 0, 0, 1, 1, 0
            };

            Assert.IsFalse(ML.DetectMovingDown(notD1));
            Assert.IsFalse(ML.DetectMovingDown(notD2));
            Assert.IsFalse(ML.DetectMovingDown(notD3));

            var movD1 = new int[32] {
                0, -1, -2, -9, 0, -1, 0, -1, -1, -2, -12, -22, 0, 0, 0, 0, 0, 0, -6, 3, 5, 1, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0
            };
            var movD2 = new int[32] {
                0, 0, 0, 1, -12, 24, 2, 1, 1, 0, 0, 3, -20, 29, 4, 1, 0, 0, -3, 3, 10, 9, 2, 1, 0, 0, 0, 0, 0, 1, 1, 0
            };
            var movD3 = new int[32] {
                0, 1, 1, 2, 0, -1, 0, 0, 0, 1, 18, 23, -2, -1, -1, -1, 0, 1, 7, -12, -10, -1, -2, 0, 0, -1, 1, 0, -1, -1, 20, 1
            };

            Assert.IsTrue(ML.DetectMovingDown(movD1));
            Assert.IsTrue(ML.DetectMovingDown(movD2));
            Assert.IsTrue(ML.DetectMovingDown(movD3));
        }