Ejemplo n.º 1
0
        public async Task <ActionResult <TestsModel> > PostTestsModel(TestsModel testsModel)
        {
            _context.TestsModels.Add(testsModel);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetTestsModel", new { id = testsModel.Id }, testsModel));
        }
Ejemplo n.º 2
0
        public static TestsModel TranslateAsTests(this SqlDataReader reader, bool isList = false)
        {
            if (!isList)
            {
                if (!reader.HasRows)
                {
                    return(null);
                }
                reader.Read();
            }
            var item = new TestsModel();

            if (reader.IsColumnExists("Id"))
            {
                item.Id = SqlHelper.GetNullableInt32(reader, "Id");
            }

            if (reader.IsColumnExists("Title"))
            {
                item.Title = SqlHelper.GetNullableString(reader, "Title");
            }

            if (reader.IsColumnExists("Discription"))
            {
                item.Discription = SqlHelper.GetNullableString(reader, "Discription");
            }

            if (reader.IsColumnExists("CurseId"))
            {
                item.CurseId = SqlHelper.GetNullableInt32(reader, "CurseId");
            }

            return(item);
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> PutTestsModel(int id, TestsModel testsModel)
        {
            if (id != testsModel.Id)
            {
                return(BadRequest());
            }

            _context.Entry(testsModel).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!TestsModelExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Ejemplo n.º 4
0
 public JsonResult Post([FromBody] TestsModel item)
 {
     if (ModelState.IsValid)
     {
         _testGenerator.GenerateFile(item.FileName, item.Content, item.ProblemName);
         return(Json("File generated"));
     }
     return(Json("Failed Response"));
 }
Ejemplo n.º 5
0
        public IActionResult EditTest(TestsModel TestsModel)
        {
            var fromDB = _TestDbConxextcs.TestsModels.Find(TestsModel.Id);

            fromDB.isActive    = TestsModel.isActive;
            fromDB.Name        = TestsModel.Name;
            fromDB.Description = TestsModel.Description;
            fromDB.Created     = TestsModel.Created;
            fromDB.Owner       = TestsModel.Owner;
            fromDB.Updated     = TestsModel.Updated;
            _TestDbConxextcs.SaveChanges();
            return(View());
        }
Ejemplo n.º 6
0
        public IHttpActionResult Create(TestsModel test)
        {
            if (!this.ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var newTest = new Test
            {
                CourseId = test.CourseId
            };

            this.data.Tests.Add(newTest);
            this.data.SaveChanges();

            test.Id = newTest.Id;
            return(Ok(test));
        }
Ejemplo n.º 7
0
        private async Task <List <ProfilesAndTestModelOeModel> > GetProfileAndTestOeModelFromSearchResultsAsync
            (GenericTwoListModel searchResults)
        {
            var profileAndTestOeDataList = new List <ProfilesAndTestModelOeModel>();
            var profiles     = (List <ProfileDatabaseModel>)searchResults.T1;      //Liver
            var ProfileTests = (List <ProfileTestsDatabaseModel>)searchResults.U1; //TBIL, DBIL, ....

            return(await Task.Run(() =>
            {
                foreach (var profile in profiles)
                {
                    var profileAndTestOeData = new ProfilesAndTestModelOeModel();

                    profileAndTestOeData.Id = profile.Id;
                    profileAndTestOeData.Description = profile.Description;
                    profileAndTestOeData.IsProfile = profile.IsProfile;

                    //Get Tests in profile
                    var testsInProfile = ProfileTests.Where((pt) =>
                    {
                        return pt.ProfileId == profile.Id;
                    }).ToList();


                    foreach (var test in testsInProfile)
                    {
                        var readyTestsInProfile = new TestsModel()
                        {
                            Id = test.TestId,
                            Description = test.Test,
                            IsReportable = test.IsReportable,
                            Mask = test.Mask,
                            ResultDataType = test.ResultDataType
                        };

                        profileAndTestOeData.TestsInProfile.Add(readyTestsInProfile);
                    }

                    profileAndTestOeDataList.Add(profileAndTestOeData);
                }

                return profileAndTestOeDataList;
            }));
        }
        public FileInfo Unparse(TestsModel <TTestCase> model, FileInfo artefact)
        {
            if (artefact.DirectoryName != null && !Directory.Exists(artefact.DirectoryName))
            {
                Directory.CreateDirectory(artefact.DirectoryName);
            }

            using (FileStream stream = artefact.Open(FileMode.OpenOrCreate, FileAccess.Write))
            {
                using (StreamWriter writer = new StreamWriter(stream))
                {
                    var serializer = JsonSerializer.Create(new JsonSerializerSettings {
                        Formatting = Formatting.Indented
                    });
                    serializer.Serialize(writer, model);
                }
            }

            return(artefact);
        }
Ejemplo n.º 9
0
        public async Task <StructuralDelta <TestsModel <MSTestTestcase>, MSTestTestcase> > GetTestsDelta(TDelta programDelta, Func <MSTestTestcase, bool> filterFunction, CancellationToken token)
        {
            var oldTestsModel = testsModelAdapter.Parse(GetTestsStorage(programDelta.OldModel.VersionId));

            if (!runConfiguration.DiscoverNewTests && oldTestsModel != null)
            {
                return(new StructuralDelta <TestsModel <MSTestTestcase>, MSTestTestcase>(oldTestsModel, oldTestsModel));
            }

            if (oldTestsModel == null)
            {
                oldTestsModel = new TestsModel <MSTestTestcase>
                {
                    TestSuite = new HashSet <MSTestTestcase>(),
                    VersionId = programDelta.OldModel.VersionId
                };
            }

            var parsingResult = await assembliesAdapter.Parse(programDelta.NewModel.AbsoluteSolutionPath, token);

            token.ThrowIfCancellationRequested();

            var sources = parsingResult.Select(x => x.AbsolutePath).Where(x => x.EndsWith(settingsProvider.TestAssembliesFilter));

            var vsTestCases = await DiscoverTests(sources, token);

            var newTestsModel = new TestsModel <MSTestTestcase>
            {
                TestSuite = new HashSet <MSTestTestcase>(vsTestCases.Select(x => vsTestCaseAdapter.Parse(x)).Where(x => !x.Ignored && filterFunction(x))),
                VersionId = programDelta.NewModel.VersionId
            };

            testsModelAdapter.Unparse(newTestsModel, GetTestsStorage(programDelta.NewModel.VersionId));

            var testsDelta = new StructuralDelta <TestsModel <MSTestTestcase>, MSTestTestcase>(oldTestsModel, newTestsModel);

            testsDelta.AddedElements.AddRange(newTestsModel.TestSuite.Except(oldTestsModel.TestSuite));
            testsDelta.DeletedElements.AddRange(oldTestsModel.TestSuite.Except(newTestsModel.TestSuite));

            return(testsDelta);
        }
Ejemplo n.º 10
0
        private async Task <bool> GenerateInputFile(TestsModel testsModel)
        {
            var client = new HttpClient();
            var serializedInputData = JsonConvert.SerializeObject(testsModel);
            var httpContent         = new StringContent(serializedInputData, Encoding.UTF8, "application/json");
            var response            = await client.PostAsync(_testApi, httpContent);

            if (response.StatusCode == System.Net.HttpStatusCode.OK)
            {
                var result = await response.Content.ReadAsStringAsync();

                var resultDeserialized = JsonConvert.DeserializeObject(result);
                if (result.Contains("File generated"))
                {
                    //we generated successfuly the input file. we need to generate the output file
                    return(true);
                }
                return(false);
            }
            return(false);
        }
Ejemplo n.º 11
0
        public IHttpActionResult Update(int id, TestsModel test)
        {
            if (!this.ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var existingTest = this.data.Tests
                               .All()
                               .FirstOrDefault(x => x.Id == id);

            if (existingTest == null)
            {
                return(BadRequest("Test with id: " + id + " do not exists"));
            }

            existingTest.CourseId = test.CourseId;
            this.data.SaveChanges();

            test.Id = id;

            return(Ok(test));
        }
Ejemplo n.º 12
0
        //TODO: Artefact Adapter
        public Task <StructuralDelta <TestsModel <CsvFileTestcase>, CsvFileTestcase> > GetTestsDelta(TProgramDelta programDelta, Func <CsvFileTestcase, bool> filterFunction, CancellationToken token)
        {
            var csvFile = runConfigurationProvider.CsvTestsFile;

            if (!File.Exists(csvFile))
            {
                throw new ArgumentException($"The CSV file '{csvFile}' does not exist!");
            }

            var oldTestsModel = testsModelAdapter.Parse(GetTestsStorage(programDelta.OldModel.VersionId));

            if (oldTestsModel == null)
            {
                oldTestsModel = new TestsModel <CsvFileTestcase>
                {
                    TestSuite = new HashSet <CsvFileTestcase>(),
                    VersionId = programDelta.OldModel.VersionId
                };
            }

            TestsModel <CsvFileTestcase> newTestsModel = new TestsModel <CsvFileTestcase>
            {
                TestSuite = new HashSet <CsvFileTestcase>(),
                VersionId = programDelta.NewModel.VersionId
            };

            foreach (string line in File.ReadAllLines(csvFile))
            {
                token.ThrowIfCancellationRequested();

                string testName    = line.Substring(0, line.IndexOf(';'));
                string linkedClass = line.Substring(line.IndexOf(';') + 1);

                var testCase = new CsvFileTestcase
                {
                    Id = testName,
                    AssociatedClasses = new List <string> {
                        linkedClass
                    }
                };

                if (filterFunction(testCase))
                {
                    var exisitingTest = newTestsModel.TestSuite.SingleOrDefault(x => x.Id == testCase.Id);

                    if (exisitingTest != null)
                    {
                        exisitingTest.AssociatedClasses.AddRange(testCase.AssociatedClasses);
                    }
                    else
                    {
                        newTestsModel.TestSuite.Add(testCase);
                    }
                }
            }
            testsModelAdapter.Unparse(newTestsModel, GetTestsStorage(programDelta.NewModel.VersionId));

            var testsDelta = new StructuralDelta <TestsModel <CsvFileTestcase>, CsvFileTestcase>(oldTestsModel, newTestsModel);

            testsDelta.AddedElements.AddRange(newTestsModel.TestSuite.Except(oldTestsModel.TestSuite));
            testsDelta.DeletedElements.AddRange(oldTestsModel.TestSuite.Except(newTestsModel.TestSuite));

            return(Task.FromResult(testsDelta));
        }
Ejemplo n.º 13
0
        public Models.CorrespondenceModel GetCorrespondenceModel <TTestCase>(TModel programModel, TestsModel <TTestCase> testsModel)
            where TTestCase : ITestCase
        {
            string testType = typeof(TTestCase).Name;
            var    artefact = GetFile(testType, programModel.VersionId);

            var defaultModel = new Models.CorrespondenceModel
            {
                ProgramVersionId = Path.GetFileNameWithoutExtension(artefact.FullName),
                TestType         = testType
            };

            var model = correspondenceModelAdapter.Parse(artefact) ?? defaultModel;

            return(model);
        }
Ejemplo n.º 14
0
        public async Task <IActionResult> Add([FromForm] TestsViewModel test)
        {
            if (ModelState.IsValid)
            {
                string testInputContent  = string.Empty;
                string testOutputContent = string.Empty;

                Tuple <string, long> fileContentInput = await FileHelpers.ProcessFormFile(test.FileInput, ModelState);

                Tuple <string, long> fileContentOutput = await FileHelpers.ProcessFormFile(test.FileOutput, ModelState);

                testInputContent  = fileContentInput.Item1;
                testOutputContent = fileContentOutput.Item1;

                var newTest = new Tests
                {
                    TestNumber = test.TestNumber,
                    Scor       = test.Scor,
                    FisierIn   = test.FisierIn,
                    FisierOk   = test.FisierOk,
                    TestId     = Guid.NewGuid(),
                    ProblemId  = test.ProblemId,
                    TestInput  = testInputContent,
                    TestOutput = testOutputContent
                };

                //save to server the test.
                var problem = _problemRepository.GetItem(newTest.ProblemId);

                //first we save the .in file the the ok file
                TestsModel testsInputModel = new TestsModel
                {
                    Content     = newTest.TestInput,
                    FileName    = newTest.FisierIn,
                    ProblemName = problem.ProblemName
                };
                var inputFileGenerated = await GenerateInputFile(testsInputModel);

                if (inputFileGenerated == true)
                {
                    //generate for the .ok file
                    var testOkModel = new TestsModel
                    {
                        Content     = newTest.TestOutput,
                        FileName    = newTest.FisierOk,
                        ProblemName = problem.ProblemName
                    };
                    var outputFileGenerated = await GenerateInputFile(testOkModel);

                    if (outputFileGenerated == true)
                    {
                        //ok, we can save in the database

                        _testRepository.Create(newTest);
                        _testRepository.Save();
                        return(RedirectToAction(nameof(Index), new { id = test.ProblemId }));
                    }
                    else
                    {
                        return(View());
                    }
                }
                else
                {
                    return(View());
                }
            }

            return(View());
        }