AuD
Lecture 'Algorithmen und Datenstrukturen' (code examples)
SListTest.java
Go to the documentation of this file.
1package aud.test;
2
3import aud.SList;
4import org.junit.*;
5import static org.junit.Assert.*;
6
7public class SListTest {
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 i : list) {
134 assertTrue(n==i.intValue());
135 ++n;
136 }
137
138 ii=list.iterator();
139 list.insert_after(ii,-1);
140 assertTrue(ii.hasNext());
141 n=ii.next();
142 assertTrue(n==0);
143 assertTrue(ii.hasNext());
144 n=ii.next();
145 assertTrue(n==-1);
146 assertTrue(ii.hasNext());
147 n=ii.next();
148 assertTrue(n==1);
149 }
150
151 public static void main(String args[]) {
152 // prefer command line:
153 // > java org.junit.runner.JUnitCore aud.test.SListTest
154
155 org.junit.runner.JUnitCore.main("aud.test.SListTest");
156 }
157}
Forward iterator.
Definition: SList.java:245
Implementation of a singly linked list.
Definition: SList.java:54
void erase(int i)
erase entry at position i [O(n)]
Definition: SList.java:218
T front()
retrieve first entry (must exist) [O(1)]
Definition: SList.java:113
Iterator iterator()
get forward iterator
Definition: SList.java:295
T at(int i)
retrieve i-th entry [O(n)]
Definition: SList.java:132
void insert(int i, T obj)
insert new entry obj at position i [O(n)]
Definition: SList.java:179
int size()
determine number of entries [O(n)]
Definition: SList.java:81
void pop_front()
erase first entry (must exist) [O(1)]
Definition: SList.java:194
void push_front(T obj)
insert entry at front of list [O(1)]
Definition: SList.java:143
T back()
retrieve last entry (must exist) [O(n)]
Definition: SList.java:121
void pop_back()
erase last entry (must exist) [O(n)]
Definition: SList.java:202
boolean empty()
determine if list is empty [O(1)]
Definition: SList.java:94
void push_back(T obj)
append entry obj at end of list [O(n)]
Definition: SList.java:151
static void main(String args[])
Definition: SListTest.java:151
void testInvalid_back()
Definition: SListTest.java:93
void testInvalid_pop_front()
Definition: SListTest.java:106
void testInvalid_front()
Definition: SListTest.java:87
void testInvalid_erase()
Definition: SListTest.java:99
void testInvalid_pop_back()
Definition: SListTest.java:111
AuD lecture: Data structures, algorithms, examples.