void assertTestResultsAsExpected(WebClient wc, Run run, String restOfUrl,
String packageName,
String expectedResult, String expectedDurationStr,
int expectedTotalTests, int expectedTotalDiff,
int expectedFailCount, int expectedFailDiff,
int expectedSkipCount, int expectedSkipDiff) throws IOException, SAXException {
XmlPage xmlPage = wc.goToXml(run.getUrl() + restOfUrl + "/" + packageName + "/api/xml");
int expectedPassCount = expectedTotalTests - expectedFailCount - expectedSkipCount;
rule.assertXPathValue(xmlPage, "/packageResult/failCount", Integer.toString(expectedFailCount));
rule.assertXPathValue(xmlPage, "/packageResult/skipCount", Integer.toString(expectedSkipCount));
rule.assertXPathValue(xmlPage, "/packageResult/passCount", Integer.toString(expectedPassCount));
rule.assertXPathValue(xmlPage, "/packageResult/name", packageName);
HtmlPage testResultPage = wc.getPage(run, restOfUrl);
String xpathToFailDiff = "//table[@id='testresult']//tr[td//span[text()=\"" + packageName + "\"]]/td[4]";
String xpathToSkipDiff = "//table[@id='testresult']//tr[td//span[text()=\"" + packageName + "\"]]/td[6]";
String xpathToTotalDiff = "//table[@id='testresult']//tr[td//span[text()=\"" + packageName + "\"]]/td[last()]";
Object totalDiffObj = testResultPage.getFirstByXPath(xpathToTotalDiff);
assertPaneDiffText("total diff", expectedTotalDiff, totalDiffObj);
Object failDiffObj = testResultPage.getFirstByXPath(xpathToFailDiff);
assertPaneDiffText("failure diff", expectedFailDiff, failDiffObj);
Object skipDiffObj = testResultPage.getFirstByXPath(xpathToSkipDiff);
assertPaneDiffText("skip diff", expectedSkipDiff, skipDiffObj);
}