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.

WeakListTest.java 9.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. /*
  2. * Copyright (c) 2006-2015 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.util.collections;
  23. import java.util.ArrayList;
  24. import java.util.Collection;
  25. import java.util.Iterator;
  26. import java.util.List;
  27. import java.util.ListIterator;
  28. import org.junit.Test;
  29. import static org.junit.Assert.*;
  30. public class WeakListTest {
  31. @Test
  32. public void testIsEmpty() {
  33. final List<String> instance = new WeakList<>();
  34. assertTrue(instance.isEmpty());
  35. instance.add("test1");
  36. assertFalse(instance.isEmpty());
  37. }
  38. @Test
  39. public void testAdd() {
  40. final List<String> instance = new WeakList<>();
  41. assertTrue(instance.add("test1"));
  42. assertFalse(instance.isEmpty());
  43. }
  44. @Test
  45. public void testAddInt() {
  46. final List<String> instance = new WeakList<>();
  47. assertTrue(instance.add("test1"));
  48. instance.add(0, "test2");
  49. assertEquals("test2", instance.get(0));
  50. }
  51. @Test
  52. public void testRemove() {
  53. final List<String> instance = new WeakList<>();
  54. instance.add("test1");
  55. assertFalse(instance.isEmpty());
  56. assertTrue(instance.remove("test1"));
  57. assertFalse(instance.remove("test1"));
  58. }
  59. @Test
  60. public void testRemoveInt() {
  61. final List<String> instance = new WeakList<>();
  62. assertTrue(instance.isEmpty());
  63. instance.add("test1");
  64. instance.add("test2");
  65. assertEquals(2, instance.size());
  66. instance.remove(1);
  67. assertTrue(instance.contains("test1"));
  68. assertFalse(instance.contains("test2"));
  69. }
  70. @Test
  71. public void testGet() {
  72. final List<String> instance = new WeakList<>();
  73. instance.add("test1");
  74. instance.add("test2");
  75. assertEquals("test1", instance.get(0));
  76. assertEquals("test2", instance.get(1));
  77. }
  78. @Test
  79. public void testContains() {
  80. final List<String> instance = new WeakList<>();
  81. assertFalse(instance.contains("test1"));
  82. instance.add("test1");
  83. assertTrue(instance.contains("test1"));
  84. }
  85. /**
  86. * Test of toArray method, of class WeakList.
  87. */
  88. @Test
  89. public void testToArray0args() {
  90. final List<String> instance = new WeakList<>();
  91. assertEquals(0, instance.toArray().length);
  92. instance.add("test1");
  93. instance.add("test2");
  94. final Object[] result = instance.toArray();
  95. assertEquals(2, result.length);
  96. assertEquals("test1", result[0]);
  97. assertEquals("test2", result[1]);
  98. }
  99. /**
  100. * Test of toArray method, of class WeakList.
  101. */
  102. @Test
  103. public void testToArrayGenericType() {
  104. final List<String> instance = new WeakList<>();
  105. assertEquals(0, instance.toArray(new String[instance.size()]).length);
  106. instance.add("test1");
  107. instance.add("test2");
  108. final Object[] result = instance.toArray(new String[2]);
  109. assertEquals(2, result.length);
  110. assertEquals("test1", result[0]);
  111. assertEquals("test2", result[1]);
  112. }
  113. /**
  114. * Test of containsAll method, of class WeakList.
  115. */
  116. @Test
  117. public void testContainsAllAddAll() {
  118. final Collection<String> list = new ArrayList<>();
  119. list.add("test1");
  120. list.add("test2");
  121. final List<String> instance = new WeakList<>();
  122. assertFalse(instance.containsAll(list));
  123. instance.addAll(list);
  124. assertTrue(instance.contains("test1"));
  125. assertTrue(instance.contains("test2"));
  126. assertTrue(instance.containsAll(list));
  127. }
  128. @Test
  129. public void testAddAllIntCollection() {
  130. final Collection<String> list = new ArrayList<>();
  131. list.add("test1");
  132. list.add("test2");
  133. final List<String> instance = new WeakList<>();
  134. instance.add("test3");
  135. System.out.println(instance);
  136. assertEquals("test3", instance.get(0));
  137. assertFalse(instance.containsAll(list));
  138. instance.addAll(0, list);
  139. assertEquals("test1", instance.get(0));
  140. assertEquals("test2", instance.get(1));
  141. }
  142. @Test
  143. public void testIndexOf() {
  144. final String one = "test1";
  145. final List<String> instance = new WeakList<>();
  146. instance.add(one);
  147. final String two = "test2";
  148. instance.add(two);
  149. assertEquals(2, instance.size());
  150. assertEquals(0, instance.indexOf(one));
  151. assertEquals(1, instance.indexOf(two));
  152. }
  153. @Test
  154. public void testLastIndexOf() {
  155. final String one = "test1";
  156. final List<String> instance = new WeakList<>();
  157. instance.add(one);
  158. final String two = "test2";
  159. instance.add(two);
  160. instance.add(one);
  161. assertEquals(3, instance.size());
  162. assertEquals(2, instance.lastIndexOf(one));
  163. }
  164. @Test
  165. public void testRemoveAll() {
  166. final Collection<String> list = new ArrayList<>();
  167. list.add("test1");
  168. list.add("test2");
  169. final List<String> instance = new WeakList<>();
  170. instance.addAll(list);
  171. assertFalse(instance.isEmpty());
  172. instance.removeAll(list);
  173. assertTrue(instance.isEmpty());
  174. }
  175. @Test
  176. public void testRetainAll() {
  177. final Collection<String> list = new ArrayList<>();
  178. list.add("test1");
  179. list.add("test2");
  180. final List<String> instance = new WeakList<>();
  181. instance.addAll(list);
  182. instance.add("test3");
  183. instance.add("test4");
  184. assertFalse(list.size() == instance.size());
  185. instance.retainAll(list);
  186. assertTrue(list.size() == instance.size());
  187. }
  188. @Test
  189. public void testClear() {
  190. final Collection<String> list = new ArrayList<>();
  191. list.add("test1");
  192. list.add("test2");
  193. final List<String> instance = new WeakList<>();
  194. instance.addAll(list);
  195. assertFalse(instance.isEmpty());
  196. instance.clear();
  197. assertTrue(instance.isEmpty());
  198. }
  199. @Test
  200. public void testSet() {
  201. final List<String> instance = new WeakList<>();
  202. instance.add("test1");
  203. assertEquals("test1", instance.get(0));
  204. instance.set(0, "test2");
  205. assertEquals("test2", instance.get(0));
  206. }
  207. @Test
  208. public void testIterator() {
  209. final List<String> instance = new WeakList<>();
  210. Iterator result = instance.iterator();
  211. assertFalse(result.hasNext());
  212. instance.add("test1");
  213. instance.add("test2");
  214. result = instance.iterator();
  215. assertEquals("test1", result.next());
  216. assertEquals("test2", result.next());
  217. assertFalse(result.hasNext());
  218. }
  219. @Test
  220. public void testListIterator0args() {
  221. final List<String> instance = new WeakList<>();
  222. ListIterator result = instance.listIterator();
  223. assertFalse(result.hasNext());
  224. instance.add("test1");
  225. instance.add("test2");
  226. result = instance.listIterator();
  227. assertEquals("test1", result.next());
  228. assertEquals("test2", result.next());
  229. assertFalse(result.hasNext());
  230. }
  231. @Test(expected=IndexOutOfBoundsException.class)
  232. public void testListIteratorInt() {
  233. final List<String> instance = new WeakList<>();
  234. ListIterator result = instance.listIterator(1);
  235. assertFalse(result.hasNext());
  236. instance.add("test1");
  237. instance.add("test2");
  238. instance.add("text3");
  239. result = instance.listIterator(1);
  240. assertEquals("test1", result.previous());
  241. assertEquals("test2", result.next());
  242. assertEquals("test3", result.next());
  243. assertFalse(result.hasNext());
  244. }
  245. @Test
  246. public void testSubList() {
  247. final List<String> instance = new WeakList<>();
  248. instance.add("test1");
  249. instance.add("test2");
  250. instance.add("test3");
  251. instance.add("test4");
  252. final List result = instance.subList(1, 3);
  253. assertEquals(2, result.size());
  254. assertTrue(result.contains("test2"));
  255. assertTrue(result.contains("test3"));
  256. }
  257. }