From 95898440b95d251b0f198609d64b3b1e860c4018 Mon Sep 17 00:00:00 2001 From: Yaroslav Lepenkin Date: Thu, 28 Jan 2016 19:12:53 +0300 Subject: [PATCH] RecentTests: sorted by date inside groups --- .../testIntegration/RecentTestsData.java | 30 ++++++++--- .../testIntergration/RecentTestsTest.kt | 53 ++++++++++++++++++- 2 files changed, 74 insertions(+), 9 deletions(-) diff --git a/java/execution/impl/src/com/intellij/testIntegration/RecentTestsData.java b/java/execution/impl/src/com/intellij/testIntegration/RecentTestsData.java index a2f5a3ee65d4..191a7644eb8e 100644 --- a/java/execution/impl/src/com/intellij/testIntegration/RecentTestsData.java +++ b/java/execution/impl/src/com/intellij/testIntegration/RecentTestsData.java @@ -28,14 +28,28 @@ import static com.intellij.testIntegration.TestInfo.select; import static com.intellij.testIntegration.TestInfo.selectNot; public class RecentTestsData { - private static Comparator TEST_BY_PATH_COMPARATOR = new Comparator() { + private static Comparator TEST_BY_PATH_COMPARATOR = new Comparator() { @Override - public int compare(SuiteInfo o1, SuiteInfo o2) { + public int compare(TestInfo o1, TestInfo o2) { String path1 = VirtualFileManager.extractPath(o1.getUrl()); String path2 = VirtualFileManager.extractPath(o2.getUrl()); return path1.compareTo(path2); } }; + + private static Comparator SUITE_BY_RECENT_COMPARATOR = new Comparator() { + @Override + public int compare(SuiteInfo o1, SuiteInfo o2) { + return -o1.getMostRecentRunDate().compareTo(o2.getMostRecentRunDate()); + } + }; + + private static Comparator TEST_BY_RECENT_COMPARATOR = new Comparator() { + @Override + public int compare(TestInfo o1, TestInfo o2) { + return -o1.getRunDate().compareTo(o2.getRunDate()); + } + }; private final RecentTestRunner myRunner; private final Map mySuites = ContainerUtil.newHashMap(); @@ -82,7 +96,11 @@ public class RecentTestsData { List suites = ContainerUtil.newArrayList(mySuites.values()); Collections.sort(suites, TEST_BY_PATH_COMPARATOR); - + Collections.sort(myTestsWithoutSuites, TEST_BY_PATH_COMPARATOR); + + Collections.sort(suites, SUITE_BY_RECENT_COMPARATOR); + Collections.sort(myTestsWithoutSuites, TEST_BY_RECENT_COMPARATOR); + List result = ContainerUtil.newArrayList(); fillWithSuites(result, select(suites, ERROR_INDEX)); @@ -121,6 +139,7 @@ public class RecentTestsData { } else { result.add(suite.getUrl()); + Collections.sort(sameMagnitudeTests, TEST_BY_RECENT_COMPARATOR); for (TestInfo test : sameMagnitudeTests) { result.add(test.getUrl()); } @@ -159,16 +178,13 @@ class SuiteInfo extends TestInfo { } public Date getMostRecentRunDate() { - if (tests.isEmpty()) return getRunDate(); - - Date mostRecent = tests.iterator().next().getRunDate(); + Date mostRecent = getRunDate(); for (TestInfo test : tests) { Date testDate = test.getRunDate(); if (testDate.compareTo(mostRecent) > 0) { mostRecent = testDate; } } - return mostRecent; } diff --git a/java/java-tests/testSrc/com/intellij/testIntergration/RecentTestsTest.kt b/java/java-tests/testSrc/com/intellij/testIntergration/RecentTestsTest.kt index 8f1965a7dc3b..aea796c9460e 100644 --- a/java/java-tests/testSrc/com/intellij/testIntergration/RecentTestsTest.kt +++ b/java/java-tests/testSrc/com/intellij/testIntergration/RecentTestsTest.kt @@ -28,11 +28,60 @@ import org.mockito.Mockito.`when` import org.mockito.Mockito.mock import java.util.* +fun passed(date: Date) = TestStateStorage.Record(TestStateInfo.Magnitude.PASSED_INDEX.value, date) +fun failed(date: Date) = TestStateStorage.Record(TestStateInfo.Magnitude.FAILED_INDEX.value, date) + class RecentTestsStepTest { val runner = createRunner() - val passed = TestStateStorage.Record(TestStateInfo.Magnitude.PASSED_INDEX.value, Date()) - val failed = TestStateStorage.Record(TestStateInfo.Magnitude.FAILED_INDEX.value, Date()) + val passed = passed(Date(0)) + val failed = failed(Date(0)) + + class TestStorage { + private val map: MutableMap = hashMapOf() + + fun addSuite(name: String, pass: Boolean, date: Date = Date(0)) { + val record = if (pass) passed(date) else failed(date) + map.put("java:suite://$name", record) + } + + fun addTest(name: String, pass: Boolean, date: Date = Date(0)) { + val record = if (pass) passed(date) else failed(date) + map.put("java:test://$name", record) + } + + fun getMap() = map + } + + @Test + fun `show sorted by date`() { + val storage = TestStorage() + + storage.addSuite("ASTest", true, Date(1000)) + storage.addSuite("JSTest", true, Date(1200)) + + val step = SelectTestStep(storage.getMap(), runner) + val values = step.values.map { VirtualFileManager.extractPath(it) } + + assertThat(values).isEqualTo(listOf("JSTest", "ASTest")) + } + + @Test + fun `show tests sorted by date`() { + val storage = TestStorage() + + storage.addSuite("ASTest", false, Date(0)) + storage.addTest("ASTest.xxxx", true, Date(99999)) + + storage.addTest("ASTest.aaaa", false, Date(10000)) + storage.addTest("ASTest.cccc", false, Date(20000)) + storage.addTest("ASTest.bbbb", false, Date(30000)) + + val step = SelectTestStep(storage.getMap(), runner) + val values = step.values.map { VirtualFileManager.extractPath(it) } + + assertThat(values).isEqualTo(listOf("ASTest", "ASTest.bbbb", "ASTest.cccc", "ASTest.aaaa")) + } @Test fun `when suite passed - show only suite`() {