Пример #1
0
        public void TurningFaceClockwise_Moves1RowOfStickersOnAdjacentSides()
        {
            var cube = new Cube();

            Assert_IsSolved(cube);

            cube = cube.Apply(Turn.Parse("U"));

            Assert.Equal(Side.Right, cube[MovablePosition.Get(Side.Front, Side.Up)]);
            Assert.Equal(Side.Right, cube[MovablePosition.Get(Side.Front, Side.Up | Side.Left)]);
            Assert.Equal(Side.Right, cube[MovablePosition.Get(Side.Front, Side.Up | Side.Right)]);

            Assert.Equal(Side.Back, cube[MovablePosition.Get(Side.Right, Side.Up)]);
            Assert.Equal(Side.Back, cube[MovablePosition.Get(Side.Right, Side.Up | Side.Front)]);
            Assert.Equal(Side.Back, cube[MovablePosition.Get(Side.Right, Side.Up | Side.Back)]);

            Assert.Equal(Side.Left, cube[MovablePosition.Get(Side.Back, Side.Up)]);
            Assert.Equal(Side.Left, cube[MovablePosition.Get(Side.Back, Side.Up | Side.Right)]);
            Assert.Equal(Side.Left, cube[MovablePosition.Get(Side.Back, Side.Up | Side.Left)]);

            Assert.Equal(Side.Front, cube[MovablePosition.Get(Side.Left, Side.Up)]);
            Assert.Equal(Side.Front, cube[MovablePosition.Get(Side.Left, Side.Up | Side.Back)]);
            Assert.Equal(Side.Front, cube[MovablePosition.Get(Side.Left, Side.Up | Side.Front)]);

            Assert.False(cube.IsSolved);
        }
Пример #2
0
        public void SideHas9Squares(Side side)
        {
            var squares = MovablePosition.GetMovablePositionsForSide(side);

            Assert.Equal(8, squares.Length);

            // Center
            Assert.Equal(0, squares.Count(MovablePosition.IsCenter));

            // Edges
            MovablePosition[] edges = squares.Where(MovablePosition.IsEdge).ToArray();
            Assert.Equal(4, edges.Length);
            var adjacents = CubeGeometry.GetClockwiseAdjacentFaces(side);

            foreach (var adjacent in adjacents)
            {
                Assert.Contains(MovablePosition.Get(side, adjacent), edges);
            }

            // Corners
            MovablePosition[] corners = squares.Where(MovablePosition.IsCorner).ToArray();
            Assert.Equal(4, corners.Length);
            for (int i = 0; i < 4; ++i)
            {
                Assert.Contains(MovablePosition.Get(side, adjacents[i] | adjacents[(i + 1) % 4]), corners);
            }
        }
Пример #3
0
        static void Assert_SideIsSolved(Side side, Cube cube)
        {
            var positions = MovablePosition.GetMovablePositionsForSide(side);

            foreach (var pos in positions)
            {
                Assert.Equal(side, cube[pos]);
            }
        }
Пример #4
0
 static Cube()
 {
     _solvedStickers = new Side[48];
     foreach (var face in CubeGeometry.AllSides)
     {
         foreach (var pos in MovablePosition.GetMovablePositionsForSide(face))
         {
             _solvedStickers[pos.Index] = face;
         }
     }
 }
Пример #5
0
 public Side this[MovablePosition pos] {
     get { return(_stickers[pos.Index]); }
     set { _stickers[pos.Index] = value; }
 }