View Javadoc
1   /*
2    * Licensed under the GPL License. You may not use this file except in compliance with the License.
3    * You may obtain a copy of the License at
4    *
5    *   https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
6    *
7    * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
8    * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
9    * PURPOSE.
10   */
11  package psiprobe.tokenizer;
12  
13  import static org.junit.jupiter.api.Assertions.assertEquals;
14  import static org.junit.jupiter.api.Assertions.assertFalse;
15  import static org.junit.jupiter.api.Assertions.assertTrue;
16  
17  import java.util.Arrays;
18  import java.util.List;
19  
20  import org.junit.jupiter.api.Test;
21  
22  /**
23   * Tests for {@link UniqueList}.
24   */
25  class UniqueListTest {
26  
27    @Test
28    void testAddUnique() {
29      UniqueList<Integer> list = new UniqueList<>();
30      assertTrue(list.add(3));
31      assertTrue(list.add(1));
32      assertTrue(list.add(2));
33      assertEquals(3, list.size());
34      // Should be sorted
35      assertEquals(1, (int) list.get(0));
36      assertEquals(2, (int) list.get(1));
37      assertEquals(3, (int) list.get(2));
38    }
39  
40    @Test
41    void testAddDuplicateIgnored() {
42      UniqueList<Integer> list = new UniqueList<>();
43      assertTrue(list.add(5));
44      assertFalse(list.add(5)); // duplicate should not be added
45      assertEquals(1, list.size());
46    }
47  
48    @Test
49    void testAddAtIndexIgnoresIndex() {
50      UniqueList<Integer> list = new UniqueList<>();
51      list.add(0, 3);
52      list.add(0, 1);
53      list.add(0, 2);
54      assertEquals(3, list.size());
55      // Should be sorted regardless of index passed
56      assertEquals(1, (int) list.get(0));
57      assertEquals(2, (int) list.get(1));
58      assertEquals(3, (int) list.get(2));
59    }
60  
61    @Test
62    void testAddAll() {
63      UniqueList<Integer> list = new UniqueList<>();
64      List<Integer> input = Arrays.asList(5, 3, 1, 3, 5);
65      list.addAll(input);
66      assertEquals(3, list.size());
67      assertEquals(1, (int) list.get(0));
68      assertEquals(3, (int) list.get(1));
69      assertEquals(5, (int) list.get(2));
70    }
71  
72    @Test
73    void testAddAllWithSelf() {
74      UniqueList<Integer> list = new UniqueList<>();
75      list.add(1);
76      list.add(2);
77      // addAll with self should return false
78      assertFalse(list.addAll(list));
79      assertEquals(2, list.size());
80    }
81  
82    @Test
83    void testAddToEmpty() {
84      UniqueList<String> list = new UniqueList<>();
85      assertTrue(list.add("hello"));
86      assertEquals(1, list.size());
87      assertEquals("hello", list.get(0));
88    }
89  
90    @Test
91    void testAddBeyondEnd() {
92      UniqueList<Integer> list = new UniqueList<>();
93      list.add(1);
94      list.add(2);
95      list.add(10); // should go at end
96      assertEquals(3, list.size());
97      assertEquals(10, (int) list.get(2));
98    }
99  
100   @Test
101   void testSortedInsertion() {
102     UniqueList<String> list = new UniqueList<>();
103     list.add("charlie");
104     list.add("alpha");
105     list.add("beta");
106     assertEquals("alpha", list.get(0));
107     assertEquals("beta", list.get(1));
108     assertEquals("charlie", list.get(2));
109   }
110 }