source: josm/trunk/test/unit/org/openstreetmap/josm/gui/preferences/ToolbarPreferencesTest.java@ 3989

Last change on this file since 3989 was 3175, checked in by jttt, 14 years ago

Allow to set parameters for actions on toolbar. Used by SearchAction to set searching expression (see #4546)

  • Property svn:mime-type set to text/plain
File size: 3.1 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.preferences;
3
4import java.awt.event.ActionEvent;
5import java.util.ArrayList;
6import java.util.HashMap;
7import java.util.List;
8import java.util.Map;
9
10import javax.swing.AbstractAction;
11import javax.swing.Action;
12
13import org.junit.Assert;
14import org.junit.Test;
15import org.openstreetmap.josm.actions.ActionParameter;
16import org.openstreetmap.josm.actions.ParameterizedAction;
17import org.openstreetmap.josm.actions.ActionParameter.StringActionParameter;
18import org.openstreetmap.josm.gui.preferences.ToolbarPreferences.ActionDefinition;
19import org.openstreetmap.josm.gui.preferences.ToolbarPreferences.ActionParser;
20
21public class ToolbarPreferencesTest {
22
23 private static class TestAction extends AbstractAction implements ParameterizedAction {
24
25 public TestAction() {
26 putValue("toolbar", "action");
27 }
28
29 public void actionPerformed(ActionEvent e, Map<String, Object> parameters) {
30 }
31
32 public List<ActionParameter<?>> getActionParameters() {
33 List<ActionParameter<?>> result = new ArrayList<ActionParameter<?>>();
34 result.add(new StringActionParameter("param1"));
35 result.add(new StringActionParameter("param2"));
36 return result;
37 }
38
39 public void actionPerformed(ActionEvent e) {
40
41 }
42
43 }
44
45 private void checkAction(ActionDefinition a, Object... params) {
46 Map<String, Object> expected = new HashMap<String, Object>();
47 for (int i=0; i<params.length; i+=2) {
48 expected.put((String)params[i], params[i+1]);
49 }
50 Assert.assertEquals(expected, a.getParameters());
51 }
52
53 @Test
54 public void test1() {
55 Map<String, Action> actions = new HashMap<String, Action>();
56 actions.put("action", new TestAction());
57 ActionParser parser = new ActionParser(actions);
58 checkAction(parser.loadAction("action(param1=value1)"), "param1", "value1");
59 checkAction(parser.loadAction("action(param1=value1,param2=2)"), "param1", "value1", "param2", "2");
60 checkAction(parser.loadAction("action(param1=value1,param2=2\\(\\=\\,\\\\)"), "param1", "value1", "param2", "2(=,\\");
61 checkAction(parser.loadAction("action(param1=value1,"), "param1", "value1");
62 checkAction(parser.loadAction("action(param1=value1"), "param1", "value1");
63 checkAction(parser.loadAction("action(param1="), "param1", "");
64 checkAction(parser.loadAction("action(param1"), "param1", "");
65 checkAction(parser.loadAction("action("));
66 checkAction(parser.loadAction("action"));
67 checkAction(parser.loadAction("action(uknownParam=aa)"));
68
69 Assert.assertEquals("action(param1=value1,param2=value2)", parser.saveAction(parser.loadAction("action(param1=value1,param2=value2)")));
70 Assert.assertEquals("action(param1=value1,param2=)", parser.saveAction(parser.loadAction("action(param1=value1)")));
71 Assert.assertEquals("action(param1=value1,param2=2\\(\\=\\,\\\\)", parser.saveAction(parser.loadAction("action(param1=value1,param2=2\\(\\=\\,\\\\)")));
72 }
73
74}
Note: See TracBrowser for help on using the repository browser.