public void ComputeFinalState_Successful(string inputStr, Rover[] expectedRovers)
        {
            var plateauRegistery = new PlateauRepository(new RectangularPlateau());
            var plateau          = plateauRegistery.ComputeFinalState(new Input {
                InputStr = inputStr
            });

            for (int i = 0; i < plateau.Rovers.Count; i++)
            {
                var actualRover = plateau.Rovers[i];
                expectedRovers[i].FinalCoordinates.Should().BeEquivalentTo(actualRover.FinalCoordinates);
                expectedRovers[i].FinalOrientation.Should().BeEquivalentTo(actualRover.FinalOrientation);
            }
        }
        public static async Task InitializeTest()
        {
            var contextDbConnectionString =
                ApplicationConfiguration.Instance.GetValue <string>("MarsRoverContext:DatabaseConnectionString");

            var roverDbContextBuilder = new DbContextOptionsBuilder <RoverContext>();

            roverDbContextBuilder.UseSqlServer(contextDbConnectionString);

            var roverRepository = new RoverRepository(
                new RoverContext(roverDbContextBuilder.Options));

            var plateauRepository = new PlateauRepository(
                new RoverContext(roverDbContextBuilder.Options));

            //Test Input:
            //5 5
            //1 2 N
            //LMLMLMLMM
            //3 3 E
            //MMRMMRMRRM
            //Expected Output:
            //1 3 N
            //5 1 E

            //PS:kudretkurt
            //Plato yaratılır.Rover yaratılır. Yaratılan rover ilgili platoya gönderilir(SendToPlateau). Daha sonra bu uzay aracının nasıl hareket edeceği bilgisi şifrelenerek (koskoca nasa mesajı şifreler muhtemelen:)) ilgili queue ya consume edilmesi için gönderilir.

            var plateauId = Guid.NewGuid();
            var plateau   = new Plateau(new Size(5, 5), "FirstPlateau", plateauId);
            await plateauRepository.SavePlateau(plateau);

            var roverId = Guid.NewGuid();
            var rover   = new RoverX(Direction.North, new Point(1, 2), roverId);

            rover.SendToPlateau(plateau);
            await roverRepository.SaveRover(rover);


            var sendOptions = new SendOptions();

            sendOptions.SetDestination(ApplicationConfiguration.Instance.GetValue <string>("MarsRoverContext:EndpointName"));

            //await _nasaEndpointInstance.Send(new MoveCommand()
            //{
            //    EncryptedMoveCommand = EncryptionUtils.Instance.Encrypt("LMLMLMLMM"),
            //    EncryptedRoverId = EncryptionUtils.Instance.Encrypt(roverId.ToString())
            //}, sendOptions);


            roverId = Guid.NewGuid();
            rover   = new RoverX(Direction.East, new Point(3, 3), roverId);
            rover.SendToPlateau(plateau);
            await roverRepository.SaveRover(rover);

            sendOptions = new SendOptions();
            sendOptions.SetDestination(ApplicationConfiguration.Instance.GetValue <string>("MarsRoverContext:EndpointName"));

            await _nasaEndpointInstance.Send(new MoveCommand()
            {
                EncryptedMoveCommand = EncryptionUtils.Instance.Encrypt("MMRMMRMRRM"),
                EncryptedRoverId     = EncryptionUtils.Instance.Encrypt(roverId.ToString())
            }, sendOptions);
        }