123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317 |
- /*
- * Copyright (c) 2006-2014 DMDirc Developers
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
- package com.dmdirc.ui.core.aliases;
-
- import com.dmdirc.commandparser.CommandType;
- import com.dmdirc.commandparser.aliases.Alias;
- import com.dmdirc.commandparser.aliases.AliasFactory;
- import com.dmdirc.commandparser.aliases.AliasManager;
- import com.dmdirc.interfaces.CommandController;
- import com.dmdirc.interfaces.ui.AliasDialogModelListener;
-
- import com.google.common.base.Optional;
-
- import java.util.HashSet;
- import java.util.Set;
-
- import org.junit.Before;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import org.mockito.Mock;
- import org.mockito.invocation.InvocationOnMock;
- import org.mockito.runners.MockitoJUnitRunner;
- import org.mockito.stubbing.Answer;
-
- import static org.junit.Assert.assertEquals;
- import static org.junit.Assert.assertFalse;
- import static org.junit.Assert.assertTrue;
- import static org.mockito.Matchers.anyInt;
- import static org.mockito.Matchers.anyString;
- import static org.mockito.Mockito.never;
- import static org.mockito.Mockito.verify;
- import static org.mockito.Mockito.when;
-
- @RunWith(MockitoJUnitRunner.class)
- public class CoreAliasDialogModelTest {
-
- @Mock private AliasManager aliasModel;
- @Mock private AliasFactory aliasFactory;
- @Mock private AliasDialogModelListener listener;
- @Mock private CommandController commandController;
- private final Alias alias1 = new Alias(CommandType.TYPE_GLOBAL, "alias1", 0, "");
- private final Alias alias1Edited = new Alias(CommandType.TYPE_GLOBAL, "alias2", 0, "");
- private final Alias alias2Edited = new Alias(CommandType.TYPE_GLOBAL, "alias1", 1, "");
- private final Alias alias2 = new Alias(CommandType.TYPE_GLOBAL, "alias2", 0, "");
- private Set<Alias> aliases;
-
- @Before
- public void setupAliases() {
- aliases = new HashSet<>();
- when(commandController.getCommandChar()).thenReturn('/');
- }
-
- @Before
- public void setUpFactory() {
- when(aliasFactory.createAlias(anyString(), anyInt(), anyString())).thenAnswer(
- new Answer<Alias>() {
- @Override
- public Alias answer(final InvocationOnMock invocation) throws Throwable {
- return new Alias(
- CommandType.TYPE_GLOBAL,
- (String) invocation.getArguments()[0],
- (Integer) invocation.getArguments()[1],
- (String) invocation.getArguments()[2]
- );
- }
- });
- }
-
- @Test
- public void testgetAliases() {
- aliases.add(alias1);
- aliases.add(alias2);
- when(aliasModel.getAliases()).thenReturn(aliases);
- final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory,
- commandController);
- model.loadModel();
- assertEquals(model.getAliases().size(), 2);
- }
-
- @Test
- public void testGetAliasExists() {
- aliases.add(alias1);
- aliases.add(alias2);
- when(aliasModel.getAliases()).thenReturn(aliases);
- final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory,
- commandController);
- model.loadModel();
- assertEquals(model.getAlias(alias1.getName()).get(), alias1);
- }
-
- @Test
- public void testGetAliasNotExists() {
- aliases.add(alias1);
- aliases.add(alias2);
- when(aliasModel.getAliases()).thenReturn(aliases);
- final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory,
- commandController);
- model.loadModel();
- assertFalse(model.getAlias("test").isPresent());
- }
-
- @Test
- public void testAddAlias() {
- when(aliasModel.getAliases()).thenReturn(aliases);
- final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory,
- commandController);
- model.loadModel();
- assertEquals(model.getAliases().size(), 0);
- model.addAlias(alias1.getName(), alias1.getMinArguments(), alias1.getSubstitution());
- assertEquals(model.getAliases().size(), 1);
- }
-
- @Test
- public void testAddAliasListener() {
- when(aliasModel.getAliases()).thenReturn(aliases);
- final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory,
- commandController);
- model.loadModel();
- model.addListener(listener);
- model.addAlias(alias1.getName(), alias1.getMinArguments(), alias1.getSubstitution());
- verify(listener).aliasAdded(alias1);
- }
-
- @Test
- public void testEditAlias() {
- aliases.add(alias1);
- when(aliasModel.getAliases()).thenReturn(aliases);
- final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory,
- commandController);
- model.loadModel();
- assertEquals(model.getAliases().size(), 1);
- assertEquals(model.getAlias(alias2Edited.getName()).get().getMinArguments(), 0);
- model.editAlias(alias1.getName(), alias2Edited.getMinArguments(), alias2Edited.
- getSubstitution());
- assertEquals(model.getAlias(alias1.getName()).get().getMinArguments(), 1);
- }
-
- @Test
- public void testEditAliasListener() {
- aliases.add(alias1);
- when(aliasModel.getAliases()).thenReturn(aliases);
- final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory,
- commandController);
- model.loadModel();
- model.addListener(listener);
- model.editAlias(alias1.getName(), alias2Edited.getMinArguments(), alias2Edited.
- getSubstitution());
- verify(listener).aliasEdited(alias1, alias2Edited);
- }
-
- @Test
- public void testRenameAlias() {
- aliases.add(alias1);
- when(aliasModel.getAliases()).thenReturn(aliases);
- final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory,
- commandController);
- model.loadModel();
- assertEquals(model.getAliases().size(), 1);
- assertEquals(model.getAlias(alias1.getName()).get(), alias1);
- model.renameAlias(alias1.getName(), alias1Edited.getName());
- assertEquals(model.getAlias(alias1Edited.getName()).get(), alias2);
- }
-
- @Test
- public void testRenameAliasListener() {
- aliases.add(alias1);
- when(aliasModel.getAliases()).thenReturn(aliases);
- final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory,
- commandController);
- model.loadModel();
- model.addListener(listener);
- assertEquals(model.getAliases().size(), 1);
- assertEquals(model.getAlias(alias1.getName()).get(), alias1);
- model.renameAlias(alias1.getName(), alias1Edited.getName());
- verify(listener).aliasRenamed(alias1, alias1Edited);
- }
-
- @Test
- public void testRemoveAlias() {
- aliases.add(alias1);
- aliases.add(alias2);
- when(aliasModel.getAliases()).thenReturn(aliases);
- final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory,
- commandController);
- model.loadModel();
- assertEquals(model.getAliases().size(), 2);
- model.removeAlias(alias1.getName());
- assertEquals(model.getAliases().size(), 1);
- assertFalse(model.getAlias(alias1.getName()).isPresent());
- }
-
- @Test
- public void testRemoveAliasListener() {
- aliases.add(alias1);
- aliases.add(alias2);
- when(aliasModel.getAliases()).thenReturn(aliases);
- final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory,
- commandController);
- model.loadModel();
- model.addListener(listener);
- model.removeAlias(alias1.getName());
- verify(listener).aliasRemoved(alias1);
- }
-
- @Test
- public void testSelectedAliasInitiallyNotNull() {
- aliases.add(alias1);
- aliases.add(alias2);
- when(aliasModel.getAliases()).thenReturn(aliases);
- final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory,
- commandController);
- model.loadModel();
- assertEquals(model.getAliases().size(), 2);
- assertTrue(model.getSelectedAlias().isPresent());
- }
-
- @Test
- public void testSelectedAliasNotNull() {
- aliases.add(alias1);
- aliases.add(alias2);
- when(aliasModel.getAliases()).thenReturn(aliases);
- final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory,
- commandController);
- model.loadModel();
- assertEquals(model.getAliases().size(), 2);
- assertTrue(model.getSelectedAlias().isPresent());
- model.setSelectedAlias(Optional.fromNullable(alias2));
- assertEquals(model.getSelectedAlias().get(), alias2);
- }
-
- @Test
- public void testSelectedAliasToNull() {
- aliases.add(alias1);
- aliases.add(alias2);
- when(aliasModel.getAliases()).thenReturn(aliases);
- final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory,
- commandController);
- model.loadModel();
- assertEquals(model.getAliases().size(), 2);
- assertTrue(model.getSelectedAlias().isPresent());
- model.setSelectedAlias(Optional.fromNullable(alias2));
- assertEquals(model.getSelectedAlias().get(), alias2);
- model.setSelectedAlias(Optional.<Alias>absent());
- assertFalse(model.getSelectedAlias().isPresent());
- }
-
- @Test
- public void testRemoveListener() {
- when(aliasModel.getAliases()).thenReturn(aliases);
- final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory,
- commandController);
- model.loadModel();
- model.addListener(listener);
- model.addAlias(alias1.getName(), alias1.getMinArguments(), alias1.getSubstitution());
- model.removeListener(listener);
- model.addAlias(alias2.getName(), alias2.getMinArguments(), alias2.getSubstitution());
- verify(listener).aliasAdded(alias1);
- verify(listener, never()).aliasAdded(alias2);
- }
-
- @Test
- public void testRenameSelectedAlias() {
- aliases.add(alias1);
- when(aliasModel.getAliases()).thenReturn(aliases);
- final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory,
- commandController);
- model.loadModel();
- assertEquals(model.getAliases().size(), 1);
- assertEquals(model.getAlias(alias1.getName()).get(), alias1);
- model.setSelectedAlias(Optional.fromNullable(alias1));
- model.setSelectedAliasName(alias1Edited.getName());
- model.setSelectedAliasMinimumArguments(alias1Edited.getMinArguments());
- model.setSelectedAliasSubstitution(alias1Edited.getSubstitution());
- model.setSelectedAlias(Optional.<Alias>absent());
- assertEquals(model.getAlias(alias1Edited.getName()).get(), alias2);
- }
-
- @Test
- public void testEditSelectedAlias() {
- aliases.add(alias1);
- when(aliasModel.getAliases()).thenReturn(aliases);
- final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory,
- commandController);
- model.loadModel();
- assertEquals(model.getAliases().size(), 1);
- assertEquals(model.getAlias(alias1.getName()).get(), alias1);
- model.setSelectedAlias(Optional.fromNullable(alias1));
- model.setSelectedAliasMinimumArguments(alias2Edited.getMinArguments());
- model.setSelectedAliasSubstitution(alias2Edited.getSubstitution());
- model.setSelectedAlias(Optional.<Alias>absent());
- final Alias alias = model.getAlias(alias1.getName()).get();
- assertEquals(alias.getName(), alias2Edited.getName());
- assertEquals(alias.getMinArguments(), alias2Edited.getMinArguments());
- assertEquals(alias.getSubstitution(), alias2Edited.getSubstitution());
- }
-
- }
|