Przeglądaj źródła

Add renamealias to corealiasdialogmodel

Change-Id: I3a6f219279f8c0a6a8a0f7471114b371a7039ef7
Reviewed-on: http://gerrit.dmdirc.com/3524
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Chris Smith <chris@dmdirc.com>
pull/1/head
Greg Holmes 10 lat temu
rodzic
commit
44911486b0

+ 19
- 0
src/com/dmdirc/commandparser/aliases/Alias.java Wyświetl plik

25
 import com.dmdirc.commandparser.CommandInfo;
25
 import com.dmdirc.commandparser.CommandInfo;
26
 import com.dmdirc.commandparser.CommandType;
26
 import com.dmdirc.commandparser.CommandType;
27
 
27
 
28
+import com.google.common.base.Objects;
29
+
28
 /**
30
 /**
29
  * Describes a user-defined command alias.
31
  * Describes a user-defined command alias.
30
  */
32
  */
73
         return type;
75
         return type;
74
     }
76
     }
75
 
77
 
78
+    @Override
79
+    public boolean equals(final Object object) {
80
+        if (!(object instanceof Alias)) {
81
+            return false;
82
+        }
83
+        final Alias alias = (Alias) object;
84
+        return Objects.equal(getName(), alias.getName())
85
+                && Objects.equal(getMinArguments(), alias.getMinArguments())
86
+                && Objects.equal(getSubstitution(), alias.getSubstitution())
87
+                && Objects.equal(getType(), alias.getType());
88
+    }
89
+
90
+    @Override
91
+    public int hashCode() {
92
+        return Objects.hashCode(name, minArguments, substitution, type);
93
+    }
94
+
76
 }
95
 }

+ 14
- 0
src/com/dmdirc/commandparser/aliases/CoreAliasDialogModel.java Wyświetl plik

80
         Preconditions.checkNotNull(name);
80
         Preconditions.checkNotNull(name);
81
         Preconditions.checkNotNull(alias);
81
         Preconditions.checkNotNull(alias);
82
         Preconditions.checkArgument(aliases.containsKey(name));
82
         Preconditions.checkArgument(aliases.containsKey(name));
83
+        Preconditions.checkArgument(name.equals(alias.getName()));
83
         aliases.put(name, alias);
84
         aliases.put(name, alias);
84
         listeners.getCallable(AliasDialogModelListener.class).aliasEdited(name);
85
         listeners.getCallable(AliasDialogModelListener.class).aliasEdited(name);
85
     }
86
     }
86
 
87
 
88
+    @Override
89
+    public void renameAlias(final String oldName, final String newName) {
90
+        Preconditions.checkNotNull(oldName);
91
+        Preconditions.checkNotNull(newName);
92
+        Preconditions.checkArgument(aliases.containsKey(oldName));
93
+        Preconditions.checkArgument(!aliases.containsKey(newName));
94
+        final Alias alias = aliases.get(oldName);
95
+        aliases.remove(oldName);
96
+        aliases.put(newName, new Alias(alias.getType(), newName, alias.getMinArguments(),
97
+                alias.getSubstitution()));
98
+        listeners.getCallable(AliasDialogModelListener.class).aliasRenamed(oldName, newName);
99
+    }
100
+
87
     @Override
101
     @Override
88
     public void removeAlias(final String name) {
102
     public void removeAlias(final String name) {
89
         Preconditions.checkNotNull(name);
103
         Preconditions.checkNotNull(name);

+ 9
- 0
src/com/dmdirc/interfaces/ui/AliasDialogModel.java Wyświetl plik

64
      */
64
      */
65
     void editAlias(final String name, final Alias alias);
65
     void editAlias(final String name, final Alias alias);
66
 
66
 
67
+    /**
68
+     * Renames an existing alias in the model. This method should not be used for renaming an alias
69
+     * {@link #renameAlias(String, String)}
70
+     *
71
+     * @param oldName Old name for the alias
72
+     * @param newName New name for the alias
73
+     */
74
+    void renameAlias(final String oldName, final String newName);
75
+
67
     /**
76
     /**
68
      * Removes the named alias from the model.
77
      * Removes the named alias from the model.
69
      *
78
      *

+ 8
- 0
src/com/dmdirc/interfaces/ui/AliasDialogModelListener.java Wyświetl plik

52
      */
52
      */
53
     void aliasEdited(String name);
53
     void aliasEdited(String name);
54
 
54
 
55
+    /**
56
+     * An alias has been renamed.
57
+     *
58
+     * @param oldName Old name of the alias
59
+     * @param newName New name of the alias
60
+     */
61
+    void aliasRenamed(String oldName, String newName);
62
+
55
     /**
63
     /**
56
      * An alias selection has been changed.
64
      * An alias selection has been changed.
57
      *
65
      *

+ 37
- 2
test/com/dmdirc/commandparser/aliases/CoreAliasDialogModelTest.java Wyświetl plik

46
     @Mock private AliasManager aliasModel;
46
     @Mock private AliasManager aliasModel;
47
     @Mock private AliasDialogModelListener listener;
47
     @Mock private AliasDialogModelListener listener;
48
     private final Alias alias1 = new Alias(CommandType.TYPE_GLOBAL, "alias1", 0, "");
48
     private final Alias alias1 = new Alias(CommandType.TYPE_GLOBAL, "alias1", 0, "");
49
+    private final Alias alias2Edited = new Alias(CommandType.TYPE_GLOBAL, "alias1", 1, "");
49
     private final Alias alias2 = new Alias(CommandType.TYPE_GLOBAL, "alias2", 0, "");
50
     private final Alias alias2 = new Alias(CommandType.TYPE_GLOBAL, "alias2", 0, "");
50
     private Set<Alias> aliases;
51
     private Set<Alias> aliases;
51
 
52
 
105
         when(aliasModel.getAliases()).thenReturn(aliases);
106
         when(aliasModel.getAliases()).thenReturn(aliases);
106
         final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel);
107
         final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel);
107
         assertEquals(model.getAliases().size(), 1);
108
         assertEquals(model.getAliases().size(), 1);
109
+        assertEquals(model.getAlias("alias1").get().getMinArguments(), 0);
110
+        model.editAlias("alias1", alias2Edited);
111
+        assertEquals(model.getAlias("alias1").get().getMinArguments(), 1);
112
+    }
113
+
114
+    @Test(expected = IllegalArgumentException.class)
115
+    public void testEditAliasFail() {
116
+        aliases.add(alias1);
117
+        when(aliasModel.getAliases()).thenReturn(aliases);
118
+        final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel);
119
+        assertEquals(model.getAliases().size(), 1);
120
+        assertEquals(model.getAlias("alias1").get().getMinArguments(), 0);
108
         model.editAlias("alias1", alias2);
121
         model.editAlias("alias1", alias2);
109
-        assertEquals(model.getAlias("alias1").get(), alias2);
110
     }
122
     }
111
 
123
 
112
     @Test
124
     @Test
115
         when(aliasModel.getAliases()).thenReturn(aliases);
127
         when(aliasModel.getAliases()).thenReturn(aliases);
116
         final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel);
128
         final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel);
117
         model.addListener(listener);
129
         model.addListener(listener);
118
-        model.editAlias("alias1", alias2);
130
+        model.editAlias("alias1", alias2Edited);
119
         verify(listener).aliasEdited("alias1");
131
         verify(listener).aliasEdited("alias1");
120
     }
132
     }
121
 
133
 
134
+    @Test
135
+    public void testRenameAlias() {
136
+        aliases.add(alias1);
137
+        when(aliasModel.getAliases()).thenReturn(aliases);
138
+        final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel);
139
+        assertEquals(model.getAliases().size(), 1);
140
+        assertEquals(model.getAlias("alias1").get(), alias1);
141
+        model.renameAlias("alias1", "alias2");
142
+        assertEquals(model.getAlias("alias2").get(), alias2);
143
+    }
144
+
145
+    @Test
146
+    public void testRenameAliasListener() {
147
+        aliases.add(alias1);
148
+        when(aliasModel.getAliases()).thenReturn(aliases);
149
+        final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel);
150
+        model.addListener(listener);
151
+        assertEquals(model.getAliases().size(), 1);
152
+        assertEquals(model.getAlias("alias1").get(), alias1);
153
+        model.renameAlias("alias1", "alias2");
154
+        verify(listener).aliasRenamed("alias1", "alias2");
155
+    }
156
+
122
     @Test
157
     @Test
123
     public void testRemoveAlias() {
158
     public void testRemoveAlias() {
124
         aliases.add(alias1);
159
         aliases.add(alias1);

Ładowanie…
Anuluj
Zapisz