// Copyright � 2006-2007 ASERT. Released under the Canoo Webtest license. package com.canoo.webtest.extension; import com.canoo.webtest.engine.StepExecutionException; import com.canoo.webtest.self.TestBlock; import com.canoo.webtest.self.ThrowAssert; import com.canoo.webtest.steps.AbstractFilter; import com.canoo.webtest.steps.Step; /** * Test for {@link MatchLinesFilter}. * * @author Paul King */ public class SelectLinesFilterTest extends BaseFilterTestCase { private static final String LS = System.getProperty("line.separator"); private static final String SOURCE = "The quick" + LS + "brown fox" + LS + "jumped over the" + LS + "lazy dog" + LS; private static final String START_REGEX_1 = ".*quick.*"; private static final String STOP_REGEX_1 = ".*over.*"; private static final String START_REGEX_2 = "[^e]*e.*"; private static final String STOP_REGEX_2 = "[^ ]* .*"; private static final String EXPECTED_1A = "The quick" + LS + "brown fox" + LS; private static final String EXPECTED_1B = "brown fox" + LS + "jumped over the" + LS; private static final String EXPECTED_1C = "The quick" + LS + "lazy dog" + LS; private static final String EXPECTED_1D = "The quick" + LS; private static final String EXPECTED_1E = "The quick" + LS + "jumped over the" + LS; private SelectLinesFilter fFilter; protected void setUp() throws Exception { super.setUp(); fFilter = (SelectLinesFilter) getStep(); fFilter.setStartRegex(START_REGEX_1); fFilter.setStopRegex(STOP_REGEX_1); fFilter.setIncludeStart("true"); fFilter.setIncludeStop("false"); checkFilter(EXPECTED_1A, SOURCE); fFilter.setIncludeStart("false"); fFilter.setIncludeStop("true"); checkFilter(EXPECTED_1B, SOURCE); fFilter.setRemove("true"); checkFilter(EXPECTED_1C, SOURCE); fFilter.setStartRegex(null); fFilter.setIncludeStart(null); fFilter.setRemove(null); fFilter.setIncludeStop("false"); checkFilter(EXPECTED_1A, SOURCE); fFilter.setStartRegex(START_REGEX_2); fFilter.setStopRegex(STOP_REGEX_2); checkFilter(EXPECTED_1D, SOURCE); fFilter.setRepeat("true"); checkFilter(EXPECTED_1E, SOURCE); } public void testFailsIfInsufficientParams() { final Step step = createAndConfigureStep(); final String msg = ThrowAssert.assertThrows(StepExecutionException.class, new TestBlock() { public void call() throws Throwable { step.execute(); } }); assertEquals("One of 'startRegex' or 'stopRegex' must be set!", msg); } public void testFailsIfNoResponse() { fFilter.setStartRegex("dummy"); checkFailsIfNoResponse(); } protected AbstractFilter getFilter() { return fFilter; } protected Step createStep() { return new SelectLinesFilter(); } }