// Copyright � 2004-2005 ASERT. Released under the Canoo Webtest license. package com.canoo.webtest.plugins.pdftest; import java.util.Iterator; import java.util.List; import com.canoo.webtest.engine.IStringVerifier; import com.canoo.webtest.engine.StepFailedException; import com.canoo.webtest.plugins.pdftest.htmlunit.PDFBookmark; import com.canoo.webtest.plugins.pdftest.htmlunit.PDFPage; /** * @author Paul King * @author Marc Guillemot * @webtest.step * category="PDF" * name="pdfVerifyBookmark" * alias="verifyPdfBookmark" * description="This step verifies the existence of a bookmark within a <key>pdf</key> document." */ public class PdfVerifyBookmarkStep extends AbstractVerifyPdfStep { private boolean fRegex; private String fName; /** * @param name * @webtest.parameter * required="yes" * description="The name of the bookmark to find." */ public void setName(final String name) { fName = name; } public String getName() { return fName; } /** * @param regex * @webtest.parameter required="no" * default="'false'" * description="Specifies whether the name represents a <key>regex</key>." */ public void setRegex(final boolean regex) { fRegex = regex; } public boolean getRegex() { return fRegex; } protected void verifyParameters() { super.verifyParameters(); nullParamCheck(getName(), "name"); } protected void verifyPdf(final PDFPage pdfPage) { final List bookmarks = pdfPage.getBookmarks(); final IStringVerifier verifier = getVerifier(getRegex()); for (Iterator iter = bookmarks.iterator(); iter.hasNext();) { final PDFBookmark element = (PDFBookmark) iter.next(); if (verifier.verifyStrings(getName(), element.getTitle())) return; // bookmark found } throw new StepFailedException("No bookmark found with name >" + getName() + "< (regex: " + getRegex() + ")", this); } }