NavigatorPanel.java revision 75dc72bcb18d5bdac3511ae2a83bd06ec479a1e3
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 1675dc72bcb18d5bdac3511ae2a83bd06ec479a1e3Cédric Beust private List<INavigatorPanel> m_panels; 1775dc72bcb18d5bdac3511ae2a83bd06ec479a1e3Cédric Beust 1875dc72bcb18d5bdac3511ae2a83bd06ec479a1e3Cédric Beust public NavigatorPanel(Model model, List<INavigatorPanel> panels) { 1973a5f0f792308fc7f7b972d5c7ae4936d85c7b2bCédric Beust super(model); 2075dc72bcb18d5bdac3511ae2a83bd06ec479a1e3Cédric Beust m_panels = panels; 21276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust } 22276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 23276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust @Override 2473a5f0f792308fc7f7b972d5c7ae4936d85c7b2bCédric Beust public void generate(XMLStringBuffer main) { 251e3250e4d7fc3e52d172d4c504c257d2d5e82ea8Cédric Beust main.push(D, C, "navigator-root"); 26d89f766403c534b48fdac8cd4c6349905e63945cCédric Beust main.push(D, C, "navigator-suite-header"); 27d89f766403c534b48fdac8cd4c6349905e63945cCédric Beust main.addRequired(S, "All suites"); 28d89f766403c534b48fdac8cd4c6349905e63945cCédric Beust main.push("a", C, "collapse-all-link", "href", "#", "title", "Collapse/expand all the suites"); 29d89f766403c534b48fdac8cd4c6349905e63945cCédric Beust main.push("img", "src", "collapseall.gif", C, "collapse-all-icon"); 30d89f766403c534b48fdac8cd4c6349905e63945cCédric Beust main.pop("img"); 31d89f766403c534b48fdac8cd4c6349905e63945cCédric Beust main.pop("a"); 32d89f766403c534b48fdac8cd4c6349905e63945cCédric Beust main.pop(D); 33276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust int suiteCount = 0; 3473a5f0f792308fc7f7b972d5c7ae4936d85c7b2bCédric Beust for (ISuite suite : getSuites()) { 35276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust if (suite.getResults().size() == 0) { 36276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust continue; 37276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust } 38276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 39276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust String suiteName = "suite-" + suiteCount; 40276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 41276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust XMLStringBuffer header = new XMLStringBuffer(main.getCurrentIndent()); 42276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 43276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust Map<String, ISuiteResult> results = suite.getResults(); 44276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust int failed = 0; 45276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust int skipped = 0; 46276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust int passed = 0; 47276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust for (ISuiteResult result : results.values()) { 48276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust ITestContext context = result.getTestContext(); 49276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust failed += context.getFailedTests().size(); 50276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust skipped += context.getSkippedTests().size(); 51276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust passed += context.getPassedTests().size(); 52276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust } 53276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 54276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust // Suite name in big font 55276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust header.push(D, C, "suite"); 560fe6cf657bd3740e8c877506169146565e37a557Cédric Beust header.push(D, C, "rounded-window"); 57276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust // Extra div so the highlighting logic will only highlight this line and not 58276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust // the entire container 590fe6cf657bd3740e8c877506169146565e37a557Cédric Beust header.push(D, C, "suite-header light-rounded-window-top"); 60276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust header.push("a", "href", "#", 61276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust "panel-name", suiteName, 62276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust C, "navigator-link"); 630fe6cf657bd3740e8c877506169146565e37a557Cédric Beust header.addOptional(S, suite.getName(), 640fe6cf657bd3740e8c877506169146565e37a557Cédric Beust C, "suite-name border-" + getModel().getStatusForSuite(suite.getName())); 65276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust header.pop("a"); 66276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust header.pop(D); 67276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 68b067aa6284d39e160c607c76e6a9bb0a0b76a732Cédric Beust header.push(D, C, "navigator-suite-content"); 69b067aa6284d39e160c607c76e6a9bb0a0b76a732Cédric Beust 708e33619cdbd62e5eb6569dcb99b2f7b0402a575dCédric Beust generateInfo(header, suite); 71848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust generateResult(header, failed, skipped, passed, suite, suiteName); 72276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 73276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust header.pop("ul"); 74276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 75b067aa6284d39e160c607c76e6a9bb0a0b76a732Cédric Beust header.pop(D); // suite-section-content 76276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust header.pop(D); // suite-header 77276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust header.pop(D); // suite 78276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 79b067aa6284d39e160c607c76e6a9bb0a0b76a732Cédric Beust header.pop(D); // result-section 80b067aa6284d39e160c607c76e6a9bb0a0b76a732Cédric Beust 81b067aa6284d39e160c607c76e6a9bb0a0b76a732Cédric Beust header.pop(D); // navigator-suite-content 82b067aa6284d39e160c607c76e6a9bb0a0b76a732Cédric Beust 83276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust main.addString(header.toXML()); 84276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 85276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust suiteCount++; 86276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust } 871e3250e4d7fc3e52d172d4c504c257d2d5e82ea8Cédric Beust main.pop(D); 88276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust } 89276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 90848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust private void generateResult(XMLStringBuffer header, int failed, int skipped, int passed, 91848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust ISuite suite, String suiteName) { 92848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust // 93848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust // Results 94848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust // 95848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.push(D, C, "result-section"); 96848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust 97848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.push(D, C, "suite-section-title"); 98848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.addRequired(S, "Results"); 99848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.pop(D); 100848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust 101848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust // Method stats 102848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust int total = failed + skipped + passed; 103848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust String stats = String.format("%s, %s %s %s", 104848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust pluralize(total, "method"), 105848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust maybe(failed, "failed", ", "), 106848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust maybe(skipped, "skipped", ", "), 107848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust maybe(passed, "passed", "")); 108848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.push(D, C, "suite-section-content"); 109848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.push("ul"); 110848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.push("li"); 111848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.addOptional(S, stats, C, "method-stats"); 112848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.pop("li"); 113848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust 11406342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust generateMethodList("Failed methods", new ResultsByStatus(suite, "failed", ITestResult.FAILURE), 11506342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust suiteName, header); 11606342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust generateMethodList("Skipped methods", new ResultsByStatus(suite, "skipped", ITestResult.SKIP), 11706342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust suiteName, header); 11806342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust generateMethodList("Passed methods", new ResultsByStatus(suite, "passed", ITestResult.SUCCESS), 11906342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust suiteName, header); 120848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust } 121848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust 1228e33619cdbd62e5eb6569dcb99b2f7b0402a575dCédric Beust private void generateInfo(XMLStringBuffer header, ISuite suite) { 123848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust // 124848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust // Info 125848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust // 126848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.push(D, C, "suite-section-title"); 127848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.addRequired(S, "Info"); 128848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.pop(D); 129848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust 130848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.push(D, C, "suite-section-content"); 131848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust 132848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.push("ul"); 133848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust 13475dc72bcb18d5bdac3511ae2a83bd06ec479a1e3Cédric Beust // All the panels 13575dc72bcb18d5bdac3511ae2a83bd06ec479a1e3Cédric Beust for (INavigatorPanel panel : m_panels) { 13675dc72bcb18d5bdac3511ae2a83bd06ec479a1e3Cédric Beust addLinkTo(header, panel, suite); 13775dc72bcb18d5bdac3511ae2a83bd06ec479a1e3Cédric Beust } 138848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust 139848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.pop("ul"); 140848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust header.pop(D); // suite-section-content 141848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust } 142848fa8ad10fce699e7d761825054d070b8ebfec1Cédric Beust 143b67b89e0aff199b1b7ac2c67eb3d7c9222c1c046Cédric Beust private void addLinkTo(XMLStringBuffer header, INavigatorPanel panel, ISuite suite) { 144c92c41936d66dda27d28929671ccd7d304d02781Cédric Beust String text = panel.getNavigatorLink(suite); 1453432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust header.push("li"); 1463432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust header.push("a", "href", "#", 1473432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust "panel-name", panel.getPanelName(suite), 1483432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust C, "navigator-link "); 149b67b89e0aff199b1b7ac2c67eb3d7c9222c1c046Cédric Beust String className = panel.getClassName(); 1503432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust if (className != null) { 1513432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust header.addOptional(S, text, C, className); 1523432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust } else { 1533432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust header.addOptional(S, text); 1543432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust } 1553432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust header.pop("a"); 1563432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust header.pop("li"); 1573432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust } 1583432a37713dd061e6bdbb204376ef232d91cc132Cédric Beust 159276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust private static String maybe(int count, String s, String sep) { 160276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust return count > 0 ? count + " " + s + sep: ""; 161276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust } 162276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 16306342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust private List<ITestResult> getMethodsByStatus(ISuite suite, int status) { 16406342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust List<ITestResult> result = Lists.newArrayList(); 16506342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust List<ITestResult> testResults = getModel().getTestResults(suite); 16606342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust for (ITestResult tr : testResults) { 16706342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust if (tr.getStatus() == status) { 16806342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust result.add(tr); 16906342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust } 17006342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust } 17106342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust Collections.sort(result, ResultsByClass.METHOD_NAME_COMPARATOR); 17206342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust 17306342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust return result; 17406342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust } 17506342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust 17606342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust private static interface IResultProvider { 17706342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust List<ITestResult> getResults(); 17806342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust String getType(); 17906342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust } 18006342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust 18106342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust private abstract static class BaseResultProvider implements IResultProvider { 18206342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust protected ISuite m_suite; 18306342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust protected String m_type; 18406342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust public BaseResultProvider(ISuite suite, String type) { 18506342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust m_suite = suite; 18606342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust m_type = type; 18706342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust } 1882ad7693fa5a5125aafeefff55ab96cbf8715d788Cédric Beust 18906342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust @Override 19006342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust public String getType() { 19106342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust return m_type; 19206342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust } 19306342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust } 19406342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust 19506342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust private class ResultsByStatus extends BaseResultProvider { 19606342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust private final int m_status; 19706342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust 19806342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust public ResultsByStatus(ISuite suite, String type, int status) { 19906342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust super(suite, type); 20006342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust m_status = status; 20106342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust } 20206342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust 20306342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust @Override 20406342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust public List<ITestResult> getResults() { 20506342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust return getMethodsByStatus(m_suite, m_status); 20606342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust } 20706342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust } 20806342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust 20906342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust private void generateMethodList(String name, IResultProvider provider, 210c66736dac6ae57ef48546ff1314ff8139655e2f5Cédric Beust String suiteName, XMLStringBuffer main) { 211276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust XMLStringBuffer xsb = new XMLStringBuffer(main.getCurrentIndent()); 21206342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust String type = provider.getType(); 213de5fa7ab1b0b8c0b9f6c07f286ccd4f46018f1f7Cédric Beust String image = Model.getImage(type); 214e90fee42931eb3d671fb8fe1dbbaaedca789963dCédric Beust 215276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust xsb.push("li"); 216e90fee42931eb3d671fb8fe1dbbaaedca789963dCédric Beust 217e90fee42931eb3d671fb8fe1dbbaaedca789963dCédric Beust // The methods themselves 218e90fee42931eb3d671fb8fe1dbbaaedca789963dCédric Beust xsb.addRequired(S, name, C, "method-list-title " + type); 219e90fee42931eb3d671fb8fe1dbbaaedca789963dCédric Beust 220e90fee42931eb3d671fb8fe1dbbaaedca789963dCédric Beust // The mark up to show the (hide)/(show) links 221e90fee42931eb3d671fb8fe1dbbaaedca789963dCédric Beust xsb.push(S, C, "show-or-hide-methods " + type); 2225211845e4f8c7091941f5c233d72d2e8cb84a5eeCédric Beust xsb.addRequired("a", " (hide)", "href", "#", C, "hide-methods " + type + " " + suiteName, 2235211845e4f8c7091941f5c233d72d2e8cb84a5eeCédric Beust "panel-name", suiteName); 2245211845e4f8c7091941f5c233d72d2e8cb84a5eeCédric Beust xsb.addRequired("a", " (show)", "href", "#",C, "show-methods " + type + " " + suiteName, 2255211845e4f8c7091941f5c233d72d2e8cb84a5eeCédric Beust "panel-name", suiteName); 226e90fee42931eb3d671fb8fe1dbbaaedca789963dCédric Beust xsb.pop(S); 227276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 228c66736dac6ae57ef48546ff1314ff8139655e2f5Cédric Beust // List of methods 2295211845e4f8c7091941f5c233d72d2e8cb84a5eeCédric Beust xsb.push(D, C, "method-list-content " + type + " " + suiteName); 230276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust int count = 0; 23106342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust List<ITestResult> testResults = provider.getResults(); 232e90fee42931eb3d671fb8fe1dbbaaedca789963dCédric Beust if (testResults != null) { 233e90fee42931eb3d671fb8fe1dbbaaedca789963dCédric Beust Collections.sort(testResults, ResultsByClass.METHOD_NAME_COMPARATOR); 234e90fee42931eb3d671fb8fe1dbbaaedca789963dCédric Beust for (ITestResult tr : testResults) { 23506342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust String testName = Model.getTestResultName(tr); 23606342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust xsb.push(S); 23706342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust xsb.addEmptyElement("img", "src", image, "width", "3%"); 23806342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust xsb.addRequired("a", testName, "href", "#", 23906342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust "hash-for-method", getModel().getTag(tr), 24006342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust "panel-name", suiteName, 24106342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust "title", tr.getTestClass().getName(), 24206342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust C, "method navigator-link"); 24306342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust xsb.pop(S); 24406342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust xsb.addEmptyElement("br"); 24506342fe6ccf1d8acadccd8a6edec29719df92752Cédric Beust count++; 246276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust } 247276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust } 248b067aa6284d39e160c607c76e6a9bb0a0b76a732Cédric Beust xsb.pop(D); 249276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust xsb.pop("li"); 250276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 251276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust if (count > 0) { 252276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust main.addString(xsb.toXML()); 253276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust } 254276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust } 255276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust 256276cc499a809d1363cc25d2d7590033ccc5bcf52Cédric Beust} 257