diff options
author | Simon Kaegi | 2008-08-27 21:18:49 +0000 |
---|---|---|
committer | Simon Kaegi | 2008-08-27 21:18:49 +0000 |
commit | 48efef9dabe72c41514c0d2ead0855ba99591c58 (patch) | |
tree | 3bde91b9d550b207523d6b684f5baf4dca7961bc /bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine | |
parent | 9ffdc4069b0639d2fac6ea2582fa97875bf64315 (diff) | |
download | rt.equinox.p2-48efef9dabe72c41514c0d2ead0855ba99591c58.tar.gz rt.equinox.p2-48efef9dabe72c41514c0d2ead0855ba99591c58.tar.xz rt.equinox.p2-48efef9dabe72c41514c0d2ead0855ba99591c58.zip |
Bug 238240 InstructionParser should support escaped characters
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine')
2 files changed, 207 insertions, 0 deletions
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/AllTests.java index 22ddb57f6..ef7e02a82 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/AllTests.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/AllTests.java @@ -22,6 +22,7 @@ public class AllTests extends TestCase { suite.addTestSuite(EngineTest.class); suite.addTestSuite(PhaseSetTest.class); suite.addTestSuite(PhaseTest.class); + suite.addTestSuite(ParameterizedProvisioningActionTest.class); suite.addTestSuite(ProfileTest.class); suite.addTestSuite(ProfileRegistryTest.class); suite.addTestSuite(TouchpointTest.class); diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/ParameterizedProvisioningActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/ParameterizedProvisioningActionTest.java new file mode 100644 index 000000000..ad2937891 --- /dev/null +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/ParameterizedProvisioningActionTest.java @@ -0,0 +1,206 @@ +/******************************************************************************* + * Copyright (c) 2007, 2008 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.equinox.p2.tests.engine; + +import java.util.HashMap; +import java.util.Map; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.equinox.internal.p2.engine.ParameterizedProvisioningAction; +import org.eclipse.equinox.internal.provisional.p2.engine.ProvisioningAction; +import org.eclipse.equinox.p2.tests.AbstractProvisioningTest; + +public class ParameterizedProvisioningActionTest extends AbstractProvisioningTest { + + boolean passTest = false; + String value; + ProvisioningAction action = new ProvisioningAction() { + + public IStatus execute(Map parameters) { + value = (String) parameters.get("test"); + return null; + } + + public IStatus undo(Map parameters) { + return null; + } + }; + + public ParameterizedProvisioningActionTest(String name) { + super(name); + } + + public void testBasicParameter() { + value = null; + + Map actionParameters = new HashMap(); + actionParameters.put("test", "testValue"); + + Map phaseParameters = new HashMap(); + ParameterizedProvisioningAction pAction = new ParameterizedProvisioningAction(action, actionParameters); + pAction.execute(phaseParameters); + + assertEquals("testValue", value); + } + + public void testVariableParameter() { + passTest = false; + + Map actionParameters = new HashMap(); + actionParameters.put("test", "test${variable}"); + + Map phaseParameters = new HashMap(); + phaseParameters.put("variable", "Value"); + ParameterizedProvisioningAction pAction = new ParameterizedProvisioningAction(action, actionParameters); + pAction.execute(phaseParameters); + assertEquals("testValue", value); + } + + public void testEscapedCharacterParameter() { + passTest = false; + + Map actionParameters = new HashMap(); + actionParameters.put("test", "testV${#97}lue"); + + Map phaseParameters = new HashMap(); + phaseParameters.put("variable", "Value"); + + ParameterizedProvisioningAction pAction = new ParameterizedProvisioningAction(action, actionParameters); + pAction.execute(phaseParameters); + assertEquals("testValue", value); + } + + public void testOutOfRangeEscapedCharacterParameter() { + passTest = false; + + Map actionParameters = new HashMap(); + actionParameters.put("test", "${#999999999999999999999999999999999999999999999}"); + + Map phaseParameters = new HashMap(); + phaseParameters.put("variable", "Value"); + + ParameterizedProvisioningAction pAction = new ParameterizedProvisioningAction(action, actionParameters); + pAction.execute(phaseParameters); + assertEquals("", value); + } + + public void testLargerThanCharEscapedCharacterParameter() { + passTest = false; + + Map actionParameters = new HashMap(); + actionParameters.put("test", "testV${#65633}lue"); // #65633 should be "a" if we allow overflow but we do not so null + + Map phaseParameters = new HashMap(); + phaseParameters.put("variable", "Value"); + + ParameterizedProvisioningAction pAction = new ParameterizedProvisioningAction(action, actionParameters); + pAction.execute(phaseParameters); + assertEquals("testVlue", value); + } + + public void testNegativeOutOfRangeCharEscapedCharacterParameter() { + passTest = false; + + Map actionParameters = new HashMap(); + actionParameters.put("test", "testV${#-65439}lue"); // #65633 should be "a" if we allow underflow but we do not so null + + Map phaseParameters = new HashMap(); + phaseParameters.put("variable", "Value"); + + ParameterizedProvisioningAction pAction = new ParameterizedProvisioningAction(action, actionParameters); + pAction.execute(phaseParameters); + assertEquals("testVlue", value); + } + + public void testNotNumberEscapedCharacterParameter() { + passTest = false; + + Map actionParameters = new HashMap(); + actionParameters.put("test", "${#xFFFF}"); + + Map phaseParameters = new HashMap(); + phaseParameters.put("variable", "Value"); + + ParameterizedProvisioningAction pAction = new ParameterizedProvisioningAction(action, actionParameters); + pAction.execute(phaseParameters); + assertEquals("", value); + } + + public void testNaughtyEscapedCharactersParameter() { + passTest = false; + + Map actionParameters = new HashMap(); + actionParameters.put("test", "${#36} ${#44} ${#58} ${#59} ${#123} ${#125}"); + + Map phaseParameters = new HashMap(); + phaseParameters.put("variable", "Value"); + + ParameterizedProvisioningAction pAction = new ParameterizedProvisioningAction(action, actionParameters); + pAction.execute(phaseParameters); + assertEquals("$ , : ; { }", value); + } + + public void testNullCharEscapedCharactersParameter() { + passTest = false; + + Map actionParameters = new HashMap(); + actionParameters.put("test", "a${#0}b"); + + Map phaseParameters = new HashMap(); + phaseParameters.put("variable", "Value"); + + ParameterizedProvisioningAction pAction = new ParameterizedProvisioningAction(action, actionParameters); + pAction.execute(phaseParameters); + assertEquals("a\0b", value); + } + + public void testMaxCharEscapedCharactersParameter() { + passTest = false; + + Map actionParameters = new HashMap(); + actionParameters.put("test", "a${#65535}b"); + + Map phaseParameters = new HashMap(); + phaseParameters.put("variable", "Value"); + + ParameterizedProvisioningAction pAction = new ParameterizedProvisioningAction(action, actionParameters); + pAction.execute(phaseParameters); + assertEquals("a\uFFFFb", value); + } + + public void testOverMaxCharEscapedCharactersParameter() { + passTest = false; + + Map actionParameters = new HashMap(); + actionParameters.put("test", "a${#65536}b"); + + Map phaseParameters = new HashMap(); + phaseParameters.put("variable", "Value"); + + ParameterizedProvisioningAction pAction = new ParameterizedProvisioningAction(action, actionParameters); + pAction.execute(phaseParameters); + assertEquals("ab", value); + } + + public void testUnderMinCharEscapedCharactersParameter() { + passTest = false; + + Map actionParameters = new HashMap(); + actionParameters.put("test", "a${#-1}b"); + + Map phaseParameters = new HashMap(); + phaseParameters.put("variable", "Value"); + + ParameterizedProvisioningAction pAction = new ParameterizedProvisioningAction(action, actionParameters); + pAction.execute(phaseParameters); + assertEquals("ab", value); + } + +} |