NavigatorPanel.java revision b67b89e0aff199b1b7ac2c67eb3d7c9222c1c046
1276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beustpackage org.testng.reporters.jq; 2276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 3276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beustimport org.testng.ISuite; 4276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beustimport org.testng.ISuiteResult; 5276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beustimport org.testng.ITestContext; 6276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beustimport org.testng.ITestResult; 706342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beustimport org.testng.collections.Lists; 8276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beustimport org.testng.reporters.XMLStringBuffer; 9276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 10c92a697e87fde8525e18f2fcb270533ee8545986Cédric Beustimport java.util.Collections; 11c92a697e87fde8525e18f2fcb270533ee8545986Cédric Beustimport java.util.List; 12276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beustimport java.util.Map; 13276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 1473a5f0f792308fc7f7b972d5c7ae4936d85c7b2bCédric Beustpublic class NavigatorPanel extends BasePanel { 1573a5f0f792308fc7f7b972d5c7ae4936d85c7b2bCédric Beust 16ba0fb55d58a3ea09ff7f027768106c3fc1e5cd40Cédric Beust private TestNgXmlPanel m_testNgPanel; 17ba0fb55d58a3ea09ff7f027768106c3fc1e5cd40Cédric Beust private TestPanel m_testPanel; 1854434b4aca8e38432b58d57ec8f16ef14aaafc7fCédric Beust private GroupPanel m_groupPanel; 1903932733f81c510b12e4b391eb249c713301a402Cédric Beust private TimesPanel m_timePanel; 2070fd043e61f436825c446ec484d39fbb2ded2f6bCédric Beust private ReporterPanel m_reporterPanel; 212ad7693fa5a5125aafeefff55ab96cbf8715d788Cédric Beust private IgnoredMethodsPanel m_ignoredMethodsPanel; 22234c85874acc0cd3360639949fbd566255ab31edCédric Beust private ChronologicalPanel m_chronologicalPanel; 23ba0fb55d58a3ea09ff7f027768106c3fc1e5cd40Cédric Beust 2454434b4aca8e38432b58d57ec8f16ef14aaafc7fCédric Beust public NavigatorPanel(Model model, TestNgXmlPanel testNgPanel, TestPanel testPanel, 252ad7693fa5a5125aafeefff55ab96cbf8715d788Cédric Beust GroupPanel groupPanel, TimesPanel timePanel, ReporterPanel reporterPanel, 26234c85874acc0cd3360639949fbd566255ab31edCédric Beust IgnoredMethodsPanel ignoredMethodsPanel,ChronologicalPanel chronologicalPanel) { 2773a5f0f792308fc7f7b972d5c7ae4936d85c7b2bCédric Beust super(model); 28ba0fb55d58a3ea09ff7f027768106c3fc1e5cd40Cédric Beust m_testNgPanel = testNgPanel; 29ba0fb55d58a3ea09ff7f027768106c3fc1e5cd40Cédric Beust m_testPanel = testPanel; 3054434b4aca8e38432b58d57ec8f16ef14aaafc7fCédric Beust m_groupPanel = groupPanel; 3171b49146fae442f11d76af035b279536e5c1d549Cédric Beust m_timePanel = timePanel; 3270fd043e61f436825c446ec484d39fbb2ded2f6bCédric Beust m_reporterPanel = reporterPanel; 332ad7693fa5a5125aafeefff55ab96cbf8715d788Cédric Beust m_ignoredMethodsPanel = ignoredMethodsPanel; 34234c85874acc0cd3360639949fbd566255ab31edCédric Beust m_chronologicalPanel = chronologicalPanel; 35276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust } 36276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 37276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust @Override 3873a5f0f792308fc7f7b972d5c7ae4936d85c7b2bCédric Beust public void generate(XMLStringBuffer main) { 391e3250e4d7fc3e52d172d4c504c257d2d5e82ea8Cédric Beust main.push(D, C, "navigator-root"); 40d89f766403c534b48fdac8cd4c6349905e63945cCédric Beust main.push(D, C, "navigator-suite-header"); 41d89f766403c534b48fdac8cd4c6349905e63945cCédric Beust main.addRequired(S, "All suites"); 42d89f766403c534b48fdac8cd4c6349905e63945cCédric Beust main.push("a", C, "collapse-all-link", "href", "#", "title", "Collapse/expand all the suites"); 43d89f766403c534b48fdac8cd4c6349905e63945cCédric Beust main.push("img", "src", "collapseall.gif", C, "collapse-all-icon"); 44d89f766403c534b48fdac8cd4c6349905e63945cCédric Beust main.pop("img"); 45d89f766403c534b48fdac8cd4c6349905e63945cCédric Beust main.pop("a"); 46d89f766403c534b48fdac8cd4c6349905e63945cCédric Beust main.pop(D); 47276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust int suiteCount = 0; 4873a5f0f792308fc7f7b972d5c7ae4936d85c7b2bCédric Beust for (ISuite suite : getSuites()) { 49276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust if (suite.getResults().size() == 0) { 50276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust continue; 51276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust } 52276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 53276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust String suiteName = "suite-" + suiteCount; 54276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 55276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust XMLStringBuffer header = new XMLStringBuffer(main.getCurrentIndent()); 56276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 57276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust Map<String, ISuiteResult> results = suite.getResults(); 58276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust int failed = 0; 59276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust int skipped = 0; 60276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust int passed = 0; 61276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust for (ISuiteResult result : results.values()) { 62276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust ITestContext context = result.getTestContext(); 63276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust failed += context.getFailedTests().size(); 64276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust skipped += context.getSkippedTests().size(); 65276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust passed += context.getPassedTests().size(); 66276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust } 67276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 68276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust // Suite name in big font 69276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust header.push(D, C, "suite"); 700fe6cf657bd3740e8c877506169146565e37a557Cédric Beust header.push(D, C, "rounded-window"); 71276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust // Extra div so the highlighting logic will only highlight this line and not 72276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust // the entire container 730fe6cf657bd3740e8c877506169146565e37a557Cédric Beust header.push(D, C, "suite-header light-rounded-window-top"); 74276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust header.push("a", "href", "#", 75276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust "panel-name", suiteName, 76276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust C, "navigator-link"); 770fe6cf657bd3740e8c877506169146565e37a557Cédric Beust header.addOptional(S, suite.getName(), 780fe6cf657bd3740e8c877506169146565e37a557Cédric Beust C, "suite-name border-" + getModel().getStatusForSuite(suite.getName())); 79276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust header.pop("a"); 80276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust header.pop(D); 81276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 82b067aa6284d39e160c607c76e6a9bb0a0b76a732Cédric Beust header.push(D, C, "navigator-suite-content"); 83b067aa6284d39e160c607c76e6a9bb0a0b76a732Cédric Beust 848e33619cdbd62e5eb6569dcb99b2f7b0402a575dCédric Beust generateInfo(header, suite); 85848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust generateResult(header, failed, skipped, passed, suite, suiteName); 86276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 87276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust header.pop("ul"); 88276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 89b067aa6284d39e160c607c76e6a9bb0a0b76a732Cédric Beust header.pop(D); // suite-section-content 90276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust header.pop(D); // suite-header 91276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust header.pop(D); // suite 92276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 93b067aa6284d39e160c607c76e6a9bb0a0b76a732Cédric Beust header.pop(D); // result-section 94b067aa6284d39e160c607c76e6a9bb0a0b76a732Cédric Beust 95b067aa6284d39e160c607c76e6a9bb0a0b76a732Cédric Beust header.pop(D); // navigator-suite-content 96b067aa6284d39e160c607c76e6a9bb0a0b76a732Cédric Beust 97276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust main.addString(header.toXML()); 98276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 99276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust suiteCount++; 100276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust } 1011e3250e4d7fc3e52d172d4c504c257d2d5e82ea8Cédric Beust main.pop(D); 102276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust } 103276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 104848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust private void generateResult(XMLStringBuffer header, int failed, int skipped, int passed, 105848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust ISuite suite, String suiteName) { 106848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust // 107848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust // Results 108848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust // 109848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.push(D, C, "result-section"); 110848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust 111848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.push(D, C, "suite-section-title"); 112848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.addRequired(S, "Results"); 113848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.pop(D); 114848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust 115848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust // Method stats 116848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust int total = failed + skipped + passed; 117848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust String stats = String.format("%s, %s %s %s", 118848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust pluralize(total, "method"), 119848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust maybe(failed, "failed", ", "), 120848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust maybe(skipped, "skipped", ", "), 121848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust maybe(passed, "passed", "")); 122848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.push(D, C, "suite-section-content"); 123848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.push("ul"); 124848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.push("li"); 125848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.addOptional(S, stats, C, "method-stats"); 126848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.pop("li"); 127848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust 12806342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust generateMethodList("Failed methods", new ResultsByStatus(suite, "failed", ITestResult.FAILURE), 12906342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust suiteName, header); 13006342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust generateMethodList("Skipped methods", new ResultsByStatus(suite, "skipped", ITestResult.SKIP), 13106342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust suiteName, header); 13206342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust generateMethodList("Passed methods", new ResultsByStatus(suite, "passed", ITestResult.SUCCESS), 13306342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust suiteName, header); 134848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust } 135848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust 1368e33619cdbd62e5eb6569dcb99b2f7b0402a575dCédric Beust private void generateInfo(XMLStringBuffer header, ISuite suite) { 137848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust // 138848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust // Info 139848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust // 140848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.push(D, C, "suite-section-title"); 141848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.addRequired(S, "Info"); 142848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.pop(D); 143848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust 144848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust // 145848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust // Info 146848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust // 147848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.push(D, C, "suite-section-content"); 148848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust 149848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.push("ul"); 150848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust 151848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust // "59 Tests" 152b67b89e0aff199b1b7ac2c67eb3d7c9222c1c046Cédric Beust addLinkTo(header, m_testPanel, suite); 153848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust 154848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust // "12 groups" 155b67b89e0aff199b1b7ac2c67eb3d7c9222c1c046Cédric Beust addLinkTo(header, m_groupPanel, suite); 156848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust 15771b49146fae442f11d76af035b279536e5c1d549Cédric Beust // Times 158b67b89e0aff199b1b7ac2c67eb3d7c9222c1c046Cédric Beust addLinkTo(header, m_timePanel, suite); 15971b49146fae442f11d76af035b279536e5c1d549Cédric Beust 16070fd043e61f436825c446ec484d39fbb2ded2f6bCédric Beust // Reporter 161b67b89e0aff199b1b7ac2c67eb3d7c9222c1c046Cédric Beust addLinkTo(header, m_reporterPanel, suite); 16270fd043e61f436825c446ec484d39fbb2ded2f6bCédric Beust 163234c85874acc0cd3360639949fbd566255ab31edCédric Beust // Chronological 164b67b89e0aff199b1b7ac2c67eb3d7c9222c1c046Cédric Beust addLinkTo(header, m_chronologicalPanel, suite); 165234c85874acc0cd3360639949fbd566255ab31edCédric Beust 1662ad7693fa5a5125aafeefff55ab96cbf8715d788Cédric Beust // Ignored methods 167b67b89e0aff199b1b7ac2c67eb3d7c9222c1c046Cédric Beust addLinkTo(header, m_ignoredMethodsPanel, suite); 1682ad7693fa5a5125aafeefff55ab96cbf8715d788Cédric Beust 169848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust // "testng.xml" 170b67b89e0aff199b1b7ac2c67eb3d7c9222c1c046Cédric Beust addLinkTo(header, m_testNgPanel, suite); 171848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust 172848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.pop("ul"); 173848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.pop(D); // suite-section-content 174848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust } 175848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust 176b67b89e0aff199b1b7ac2c67eb3d7c9222c1c046Cédric Beust private void addLinkTo(XMLStringBuffer header, INavigatorPanel panel, ISuite suite) { 177c92c41936d66dda27d28929671ccd7d304d02781Cédric Beust String text = panel.getNavigatorLink(suite); 1783432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust header.push("li"); 1793432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust header.push("a", "href", "#", 1803432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust "panel-name", panel.getPanelName(suite), 1813432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust C, "navigator-link "); 182b67b89e0aff199b1b7ac2c67eb3d7c9222c1c046Cédric Beust String className = panel.getClassName(); 1833432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust if (className != null) { 1843432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust header.addOptional(S, text, C, className); 1853432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust } else { 1863432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust header.addOptional(S, text); 1873432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust } 1883432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust header.pop("a"); 1893432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust header.pop("li"); 1903432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust } 1913432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust 192276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust private static String maybe(int count, String s, String sep) { 193276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust return count > 0 ? count + " " + s + sep: ""; 194276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust } 195276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 19606342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust private List<ITestResult> getMethodsByStatus(ISuite suite, int status) { 19706342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust List<ITestResult> result = Lists.newArrayList(); 19806342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust List<ITestResult> testResults = getModel().getTestResults(suite); 19906342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust for (ITestResult tr : testResults) { 20006342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust if (tr.getStatus() == status) { 20106342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust result.add(tr); 20206342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust } 20306342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust } 20406342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust Collections.sort(result, ResultsByClass.METHOD_NAME_COMPARATOR); 20506342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust 20606342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust return result; 20706342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust } 20806342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust 20906342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust private static interface IResultProvider { 21006342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust List<ITestResult> getResults(); 21106342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust String getType(); 21206342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust } 21306342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust 21406342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust private abstract static class BaseResultProvider implements IResultProvider { 21506342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust protected ISuite m_suite; 21606342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust protected String m_type; 21706342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust public BaseResultProvider(ISuite suite, String type) { 21806342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust m_suite = suite; 21906342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust m_type = type; 22006342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust } 2212ad7693fa5a5125aafeefff55ab96cbf8715d788Cédric Beust 22206342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust @Override 22306342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust public String getType() { 22406342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust return m_type; 22506342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust } 22606342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust } 22706342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust 22806342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust private class ResultsByStatus extends BaseResultProvider { 22906342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust private final int m_status; 23006342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust 23106342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust public ResultsByStatus(ISuite suite, String type, int status) { 23206342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust super(suite, type); 23306342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust m_status = status; 23406342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust } 23506342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust 23606342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust @Override 23706342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust public List<ITestResult> getResults() { 23806342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust return getMethodsByStatus(m_suite, m_status); 23906342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust } 24006342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust } 24106342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust 24206342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust private void generateMethodList(String name, IResultProvider provider, 243c66736dac6ae57ef48546ff1314ff8139655e2f5Cédric Beust String suiteName, XMLStringBuffer main) { 244276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust XMLStringBuffer xsb = new XMLStringBuffer(main.getCurrentIndent()); 24506342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust String type = provider.getType(); 246de5fa7ab1b0b8c0b9f6c07f286ccd4f46018f1f7Cédric Beust String image = Model.getImage(type); 247e90fee42931eb3d671fb8fe1dbbaaedca789963dCédric Beust 248276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust xsb.push("li"); 249e90fee42931eb3d671fb8fe1dbbaaedca789963dCédric Beust 250e90fee42931eb3d671fb8fe1dbbaaedca789963dCédric Beust // The methods themselves 251e90fee42931eb3d671fb8fe1dbbaaedca789963dCédric Beust xsb.addRequired(S, name, C, "method-list-title " + type); 252e90fee42931eb3d671fb8fe1dbbaaedca789963dCédric Beust 253e90fee42931eb3d671fb8fe1dbbaaedca789963dCédric Beust // The mark up to show the (hide)/(show) links 254e90fee42931eb3d671fb8fe1dbbaaedca789963dCédric Beust xsb.push(S, C, "show-or-hide-methods " + type); 2555211845e4f8c7091941f5c233d72d2e8cb84a5eeCédric Beust xsb.addRequired("a", " (hide)", "href", "#", C, "hide-methods " + type + " " + suiteName, 2565211845e4f8c7091941f5c233d72d2e8cb84a5eeCédric Beust "panel-name", suiteName); 2575211845e4f8c7091941f5c233d72d2e8cb84a5eeCédric Beust xsb.addRequired("a", " (show)", "href", "#",C, "show-methods " + type + " " + suiteName, 2585211845e4f8c7091941f5c233d72d2e8cb84a5eeCédric Beust "panel-name", suiteName); 259e90fee42931eb3d671fb8fe1dbbaaedca789963dCédric Beust xsb.pop(S); 260276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 261c66736dac6ae57ef48546ff1314ff8139655e2f5Cédric Beust // List of methods 2625211845e4f8c7091941f5c233d72d2e8cb84a5eeCédric Beust xsb.push(D, C, "method-list-content " + type + " " + suiteName); 263276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust int count = 0; 26406342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust List<ITestResult> testResults = provider.getResults(); 265e90fee42931eb3d671fb8fe1dbbaaedca789963dCédric Beust if (testResults != null) { 266e90fee42931eb3d671fb8fe1dbbaaedca789963dCédric Beust Collections.sort(testResults, ResultsByClass.METHOD_NAME_COMPARATOR); 267e90fee42931eb3d671fb8fe1dbbaaedca789963dCédric Beust for (ITestResult tr : testResults) { 26806342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust String testName = Model.getTestResultName(tr); 26906342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust xsb.push(S); 27006342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust xsb.addEmptyElement("img", "src", image, "width", "3%"); 27106342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust xsb.addRequired("a", testName, "href", "#", 27206342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust "hash-for-method", getModel().getTag(tr), 27306342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust "panel-name", suiteName, 27406342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust "title", tr.getTestClass().getName(), 27506342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust C, "method navigator-link"); 27606342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust xsb.pop(S); 27706342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust xsb.addEmptyElement("br"); 27806342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust count++; 279276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust } 280276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust } 281b067aa6284d39e160c607c76e6a9bb0a0b76a732Cédric Beust xsb.pop(D); 282276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust xsb.pop("li"); 283276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 284276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust if (count > 0) { 285276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust main.addString(xsb.toXML()); 286276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust } 287276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust } 288276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 289276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust} 290