public void Can_do_single_rotate( NotationRotationNames rotationName, NotationRotationType rotationType, string line0, string line1, string line2, string line3, string line4, string line5, string line6, string line7, string line8) { var puzzle = Rotator.ApplyMove( Solved, new NotationMoveType(rotationName, rotationType)); PuzzleAssert.AssertSame(puzzle, line0, line1, line2, line3, line4, line5, line6, line7, line8); }
public void Can_do_two_rotates( NotationRotationNames rotationName1, NotationRotationType rotationType1, NotationRotationNames rotationName2, NotationRotationType rotationType2, string line0, string line1, string line2, string line3, string line4, string line5, string line6, string line7, string line8) { var puzzle = Rotator.ApplyMoves( Solved, new[] { new NotationMoveType(rotationName1, rotationType1), new NotationMoveType(rotationName2, rotationType2) }); PuzzleAssert.AssertSame(puzzle, line0, line1, line2, line3, line4, line5, line6, line7, line8); }
private static string FormatMoveName(NotationRotationNames rotationName) { switch (rotationName) { case NotationRotationNames.Right: return("R"); case NotationRotationNames.Left: return("L"); case NotationRotationNames.Up: return("U"); case NotationRotationNames.Down: return("D"); case NotationRotationNames.Front: return("F"); case NotationRotationNames.Back: return("B"); case NotationRotationNames.WideRight: return("r"); case NotationRotationNames.WideLeft: return("l"); case NotationRotationNames.WideUp: return("u"); case NotationRotationNames.WideDown: return("d"); case NotationRotationNames.WideFront: return("f"); case NotationRotationNames.WideBack: return("b"); case NotationRotationNames.MiddleE: return("E"); case NotationRotationNames.MiddleM: return("M"); case NotationRotationNames.MiddleS: return("S"); case NotationRotationNames.AllX: return("x"); case NotationRotationNames.AllY: return("y"); case NotationRotationNames.AllZ: return("z"); default: throw new InvalidOperationException(); } }
public NotationMoveType(NotationRotationNames name) : this(name, NotationRotationType.Clockwise) { }
public NotationMoveType With(NotationRotationNames rotationName) => new NotationMoveType(rotationName, this.Type);
public NotationMoveType(NotationRotationNames name, NotationRotationType type) { this.Name = name; this.Type = type; }
private static NotationRotationNames GetRandomRotationName(Random randomGenerator, NotationRotationNames lastRotation) { while (true) { var rotationName = randomGenerator.Next(12) + NotationRotationNames.Right; if (rotationName != lastRotation) { return(rotationName); } } }