예제 #1
0
        public void ReportWarning_If_ExerciseFolder_DoesntContain_SolutionFile()
        {
            FileSystem.DeleteFile(exerciseBlock.CorrectSolutionFile.FullName);

            var validatorOut = TestsHelper.ValidateBlock(exerciseBlock);

            validatorOut
            .Should().Contain($"Exercise directory doesn't contain {exerciseBlock.CorrectSolutionFileName}");
        }
        public void ReportError_If_CorrectSolution_Not_Building()
        {
            File.WriteAllText(exerciseBlock.CorrectSolutionFile.FullName, "");

            var validatorOutput = TestsHelper.ValidateBlock(exerciseBlock);

            validatorOutput
            .Should().Contain(
                $"Correct solution file {exerciseBlock.CorrectSolutionFileName} verdict is not OK. RunResult = Id: test.csproj, Verdict: CompilationError");
        }
        public void Not_Report_Indentation_Warning_On_Ethalon_Solution_Of_SingleFileExercise()
        {
            var singleBlock =
                new ExerciseBuilder("cs", "using System; using System.Linq; using System.Text;").BuildBlockFrom(
                    CSharpSyntaxTree.ParseText(TestsHelper.ProjSlideFolder.GetFile("S055 - Упражнение на параметры по умолчанию.cs")
                                               .ContentAsUtf8()), null);
            var validatorOut = TestsHelper.ValidateBlock(singleBlock);

            validatorOut.Should().BeNullOrEmpty();
        }
        public void ReportError_If_NUnitTestRunner_Tries_To_Run_NonExisting_Test_Class()
        {
            exerciseBlock.NUnitTestClasses = new[] { "non_existing.test_class", };
            exerciseBlock.ReplaceStartupObjectForNUnitExercises();

            var validatorOutput = TestsHelper.ValidateBlock(exerciseBlock);

            validatorOutput
            .Should()
            .Contain(
                $"Correct solution file {exerciseBlock.CorrectSolutionFileName} verdict is not OK. RunResult = Id: test.csproj, Verdict: RuntimeError: System.ArgumentException: Error in checking system: test class non_existing.test_class does not exist");
        }
        public void ReportError_If_ExerciseFolder_HasErrors()
        {
            File.Delete(exerciseBlock.UserCodeFile.FullName);
            File.Delete(Path.Combine(tempSlideFolderPath, exerciseBlock.CsProjFilePath));

            var validatorOutput = TestsHelper.ValidateBlock(exerciseBlock);

            validatorOutput
            .Should().Contain($"Exercise folder ({exerciseBlock.ExerciseFolder.Name}) doesn't contain ({exerciseBlock.CsprojFileName})");
            validatorOutput
            .Should().Contain($"Exercise folder ({exerciseBlock.ExerciseFolder.Name}) doesn't contain ({exerciseBlock.UserCodeFilePath})");
        }
예제 #6
0
        public void ReportWarning_If_WrongAnswers_Have_Errors()
        {
            var validatorOut = TestsHelper.ValidateBlock(exerciseBlock);

            validatorOut
            .Should()
            .Contain(
                $"Code verdict of file with wrong answer ({exerciseBlock.UserCodeFileNameWithoutExt}.WrongAnswer.Type.cs) is not OK.")
            .And
            .Contain("Verdict: CompilationError");
            validatorOut
            .Should().Contain(
                $"Code of file with wrong answer ({exerciseBlock.UserCodeFileNameWithoutExt}.WrongAnswer.21.plus.21.cs) is solution!");
            validatorOut
            .Should().NotContain($"{exerciseBlock.UserCodeFileNameWithoutExt}.WrongAnswer.27.cs");
        }
        public void ReportError_If_Solution_For_ProjectExerciseBlock_Is_Not_Solution()
        {
            exerciseBlock.NUnitTestClasses = new[] { $"test.{nameof(OneFailingTest)}" };
            exerciseBlock.ReplaceStartupObjectForNUnitExercises();

            var validatorOutput = TestsHelper.ValidateBlock(exerciseBlock);

            validatorOutput
            .Should()
            .Contain(
                $"Correct solution file {exerciseBlock.CorrectSolutionFileName} is not solution. RunResult = Id: test.csproj, Verdict: Ok")
            .And
            .Contain("Как минимум один из тестов не пройден")
            .And
            .Contain("I_am_a_failure");
        }
        public void ReportError_If_StudentZip_HasErrors()
        {
            FileSystem.CopyDirectory(tempSlideFolder.GetSubdirectory("projDir").FullName,
                                     tempSlideFolder.GetSubdirectory("FullProjDir").FullName);
            exerciseBlock.CsProjFilePath = Path.Combine("FullProjDir", TestsHelper.CsProjFilename);
            SaveTempZipFileWithFullProject();

            var validatorOutput = TestsHelper.ValidateBlock(exerciseBlock);

            validatorOutput
            .Should().Contain(
                $"Student zip exercise directory has 'wrong answer' and/or solution files ({TestsHelper.OrderedWrongAnswersAndSolutionNames})");
            validatorOutput
            .Should().Contain($"Student's csproj has user code item ({exerciseBlock.UserCodeFilePath}) of not compile type");
            validatorOutput
            .Should().Contain(
                $"Student's csproj has 'wrong answer' and/or solution items ({TestsHelper.OrderedWrongAnswersAndSolutionNames})");
        }