public void CancellingTurns_RemovedFromSequence(string orig, string final) { var move = TurnSequence.Parse(orig); string s = move.ToString(); Assert.Equal(final, s); }
public void ParseSeriesRoundTrip(string expected) { var turns = TurnSequence.Parse(expected); string actual = turns.ToString(); Assert.Equal(expected, actual); }
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)); }
[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); }