public void Should_Throw_If_Unity_Is_Not_Installed()
            {
                // Given
                var fixture = new UnityRunnerFixture();
                fixture.DefaultToolPathExist = false;

                // When
                var result = Record.Exception(() => fixture.ExecuteRunner());

                // Then
                Assert.IsType<CakeException>(result);
                Assert.Equal("Unity: Could not locate executable.", result.Message);
            }
            public void Should_Throw_If_Project_Path_Do_Not_Exist()
            {
                // Given
                var fixture = new UnityRunnerFixture();
                fixture.ProjectPathExist = false;

                // When
                var result = Record.Exception(() => fixture.ExecuteRunner());

                // Then
                Assert.IsType<CakeException>(result);
                Assert.Equal("The Unity project C:/Project do not exist.", result.Message);
            }
            public void Should_Throw_If_Platform_Is_Null()
            {
                // Given
                var fixture = new UnityRunnerFixture();
                fixture.Platform = null;

                // When
                var result = Record.Exception(() => fixture.ExecuteRunner());

                // Then
                Assert.IsType<ArgumentNullException>(result);
                Assert.Equal("platform", ((ArgumentNullException)result).ParamName);
            }
            public void Should_Set_Default_Arguments()
            {
                // Given
                var fixture = new UnityRunnerFixture();

                // When
                fixture.ExecuteRunner();

                // Then
                fixture.ProcessRunner.Received(1).Start(
                    Arg.Any<FilePath>(),
                    Arg.Is<ProcessSettings>(p =>
                    p.Arguments.Render() == "-batchmode -quit -projectPath \"C:/Project\""));
            }
            public void Should_Throw_If_Process_Has_A_Non_Zero_Exit_Code()
            {
                // Given
                var fixture = new UnityRunnerFixture();
                fixture.Process.GetExitCode().Returns(1);

                // When
                var result = Record.Exception(() => fixture.ExecuteRunner());

                // Then
                Assert.IsType<CakeException>(result);
                Assert.Equal("Unity: Process returned an error.", result.Message);
            }
            public void Should_Throw_If_Process_Was_Not_Started()
            {
                // Given
                var fixture = new UnityRunnerFixture();
                fixture.ProcessRunner.Start(Arg.Any<FilePath>(), Arg.Any<ProcessSettings>()).Returns((IProcess)null);

                // When
                var result = Record.Exception(() => fixture.ExecuteRunner());

                // Then
                Assert.IsType<CakeException>(result);
                Assert.Equal("Unity: Process was not started.", result.Message);
            }