AuD
Lecture 'Algorithmen und Datenstrukturen' (code examples)
DListTest.java
Go to the documentation of this file.
1package aud.test;
2
3import aud.DList;
4import org.junit.*;
5import static org.junit.Assert.*;
6
7public class DListTest {
8 @Test
9 public void testCtor() {
11 assertTrue(list.empty());
12 }
13
14 @Test
15 public void testSize() {
17 assertEquals(list.size(),0);
18 for (int i=0;i<10;++i) {
19 list.push_front("x");
20 assertEquals(list.size(),i+1);
21 }
22 }
23
24 @Test
25 public void testEntries() {
27 for (int i=0;i<10;++i) {
28 list.push_front(i);
29 assertEquals(list.front().intValue(),i);
30 }
31 int n=list.size();
32 for (int i=0;i<10;++i) {
33 assertTrue(list.at(i)==n-1-i);
34 }
35 }
36
37 @Test
38 public void testList() {
40 list.push_front(4); // [4]
41 list.push_back(6); // [4,6]
42 list.push_back(8); // [4,6,8]
43 list.push_front(2); // [2,4,6,8]
44 list.insert(0,1); // [1,2,4,6,8]
45 list.insert(2,3); // [1,2,3,4,6,8]
46 list.insert(4,5); // [1,2,3,4,5,6,8]
47 list.insert(6,7); // [1,2,3,4,5,6,7,8]
48 list.insert(8,9); // [1,2,3,4,5,6,7,8,9]
49
50 for (int i=0;i<9;++i)
51 assertTrue(list.at(i)==i+1);
52
53 list.pop_front(); // [2,3,4,5,6,7,8,9]
54 assertTrue(list.size()==8);
55 assertTrue(list.front()==2);
56 assertTrue(list.at(0)==2);
57
58 list.pop_back(); // [2,3,4,5,6,7,8]
59 assertTrue(list.size()==7);
60 assertTrue(list.back()==8);
61 assertTrue(list.at(list.size()-1)==8);
62
63 assertTrue(list.at(2)==4);
64 list.erase(2); // [2,3,5,6,7,8]
65 assertTrue(list.size()==6);
66 assertTrue(list.at(2)==5);
67
68 while (!list.empty()) {
69 int sz=list.size();
70 assertTrue(sz>0);
71 list.erase(sz-1);
72 }
73 assertTrue(list.empty());
74
75 list.push_back(1);
76 assertTrue(list.front().intValue()==1);
77 }
78
79 @Test(expected=IndexOutOfBoundsException.class)
80 public void testInvalid_at() {
82 list.push_front(1);
83 list.at(1);
84 }
85
86 @Test(expected=IndexOutOfBoundsException.class)
87 public void testInvalid_front() {
89 list.front();
90 }
91
92 @Test(expected=IndexOutOfBoundsException.class)
93 public void testInvalid_back() {
95 list.back();
96 }
97
98 @Test(expected=IndexOutOfBoundsException.class)
99 public void testInvalid_erase() {
101 list.push_front(1);
102 list.erase(1);
103 }
104
105 @Test(expected=IndexOutOfBoundsException.class)
106 public void testInvalid_pop_front() {
108 list.pop_front();
109 }
110 @Test(expected=IndexOutOfBoundsException.class)
111 public void testInvalid_pop_back() {
113 list.pop_back();
114 }
115
116 @Test
117 public void testIterators() {
119 for (int i=0;i<5;++i)
120 list.push_back(i);
121
122 int n;
123
125 for (int i=0;i<5;++i) {
126 assertTrue(ii.hasNext());
127 n=ii.next().intValue();
128 assertTrue(n==i);
129 }
130 assertFalse(ii.hasNext());
131
132 n = 0;
133 for (Integer item : list) {
134 assertTrue(n==item.intValue());
135 ++n;
136 }
137
138 n = 4;
139 for (Integer item : list.backwards()) {
140 assertTrue(n==item.intValue());
141 --n;
142 }
143
144 ii=list.iterator();
145 list.insert_before(ii,-1);
146 list.insert_after(ii,-2);
147 assertTrue(ii.hasNext());
148 ii.previous();
149 assertTrue(ii.hasNext());
150 n=ii.next();
151 assertTrue(ii.hasNext());
152 assertTrue(n==-1);
153 n=ii.next();
154 assertTrue(ii.hasNext());
155 assertTrue(n==0);
156 n=ii.next();
157 assertTrue(ii.hasNext());
158 assertTrue(n==-2);
159 n=ii.next();
160 assertTrue(ii.hasNext());
161 assertTrue(n==1);
162
164 for (int i=4;i>=1;--i) {
165 assertTrue(jj.hasNext());
166 n=jj.next().intValue();
167 assertTrue(n==i);
168 }
169 }
170
171 public static void main(String args[]) {
172 // prefer command line:
173 // > java org.junit.runner.JUnitCore aud.tests.DListTest
174
175 org.junit.runner.JUnitCore.main("aud.test.DListTest");
176 }
177}
Backward iterator.
Definition: DList.java:295
Forward iterator.
Definition: DList.java:253
Implementation of a doubly linked list.
Definition: DList.java:47
void pop_front()
erase first entry (must exist) [O(1)]
Definition: DList.java:200
T back()
retrieve last entry (must exist) [O(1)]
Definition: DList.java:122
int size()
determine number of entries [O(n)]
Definition: DList.java:79
void erase(int i)
erase entry at position i [O(n)]
Definition: DList.java:224
void push_front(T obj)
insert entry at front of list [O(1)]
Definition: DList.java:142
void push_back(T obj)
append entry obj at end of list [O(1)]
Definition: DList.java:154
T at(int i)
retrieve i-th entry [O(n)]
Definition: DList.java:131
void pop_back()
erase last entry (must exist) [O(1)]
Definition: DList.java:212
BackwardIterator reverse_iterator()
get backward iterator iterator
Definition: DList.java:307
T front()
retrieve first entry (must exist) [O(1)]
Definition: DList.java:113
Backwards backwards()
Get instance that provides a BackwardIterator.
Definition: DList.java:346
ForwardIterator iterator()
get forward iterator
Definition: DList.java:303
void insert(int i, T obj)
insert new entry obj at position i [O(n)]
Definition: DList.java:185
boolean empty()
determine if list is empty [O(1)]
Definition: DList.java:92
void insert_before(ForwardIterator i, T object)
insert entry before iterator position
Definition: DList.java:356
void testInvalid_pop_back()
Definition: DListTest.java:111
void testInvalid_erase()
Definition: DListTest.java:99
void testInvalid_pop_front()
Definition: DListTest.java:106
static void main(String args[])
Definition: DListTest.java:171
void testInvalid_back()
Definition: DListTest.java:93
void testInvalid_front()
Definition: DListTest.java:87
AuD lecture: Data structures, algorithms, examples.