Exemple #1
0
        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);
        }
Exemple #2
0
        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);
         }
     }
 }