// Copyright � 2002-2007 Canoo Engineering AG, Switzerland. package com.canoo.webtest.ant; import junit.framework.TestCase; import org.apache.tools.ant.Project; import org.apache.tools.ant.RuntimeConfigurable; import org.apache.tools.ant.UnknownElement; import org.apache.tools.ant.taskdefs.Echo; import com.canoo.webtest.engine.Context; import com.canoo.webtest.steps.BaseStepTestCase; /** * Unit tests for {@link WebtestPropertyHelper}. * @author Marc Guillemot */ public class WebTestPropertyHelperTest extends TestCase { private Project project; public void testReplaceProperties() { final WebtestTask webtest = new WebtestTask(); WebtestTask.setThreadContext(new Context(webtest)); project = new Project(); WebtestPropertyHelper.configureWebtestPropertyHelper(project); testReplacement("testtool", "testtool"); testReplacement("testtool browser", "testtool browser"); testReplacement("${testtool} #{browser}", "${testtool} #{browser}"); testReplacement("${testtool.built.on.#{browser}}", "${testtool.built.on.#{browser}}"); testReplacement("#{browser.of.${testtool}}", "#{browser.of.${testtool}}"); // define ant property "testtool" project.setProperty("testtool", "WebTest"); testReplacement("testtool", "testtool"); testReplacement("testtool browser", "testtool browser"); testReplacement("WebTest #{browser}", "${testtool} #{browser}"); testReplacement("${testtool.built.on.#{browser}}", "${testtool.built.on.#{browser}}"); testReplacement("#{browser.of.${testtool}}", "#{browser.of.${testtool}}"); // define dynamic property "browser" webtest.setDynamicProperty("browser", "HtmlUnit"); testReplacement("testtool", "testtool"); testReplacement("testtool browser", "testtool browser"); testReplacement("HtmlUnit", "#{browser}"); testReplacement("WebTest HtmlUnit", "${testtool} #{browser}"); testReplacement("${testtool.built.on.#{browser}}", "${testtool.built.on.#{browser}}"); testReplacement("#{browser.of.${testtool}}", "#{browser.of.${testtool}}"); // define dynamic property "browser.of.WebTest" webtest.setDynamicProperty("browser.of.WebTest", "embedded HtmlUnit"); testReplacement("embedded HtmlUnit", "#{browser.of.${testtool}}"); // define ant property "testtool.built.on.HtmlUnit" project.setNewProperty("testtool.built.on.HtmlUnit", "WebTest"); testReplacement("WebTest", "${testtool.built.on.#{browser}}"); // misc tests webtest.setDynamicProperty("foo", "#{foo}"); testReplacement("#{foo}", "#{foo}"); webtest.setDynamicProperty("foo2", "#{foo}"); testReplacement("#{foo}", "#{foo2}"); project.setProperty("bla", "${bla}"); testReplacement("${bla}", "${bla}"); project.setProperty("bla", "#{foo}"); testReplacement("#{foo}", "${bla}"); } private void testReplacement(final String expected, final String original) { final RuntimeConfigurable task = BaseStepTestCase.parseStep(project, Echo.class, "description='" + original + "'"); task.maybeConfigure(project); final UnknownElement elt = (UnknownElement) task.getProxy(); assertEquals(expected, elt.getDescription()); } }