public void Should_Set_Working_Directory()
        {
            // Given
            var fixture = new GenymotionAdminStartFixture();

            // When
            var result = fixture.Run();

            // Then
            Assert.Equal("/Working", result.Process.WorkingDirectory.FullPath);
        }
        public void Should_Find_Genymotion_If_Tool_Path_Not_Provided()
        {
            // Given
            var fixture = new GenymotionAdminStartFixture();

            // When
            var result = fixture.Run();

            // Then
            Assert.Equal("/Working/tools/gmtool.exe", result.Path.FullPath);
        }
        public void Should_Add_Verbose_Flag_To_Arguments_If_Set(bool verbose, string expected)
        {
            // Given
            var fixture = new GenymotionAdminStartFixture();

            fixture.Settings.Verbose = verbose;

            // When
            var result = fixture.Run();

            // Then
            result.Args.Should().Be(expected);
        }
        public void Should_Add_Timeout_Flag_To_Arguments_If_Set(int?timeout, string expected)
        {
            // Given
            var fixture = new GenymotionAdminStartFixture();

            fixture.Settings.Timeout = timeout;

            // When
            var result = fixture.Run();

            // Then
            result.Args.Should().Be(expected);
        }
        public void Should_Add_Admin_Start_Argument_With_DeviceIdentifier(string deviceIdentifier, string expected)
        {
            // Given
            var fixture = new GenymotionAdminStartFixture();

            fixture.DeviceIdentifier = deviceIdentifier;

            // When
            var result = fixture.Run();

            // Then
            result.Args.Should().Be(expected);
        }
        public void Should_Throw_If_Genymotion_Was_Not_Found()
        {
            // Given
            var fixture = new GenymotionAdminStartFixture();

            fixture.GivenDefaultToolDoNotExist();

            // When
            fixture.Invoking(x => x.Run())

            // Then
            .ShouldThrow <CakeException>()
            .WithMessage("Genymotion: Could not locate executable.");
        }
        public void Should_Throw_If_Process_Was_Not_Started()
        {
            // Given
            var fixture = new GenymotionAdminStartFixture();

            fixture.GivenProcessCannotStart();

            // When
            fixture.Invoking(x => x.Run())

            // Then
            .ShouldThrow <CakeException>()
            .WithMessage("Genymotion: Process was not started.");
        }
        public void Should_Throw_If_Has_A_Non_Zero_Exit_Code()
        {
            // Given
            var fixture = new GenymotionAdminStartFixture();

            fixture.GivenProcessExitsWithCode(1);

            // When
            fixture.Invoking(x => x.Run())

            // Then
            .ShouldThrow <CakeException>()
            .WithMessage("Genymotion: Process returned an error (exit code 1).");
        }
        public void Should_Use_Genymotion_Runner_From_Tool_Path_If_Provided(string toolPath, string expected)
        {
            // Given
            var fixture = new GenymotionAdminStartFixture {
                Settings = { ToolPath = toolPath }
            };

            fixture.GivenSettingsToolPathExist();

            // When
            var result = fixture.Run();

            // Then
            result.Path.FullPath.Should().Be(expected);
        }