1 package org.apache.commons.jcs.utils.struct;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import junit.framework.TestCase;
23 import org.apache.commons.jcs.TestLogConfigurationUtil;
24
25 import java.io.StringWriter;
26
27
28 public class DoubleLinkedListUnitTest
29 extends TestCase
30 {
31
32 public void testAddLast_Empty()
33 {
34
35 DoubleLinkedList<DoubleLinkedListNode<String>> list = new DoubleLinkedList<DoubleLinkedListNode<String>>();
36
37 String payload1 = "payload1";
38 DoubleLinkedListNode<String> node1 = new DoubleLinkedListNode<String>( payload1 );
39
40
41 list.addLast( node1 );
42
43
44 assertEquals( "Wrong last", node1, list.getLast() );
45 }
46
47
48 public void testAddLast_NotEmpty()
49 {
50
51 DoubleLinkedList<DoubleLinkedListNode<String>> list = new DoubleLinkedList<DoubleLinkedListNode<String>>();
52
53 String payload1 = "payload1";
54 DoubleLinkedListNode<String> node1 = new DoubleLinkedListNode<String>( payload1 );
55
56 String payload2 = "payload2";
57 DoubleLinkedListNode<String> node2 = new DoubleLinkedListNode<String>( payload2 );
58
59
60 list.addLast( node1 );
61 list.addLast( node2 );
62
63
64 assertEquals( "Wrong last", node2, list.getLast() );
65 }
66
67
68 public void testMakeLast_wasFirst()
69 {
70
71 DoubleLinkedList<DoubleLinkedListNode<String>> list = new DoubleLinkedList<DoubleLinkedListNode<String>>();
72
73 String payload1 = "payload1";
74 DoubleLinkedListNode<String> node1 = new DoubleLinkedListNode<String>( payload1 );
75
76 String payload2 = "payload2";
77 DoubleLinkedListNode<String> node2 = new DoubleLinkedListNode<String>( payload2 );
78
79 list.addFirst( node2 );
80 list.addFirst( node1 );
81
82
83 list.makeLast( node1 );
84
85
86 assertEquals( "Wrong size", 2, list.size() );
87 assertEquals( "Wrong last", node1, list.getLast() );
88 assertEquals( "Wrong first", node2, list.getFirst() );
89 }
90
91
92 public void testMakeLast_wasLast()
93 {
94
95 DoubleLinkedList<DoubleLinkedListNode<String>> list = new DoubleLinkedList<DoubleLinkedListNode<String>>();
96
97 String payload1 = "payload1";
98 DoubleLinkedListNode<String> node1 = new DoubleLinkedListNode<String>( payload1 );
99
100 String payload2 = "payload2";
101 DoubleLinkedListNode<String> node2 = new DoubleLinkedListNode<String>( payload2 );
102
103 list.addFirst( node1 );
104 list.addFirst( node2 );
105
106
107 list.makeLast( node1 );
108
109
110 assertEquals( "Wrong size", 2, list.size() );
111 assertEquals( "Wrong last", node1, list.getLast() );
112 assertEquals( "Wrong first", node2, list.getFirst() );
113 }
114
115
116 public void testMakeLast_wasAlone()
117 {
118
119 DoubleLinkedList<DoubleLinkedListNode<String>> list = new DoubleLinkedList<DoubleLinkedListNode<String>>();
120
121 String payload1 = "payload1";
122 DoubleLinkedListNode<String> node1 = new DoubleLinkedListNode<String>( payload1 );
123
124 list.addFirst( node1 );
125
126
127 list.makeLast( node1 );
128
129
130 assertEquals( "Wrong size", 1, list.size() );
131 assertEquals( "Wrong last", node1, list.getLast() );
132 assertEquals( "Wrong first", node1, list.getFirst() );
133 }
134
135
136 public void testMakeLast_wasInMiddle()
137 {
138
139 DoubleLinkedList<DoubleLinkedListNode<String>> list = new DoubleLinkedList<DoubleLinkedListNode<String>>();
140
141 String payload1 = "payload1";
142 DoubleLinkedListNode<String> node1 = new DoubleLinkedListNode<String>( payload1 );
143
144 String payload2 = "payload2";
145 DoubleLinkedListNode<String> node2 = new DoubleLinkedListNode<String>( payload2 );
146
147 String payload3 = "payload3";
148 DoubleLinkedListNode<String> node3 = new DoubleLinkedListNode<String>( payload3 );
149
150 list.addFirst( node2 );
151 list.addFirst( node1 );
152 list.addFirst( node3 );
153
154
155 list.makeLast( node1 );
156
157
158 assertEquals( "Wrong size", 3, list.size() );
159 assertEquals( "Wrong last", node1, list.getLast() );
160 assertEquals( "Wrong first", node3, list.getFirst() );
161 }
162
163
164 public void testDumpEntries_DebugTrue()
165 {
166
167 StringWriter stringWriter = new StringWriter();
168 TestLogConfigurationUtil.configureLogger( stringWriter, DoubleLinkedList.class.getName() );
169
170 DoubleLinkedList<DoubleLinkedListNode<String>> list = new DoubleLinkedList<DoubleLinkedListNode<String>>();
171
172 String payload1 = "payload1";
173 DoubleLinkedListNode<String> node1 = new DoubleLinkedListNode<String>( payload1 );
174
175 String payload2 = "payload2";
176 DoubleLinkedListNode<String> node2 = new DoubleLinkedListNode<String>( payload2 );
177
178 list.addLast( node1 );
179 list.addLast( node2 );
180 list.debugDumpEntries();
181
182
183 String result = stringWriter.toString();
184
185
186 assertTrue( "Missing node in log dump", result.indexOf( payload1 ) != -1 );
187 assertTrue( "Missing node in log dump", result.indexOf( payload2 ) != -1 );
188 }
189 }