Search in sources :

Example 1 with GroupedFile

use of de.tum.in.www1.artemis.service.hestia.behavioral.GroupedFile in project ArTEMiS by ls1intum.

the class CreateCommonChangeBlocks method executeAction.

@Override
public boolean executeAction() {
    boolean didChanges = false;
    for (GroupedFile groupedFile : blackboard.getGroupedFiles()) {
        var changeBlocks = new TreeSet<GroupedFile.ChangeBlock>();
        Integer previousLine = null;
        Integer startLine = null;
        int lineCount = 0;
        for (Integer currentLine : groupedFile.getCommonLines()) {
            if (startLine == null) {
                startLine = currentLine;
            }
            // Check if this is a new change block
            if (previousLine != null && currentLine - 1 > previousLine) {
                changeBlocks.add(new GroupedFile.ChangeBlock(IntStream.range(startLine, startLine + lineCount).boxed().toList()));
                lineCount = 0;
                startLine = currentLine;
            }
            lineCount++;
            previousLine = currentLine;
        }
        // Add the last change block if any existA
        if (startLine != null) {
            changeBlocks.add(new GroupedFile.ChangeBlock(IntStream.range(startLine, startLine + lineCount).boxed().toList()));
        }
        if (!changeBlocks.equals(groupedFile.getCommonChanges())) {
            groupedFile.setCommonChanges(changeBlocks);
            didChanges = true;
        }
    }
    return didChanges;
}
Also used : TreeSet(java.util.TreeSet) GroupedFile(de.tum.in.www1.artemis.service.hestia.behavioral.GroupedFile)

Example 2 with GroupedFile

use of de.tum.in.www1.artemis.service.hestia.behavioral.GroupedFile in project ArTEMiS by ls1intum.

the class ExtractCoveredLinesTest method initBlackboard.

@BeforeEach
public void initBlackboard() {
    BehavioralBlackboard blackboard = new BehavioralBlackboard(null, null, null);
    var groupedFiles = new ArrayList<GroupedFile>();
    blackboard.setGroupedFiles(groupedFiles);
    coverageReportEntries = new HashSet<>();
    groupedFile = new GroupedFile("test.java", null, null, coverageReportEntries);
    groupedFiles.add(groupedFile);
    extractCoveredLines = new ExtractCoveredLines(blackboard);
}
Also used : BehavioralBlackboard(de.tum.in.www1.artemis.service.hestia.behavioral.BehavioralBlackboard) GroupedFile(de.tum.in.www1.artemis.service.hestia.behavioral.GroupedFile) ArrayList(java.util.ArrayList) ExtractCoveredLines(de.tum.in.www1.artemis.service.hestia.behavioral.knowledgesource.ExtractCoveredLines) BeforeEach(org.junit.jupiter.api.BeforeEach)

Example 3 with GroupedFile

use of de.tum.in.www1.artemis.service.hestia.behavioral.GroupedFile in project ArTEMiS by ls1intum.

the class FindCommonLinesTest method initBlackboard.

@BeforeEach
public void initBlackboard() {
    BehavioralBlackboard blackboard = new BehavioralBlackboard(null, null, null);
    var groupedFiles = new ArrayList<GroupedFile>();
    blackboard.setGroupedFiles(groupedFiles);
    groupedFile = new GroupedFile("test.java", null, null, null);
    groupedFiles.add(groupedFile);
    findCommonLines = new FindCommonLines(blackboard);
}
Also used : BehavioralBlackboard(de.tum.in.www1.artemis.service.hestia.behavioral.BehavioralBlackboard) GroupedFile(de.tum.in.www1.artemis.service.hestia.behavioral.GroupedFile) ArrayList(java.util.ArrayList) FindCommonLines(de.tum.in.www1.artemis.service.hestia.behavioral.knowledgesource.FindCommonLines) BeforeEach(org.junit.jupiter.api.BeforeEach)

Example 4 with GroupedFile

use of de.tum.in.www1.artemis.service.hestia.behavioral.GroupedFile in project ArTEMiS by ls1intum.

the class GroupGitDiffAndCoverageEntriesByFilePathAndTestCaseTest method testGroupSingleFileTwoTests.

@Test
public void testGroupSingleFileTwoTests() {
    var testCase1 = new ProgrammingExerciseTestCase();
    var testCase2 = new ProgrammingExerciseTestCase();
    var gitDiffEntry = addGitDiffEntry("test.java", 1, 20);
    var coverageEntry1 = addCoverageEntry("test.java", 5, 5, testCase1);
    var coverageEntry2 = addCoverageEntry("test.java", 15, 2, testCase2);
    assertThat(grouper.executeCondition()).isTrue();
    assertThat(grouper.executeAction()).isTrue();
    assertThat(blackboard.getGroupedFiles()).isNotNull().hasSize(2).containsExactlyInAnyOrder(new GroupedFile("test.java", testCase1, Set.of(gitDiffEntry), Set.of(coverageEntry1)), new GroupedFile("test.java", testCase2, Set.of(gitDiffEntry), Set.of(coverageEntry2)));
}
Also used : GroupedFile(de.tum.in.www1.artemis.service.hestia.behavioral.GroupedFile) ProgrammingExerciseTestCase(de.tum.in.www1.artemis.domain.ProgrammingExerciseTestCase) Test(org.junit.jupiter.api.Test)

Example 5 with GroupedFile

use of de.tum.in.www1.artemis.service.hestia.behavioral.GroupedFile in project ArTEMiS by ls1intum.

the class ExtractChangedLinesTest method initBlackboard.

@BeforeEach
public void initBlackboard() {
    BehavioralBlackboard blackboard = new BehavioralBlackboard(null, null, null);
    var groupedFiles = new ArrayList<GroupedFile>();
    blackboard.setGroupedFiles(groupedFiles);
    gitDiffEntries = new HashSet<>();
    groupedFile = new GroupedFile("test.java", null, gitDiffEntries, null);
    groupedFiles.add(groupedFile);
    extractChangedLines = new ExtractChangedLines(blackboard);
}
Also used : BehavioralBlackboard(de.tum.in.www1.artemis.service.hestia.behavioral.BehavioralBlackboard) ExtractChangedLines(de.tum.in.www1.artemis.service.hestia.behavioral.knowledgesource.ExtractChangedLines) GroupedFile(de.tum.in.www1.artemis.service.hestia.behavioral.GroupedFile) ArrayList(java.util.ArrayList) BeforeEach(org.junit.jupiter.api.BeforeEach)

Aggregations

GroupedFile (de.tum.in.www1.artemis.service.hestia.behavioral.GroupedFile)32 ArrayList (java.util.ArrayList)20 BehavioralBlackboard (de.tum.in.www1.artemis.service.hestia.behavioral.BehavioralBlackboard)16 BeforeEach (org.junit.jupiter.api.BeforeEach)14 ProgrammingExerciseTestCase (de.tum.in.www1.artemis.domain.ProgrammingExerciseTestCase)8 TreeSet (java.util.TreeSet)6 Test (org.junit.jupiter.api.Test)6 BehavioralSolutionEntryGenerationException (de.tum.in.www1.artemis.service.hestia.behavioral.BehavioralSolutionEntryGenerationException)2 ChangeBlock (de.tum.in.www1.artemis.service.hestia.behavioral.GroupedFile.ChangeBlock)2 CombineChangeBlocks (de.tum.in.www1.artemis.service.hestia.behavioral.knowledgesource.CombineChangeBlocks)2 CreateCommonChangeBlocks (de.tum.in.www1.artemis.service.hestia.behavioral.knowledgesource.CreateCommonChangeBlocks)2 CreateSolutionEntries (de.tum.in.www1.artemis.service.hestia.behavioral.knowledgesource.CreateSolutionEntries)2 ExtractChangedLines (de.tum.in.www1.artemis.service.hestia.behavioral.knowledgesource.ExtractChangedLines)2 ExtractCoveredLines (de.tum.in.www1.artemis.service.hestia.behavioral.knowledgesource.ExtractCoveredLines)2 FindCommonLines (de.tum.in.www1.artemis.service.hestia.behavioral.knowledgesource.FindCommonLines)2 InsertFileContents (de.tum.in.www1.artemis.service.hestia.behavioral.knowledgesource.InsertFileContents)2 List (java.util.List)2