// Copyright � 2004-2005 ASERT. Released under the Canoo Webtest license. package com.canoo.webtest.extension; import junit.framework.TestCase; import com.canoo.webtest.ant.WebtestTask; import com.canoo.webtest.engine.Context; import com.canoo.webtest.self.ContextStub; import com.canoo.webtest.steps.Step; /** * LineSeparatorFilter Tester. * * @author Paul King */ public class LineSeparatorFilterTest extends TestCase { private static final String OLD_MAC = "Test\r"; private static final String UNIX = "Test\n"; private static final String WINDOWS = "Test\r\n"; private static final String WINDOWS_0 = ""; private static final String WINDOWS_1 = "\r\n"; private static final String WINDOWS_2 = "Test"; private static final String WINDOWS_3 = "Test\r\nTest"; private static final String WINDOWS_4 = "Test\r\nTest\r\n"; private static final String EXPECTED = "Test\n"; private static final String EXPECTED_0 = ""; private static final String EXPECTED_1 = "\n"; private static final String EXPECTED_2 = "Test"; private static final String EXPECTED_3 = "Test\nTest"; private static final String EXPECTED_4 = "Test\nTest\n"; private static final String LINE_SEP_KEY = "line.separator"; private final String fSavedLineSeparator = System.getProperty(LINE_SEP_KEY); private final Step fFilter = new LineSeparatorFilter(); protected void tearDown() throws Exception { super.tearDown(); System.setProperty(LINE_SEP_KEY, fSavedLineSeparator); } public void testAllPlatforms() { System.setProperty("line.separator", "\r"); checkFilter(EXPECTED, OLD_MAC); System.setProperty("line.separator", "\n"); checkFilter(EXPECTED, UNIX); System.setProperty("line.separator", "\r\n"); checkFilter(EXPECTED, WINDOWS); } private void checkFilter(final String expected, final String target) { final Context context = new ContextStub(target, "text/plain"); WebtestTask.setThreadContext(context); fFilter.setProject(context.getWebtest().getProject()); fFilter.execute(); assertEquals(expected, context.getCurrentResponse().getWebResponse().getContentAsString()); } public void testBoundaries() { System.setProperty("line.separator", "\r\n"); checkFilter(EXPECTED_0, WINDOWS_0); checkFilter(EXPECTED_1, WINDOWS_1); checkFilter(EXPECTED_2, WINDOWS_2); checkFilter(EXPECTED_3, WINDOWS_3); checkFilter(EXPECTED_4, WINDOWS_4); } }