Exemplo n.º 1
0
        public void RotateFrontClockwiseFourTimesReturnsToTheStart()
        {
            var cube = new Cube(new Face(Colour.Red, Colour.Green, Colour.Blue,
                                         Colour.Orange, Colour.Green, Colour.Yellow,
                                         Colour.Red, Colour.White, Colour.Blue),
                                new Face(Colour.Red), new Face(Colour.Red), new Face(Colour.Red), new Face(Colour.Red), new Face(Colour.Red));

            var rotatedCube = cube
                              .RotateFront(Rotation.Clockwise)
                              .RotateFront(Rotation.Clockwise)
                              .RotateFront(Rotation.Clockwise)
                              .RotateFront(Rotation.Clockwise);

            using var _ = new AssertionScope();
            AssertSideIs(rotatedCube.Front,
                         Colour.Red, Colour.Green, Colour.Blue,
                         Colour.Orange, Colour.Green, Colour.Yellow,
                         Colour.Red, Colour.White, Colour.Blue);
            rotatedCube.Rotations.Should().Be(4);
        }
Exemplo n.º 2
0
        public void RotateFrontAntiClockwiseThenFrontFaceShouldBeRotated()
        {
            /*
             *   R O R    R G B
             *   W G G => O G Y
             *   B Y B    R W B
             */

            var cube = new Cube(new Face(Colour.Red, Colour.Orange, Colour.Red,
                                         Colour.White, Colour.Green, Colour.Green,
                                         Colour.Blue, Colour.Yellow, Colour.Blue), new Face(Colour.Red), new Face(Colour.Red), new Face(Colour.Red), new Face(Colour.Red), new Face(Colour.Red));

            var rotatedCube = cube.RotateFront(Rotation.Anticlockwise);

            using var _ = new AssertionScope();
            AssertSideIs(rotatedCube.Front, Colour.Red, Colour.Green, Colour.Blue,
                         Colour.Orange, Colour.Green, Colour.Yellow,
                         Colour.Red, Colour.White, Colour.Blue
                         );
            rotatedCube.Rotations.Should().Be(1);
        }
Exemplo n.º 3
0
        public void RotateFrontClockwiseFrontShouldBe()
        {
            /*
             *  R G B     R O R
             *  O G Y  => W G G
             *  R W B     B Y B
             */

            var cube = new Cube(new Face(Colour.Red, Colour.Green, Colour.Blue,
                                         Colour.Orange, Colour.Green, Colour.Yellow,
                                         Colour.Red, Colour.White, Colour.Blue), new Face(Colour.Red), new Face(Colour.Red), new Face(Colour.Red), new Face(Colour.Red), new Face(Colour.Red));

            var rotatedCube = cube.RotateFront(Rotation.Clockwise);

            using var _ = new AssertionScope();
            AssertSideIs(rotatedCube.Front,
                         Colour.Red, Colour.Orange, Colour.Red,
                         Colour.White, Colour.Green, Colour.Green,
                         Colour.Blue, Colour.Yellow, Colour.Blue);

            rotatedCube.Rotations.Should().Be(1);
        }
Exemplo n.º 4
0
        public void RotateFrontClockwiseAdjacentFacesShouldBeRotated()
        {
            //         W W W                           W W W
            //         W W W                           W W W
            //         B O G                           O B G
            //         - - -                           - - -
            // G G G | R R R | R B B           G G O | R R R | B B B
            // G G B | R R R | G B B     =>>   G G R | R R R | O B B
            // G G O | R R R | B B B           G G G | R R R | G B B
            //         - - -                           - - -
            //         O R G                           B G R
            //         Y Y Y                           Y Y Y
            //         Y Y Y                           Y Y Y
            //         - - -                           - - -

            var front  = new Face(Colour.Red);
            var left   = CreateFace("GGGGGBGGO");
            var right  = CreateFace("RBBGBBBBB");
            var top    = CreateFace("WWWWWWBOG");
            var bottom = CreateFace("ORGYYYYYY");
            var back   = new Face(Colour.Yellow);

            var cube = new Cube(front, back, left, right, top, bottom);

            var rotatedCube = cube.RotateFront(Rotation.Clockwise);

            AssertSideIsComplete(rotatedCube.Front, Colour.Red);
            AssertSideIsComplete(rotatedCube.Back, Colour.Yellow);
            rotatedCube.Should().BeEquivalentTo(new
            {
                Left   = CreateFace("GGOGGRGGG"),
                Right  = CreateFace("BBBOBBGBB"),
                Top    = CreateFace("WWWWWWOBG"),
                Bottom = CreateFace("BGRYYYYYY")
            });

            rotatedCube.Rotations.Should().Be(1);
        }
Exemplo n.º 5
0
        public void RotateFrontClockwiseBackShouldBeSame(Rotation direction)
        {
            /*
             *  R G B
             *  O G Y  => Same
             *  R W B
             */

            var cube = new Cube(new Face(Colour.Red),
                                new Face(Colour.Red, Colour.Green, Colour.Blue,
                                         Colour.Orange, Colour.Green, Colour.Yellow,
                                         Colour.Red, Colour.White, Colour.Blue), new Face(Colour.Red), new Face(Colour.Red), new Face(Colour.Red), new Face(Colour.Red));

            var rotatedCube = cube.RotateFront(direction);

            using var _ = new AssertionScope();
            AssertSideIs(rotatedCube.Back,
                         Colour.Red, Colour.Green, Colour.Blue,
                         Colour.Orange, Colour.Green, Colour.Yellow,
                         Colour.Red, Colour.White, Colour.Blue);

            rotatedCube.Rotations.Should().Be(1);
        }