示例#1
0
        public void CancellingTurns_RemovedFromSequence(string orig, string final)
        {
            var    move = TurnSequence.Parse(orig);
            string s    = move.ToString();

            Assert.Equal(final, s);
        }
示例#2
0
        public void ParseSeriesRoundTrip(string expected)
        {
            var    turns  = TurnSequence.Parse(expected);
            string actual = turns.ToString();

            Assert.Equal(expected, actual);
        }
示例#3
0
        public void CanSolveCross(string mixItUpMove)
        {
            var mixItUpTurns = TurnSequence.Parse(mixItUpMove);
            var cube         = new Cube().Apply(mixItUpTurns);

            // When: get cross solution and apply it
            var solution = Solver.GetCrossSolution(cube);

            cube = cube.Apply(solution);

            // Then: cross is solved
            Assert.True(EdgeConstraint.Stationary(new Edge(Side.Front, Side.Down)).IsMatch(cube));
            Assert.True(EdgeConstraint.Stationary(new Edge(Side.Right, Side.Down)).IsMatch(cube));
            Assert.True(EdgeConstraint.Stationary(new Edge(Side.Back, Side.Down)).IsMatch(cube));
            Assert.True(EdgeConstraint.Stationary(new Edge(Side.Left, Side.Down)).IsMatch(cube));
        }
示例#4
0
        [InlineData("RU'R'UF'U2FUF'U2F")]          // RU'R'dR'U2RUR'U2R
        public void F2L(string knownSolution)
        {
            var solveTurns = TurnSequence.Parse(knownSolution);
            var cube       = new Cube().Apply(solveTurns.Reverse());

            Assert.True(cube.Apply(solveTurns).IsSolved, "not solved");

            var pair = new FtlSlot(Side.Front, Side.Right);

            var prepSolution = Solver.PlaceSingleFtlPairFromTop(pair, cube);

            cube = cube.Apply(prepSolution);

            Assert_F2LSolved(cube);
            Assert_CrossSolved(cube);
        }