You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CoreAliasDialogModelTest.java 9.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. /*
  2. * Copyright (c) 2006-2014 DMDirc Developers
  3. *
  4. * Permission is hereby granted, free of charge, to any person obtaining a copy
  5. * of this software and associated documentation files (the "Software"), to deal
  6. * in the Software without restriction, including without limitation the rights
  7. * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  8. * copies of the Software, and to permit persons to whom the Software is
  9. * furnished to do so, subject to the following conditions:
  10. *
  11. * The above copyright notice and this permission notice shall be included in
  12. * all copies or substantial portions of the Software.
  13. *
  14. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  17. * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  18. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  19. * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  20. * SOFTWARE.
  21. */
  22. package com.dmdirc.commandparser.aliases;
  23. import com.dmdirc.commandparser.CommandType;
  24. import com.dmdirc.interfaces.ui.AliasDialogModelListener;
  25. import com.google.common.base.Optional;
  26. import java.util.HashSet;
  27. import java.util.Set;
  28. import org.junit.Before;
  29. import org.junit.Test;
  30. import org.junit.runner.RunWith;
  31. import org.mockito.Mock;
  32. import org.mockito.invocation.InvocationOnMock;
  33. import org.mockito.runners.MockitoJUnitRunner;
  34. import org.mockito.stubbing.Answer;
  35. import static org.junit.Assert.assertEquals;
  36. import static org.junit.Assert.assertFalse;
  37. import static org.mockito.Matchers.anyInt;
  38. import static org.mockito.Matchers.anyString;
  39. import static org.mockito.Mockito.never;
  40. import static org.mockito.Mockito.verify;
  41. import static org.mockito.Mockito.when;
  42. @RunWith(MockitoJUnitRunner.class)
  43. public class CoreAliasDialogModelTest {
  44. @Mock private AliasManager aliasModel;
  45. @Mock private AliasFactory aliasFactory;
  46. @Mock private AliasDialogModelListener listener;
  47. private final Alias alias1 = new Alias(CommandType.TYPE_GLOBAL, "alias1", 0, "");
  48. 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 Set<Alias> aliases;
  51. @Before
  52. public void setupAliases() {
  53. aliases = new HashSet<>();
  54. }
  55. @Before
  56. public void setUpFactory() {
  57. when(aliasFactory.createAlias(anyString(), anyInt(), anyString())).thenAnswer(
  58. new Answer<Alias>() {
  59. @Override
  60. public Alias answer(final InvocationOnMock invocation) throws Throwable {
  61. return new Alias(
  62. CommandType.TYPE_GLOBAL,
  63. (String) invocation.getArguments()[0],
  64. (Integer) invocation.getArguments()[1],
  65. (String) invocation.getArguments()[2]
  66. );
  67. }
  68. });
  69. }
  70. @Test
  71. public void testgetAliases() {
  72. aliases.add(alias1);
  73. aliases.add(alias2);
  74. when(aliasModel.getAliases()).thenReturn(aliases);
  75. final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory);
  76. assertEquals(model.getAliases().size(), 2);
  77. }
  78. @Test
  79. public void testGetAliasExists() {
  80. aliases.add(alias1);
  81. aliases.add(alias2);
  82. when(aliasModel.getAliases()).thenReturn(aliases);
  83. final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory);
  84. assertEquals(model.getAlias("alias1").get(), alias1);
  85. }
  86. @Test
  87. public void testGetAliasNotExists() {
  88. aliases.add(alias1);
  89. aliases.add(alias2);
  90. when(aliasModel.getAliases()).thenReturn(aliases);
  91. final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory);
  92. assertFalse(model.getAlias("alias3").isPresent());
  93. }
  94. @Test
  95. public void testAddAlias() {
  96. when(aliasModel.getAliases()).thenReturn(aliases);
  97. final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory);
  98. assertEquals(model.getAliases().size(), 0);
  99. model.addAlias(alias1.getName(), alias1.getMinArguments(), alias1.getSubstitution());
  100. assertEquals(model.getAliases().size(), 1);
  101. }
  102. @Test
  103. public void testAddAliasListener() {
  104. when(aliasModel.getAliases()).thenReturn(aliases);
  105. final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory);
  106. model.addListener(listener);
  107. model.addAlias(alias1.getName(), alias1.getMinArguments(), alias1.getSubstitution());
  108. verify(listener).aliasAdded(alias1);
  109. }
  110. @Test
  111. public void testEditAlias() {
  112. aliases.add(alias1);
  113. when(aliasModel.getAliases()).thenReturn(aliases);
  114. final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory);
  115. assertEquals(model.getAliases().size(), 1);
  116. assertEquals(model.getAlias("alias1").get().getMinArguments(), 0);
  117. model.editAlias("alias1", alias2Edited.getMinArguments(), alias2Edited.getSubstitution());
  118. assertEquals(model.getAlias("alias1").get().getMinArguments(), 1);
  119. }
  120. @Test
  121. public void testEditAliasListener() {
  122. aliases.add(alias1);
  123. when(aliasModel.getAliases()).thenReturn(aliases);
  124. final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory);
  125. model.addListener(listener);
  126. model.editAlias("alias1", alias2Edited.getMinArguments(), alias2Edited.getSubstitution());
  127. verify(listener).aliasEdited("alias1");
  128. }
  129. @Test
  130. public void testRenameAlias() {
  131. aliases.add(alias1);
  132. when(aliasModel.getAliases()).thenReturn(aliases);
  133. final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory);
  134. assertEquals(model.getAliases().size(), 1);
  135. assertEquals(model.getAlias("alias1").get(), alias1);
  136. model.renameAlias("alias1", "alias2");
  137. assertEquals(model.getAlias("alias2").get(), alias2);
  138. }
  139. @Test
  140. public void testRenameAliasListener() {
  141. aliases.add(alias1);
  142. when(aliasModel.getAliases()).thenReturn(aliases);
  143. final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory);
  144. model.addListener(listener);
  145. assertEquals(model.getAliases().size(), 1);
  146. assertEquals(model.getAlias("alias1").get(), alias1);
  147. model.renameAlias("alias1", "alias2");
  148. verify(listener).aliasRenamed("alias1", "alias2");
  149. }
  150. @Test
  151. public void testRemoveAlias() {
  152. aliases.add(alias1);
  153. aliases.add(alias2);
  154. when(aliasModel.getAliases()).thenReturn(aliases);
  155. final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory);
  156. assertEquals(model.getAliases().size(), 2);
  157. model.removeAlias("alias1");
  158. assertEquals(model.getAliases().size(), 1);
  159. assertFalse(model.getAlias("alias1").isPresent());
  160. }
  161. @Test
  162. public void testRemoveAliasListener() {
  163. aliases.add(alias1);
  164. aliases.add(alias2);
  165. when(aliasModel.getAliases()).thenReturn(aliases);
  166. final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory);
  167. model.addListener(listener);
  168. model.removeAlias("alias1");
  169. verify(listener).aliasRemoved(alias1);
  170. }
  171. @Test
  172. public void testSelectedAliasInitiallyNull() {
  173. aliases.add(alias1);
  174. aliases.add(alias2);
  175. when(aliasModel.getAliases()).thenReturn(aliases);
  176. final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory);
  177. assertEquals(model.getAliases().size(), 2);
  178. assertFalse(model.getSelectedAlias().isPresent());
  179. }
  180. @Test
  181. public void testSelectedAliasNotNull() {
  182. aliases.add(alias1);
  183. aliases.add(alias2);
  184. when(aliasModel.getAliases()).thenReturn(aliases);
  185. final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory);
  186. assertEquals(model.getAliases().size(), 2);
  187. assertFalse(model.getSelectedAlias().isPresent());
  188. model.setSelectedAlias(Optional.fromNullable(alias2));
  189. assertEquals(model.getSelectedAlias().get(), alias2);
  190. }
  191. @Test
  192. public void testSelectedAliasToNull() {
  193. aliases.add(alias1);
  194. aliases.add(alias2);
  195. when(aliasModel.getAliases()).thenReturn(aliases);
  196. final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory);
  197. assertEquals(model.getAliases().size(), 2);
  198. assertFalse(model.getSelectedAlias().isPresent());
  199. model.setSelectedAlias(Optional.fromNullable(alias2));
  200. assertEquals(model.getSelectedAlias().get(), alias2);
  201. model.setSelectedAlias(Optional.<Alias>absent());
  202. assertFalse(model.getSelectedAlias().isPresent());
  203. }
  204. @Test
  205. public void testRemoveListener() {
  206. when(aliasModel.getAliases()).thenReturn(aliases);
  207. final CoreAliasDialogModel model = new CoreAliasDialogModel(aliasModel, aliasFactory);
  208. model.addListener(listener);
  209. model.addAlias(alias1.getName(), alias1.getMinArguments(), alias1.getSubstitution());
  210. model.removeListener(listener);
  211. model.addAlias(alias2.getName(), alias2.getMinArguments(), alias2.getSubstitution());
  212. verify(listener).aliasAdded(alias1);
  213. verify(listener, never()).aliasAdded(alias2);
  214. }
  215. }