// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.gui.preferences; import java.awt.event.ActionEvent; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.swing.AbstractAction; import javax.swing.Action; import org.junit.Assert; import org.junit.Test; import org.openstreetmap.josm.actions.ActionParameter; import org.openstreetmap.josm.actions.ParameterizedAction; import org.openstreetmap.josm.actions.ActionParameter.StringActionParameter; import org.openstreetmap.josm.gui.preferences.ToolbarPreferences.ActionDefinition; import org.openstreetmap.josm.gui.preferences.ToolbarPreferences.ActionParser; public class ToolbarPreferencesTest { private static class TestAction extends AbstractAction implements ParameterizedAction { public TestAction() { putValue("toolbar", "action"); } public void actionPerformed(ActionEvent e, Map parameters) { } public List> getActionParameters() { List> result = new ArrayList>(); result.add(new StringActionParameter("param1")); result.add(new StringActionParameter("param2")); return result; } public void actionPerformed(ActionEvent e) { } } private void checkAction(ActionDefinition a, Object... params) { Map expected = new HashMap(); for (int i=0; i actions = new HashMap(); actions.put("action", new TestAction()); ActionParser parser = new ActionParser(actions); checkAction(parser.loadAction("action(param1=value1)"), "param1", "value1"); checkAction(parser.loadAction("action(param1=value1,param2=2)"), "param1", "value1", "param2", "2"); checkAction(parser.loadAction("action(param1=value1,param2=2\\(\\=\\,\\\\)"), "param1", "value1", "param2", "2(=,\\"); checkAction(parser.loadAction("action(param1=value1,"), "param1", "value1"); checkAction(parser.loadAction("action(param1=value1"), "param1", "value1"); checkAction(parser.loadAction("action(param1="), "param1", ""); checkAction(parser.loadAction("action(param1"), "param1", ""); checkAction(parser.loadAction("action(")); checkAction(parser.loadAction("action")); checkAction(parser.loadAction("action(uknownParam=aa)")); Assert.assertEquals("action(param1=value1,param2=value2)", parser.saveAction(parser.loadAction("action(param1=value1,param2=value2)"))); Assert.assertEquals("action(param1=value1,param2=)", parser.saveAction(parser.loadAction("action(param1=value1)"))); Assert.assertEquals("action(param1=value1,param2=2\\(\\=\\,\\\\)", parser.saveAction(parser.loadAction("action(param1=value1,param2=2\\(\\=\\,\\\\)"))); } }