-
Notifications
You must be signed in to change notification settings - Fork 0
/
ListNodeTest.java
141 lines (118 loc) · 3.94 KB
/
ListNodeTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package structure;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
public class ListNodeTest {
private static ListNode linkedList = new ListNode();
private static ListNode head = linkedList;
@AfterEach
void afterEach() {
linkedList = new ListNode();
head = linkedList;
}
@Test
@DisplayName("LinkedList: Basic Add Test")
void basicAdd() {
// given
linkedList.add(head, new ListNode(1), 0);
linkedList.add(head, new ListNode(2), 1);
linkedList.add(head, new ListNode(3), 2);
//when
ListNode move = head;
StringBuilder sb = new StringBuilder();
while (true) {
if (!move.isHead()) {
sb.append(move.getElement());
}
move = move.getNext();
if (move == null) {
break;
}
}
// then
Assertions.assertEquals(sb.toString(), "123");
}
@Test
@DisplayName("LinkedList: Wrong Add Test")
void wrongAdd() {
// given
ListNode nodeToAdd = new ListNode(1);
// when
ListNode resultA = linkedList.add(head, nodeToAdd, 1);
ListNode resultB = linkedList.add(head, nodeToAdd, -1);
ListNode resultC = nodeToAdd.add(head, nodeToAdd, 0);
// then
Assertions.assertNull(resultA);
Assertions.assertNull(resultB);
Assertions.assertNull(resultC);
}
@Test
@DisplayName("LinkedList: Basic Remove Test")
void basicRemove() {
// given
linkedList.add(head, new ListNode(1), 0);
linkedList.add(head, new ListNode(2), 1);
linkedList.add(head, new ListNode(3), 2);
//when
ListNode result = linkedList.remove(head, 2);
ListNode move = head;
StringBuilder sb = new StringBuilder();
while (true) {
if (!move.isHead()) {
sb.append(move.getElement());
}
move = move.getNext();
if (move == null) {
break;
}
}
// then
Assertions.assertEquals(result.getElement(), 3);
Assertions.assertEquals(sb.toString(), "12");
}
@Test
@DisplayName("LinkedList: fail Remove Test")
void wrongRemove() {
// given
ListNode nodeToAdd = new ListNode(1);
linkedList.add(head, nodeToAdd, 0);
linkedList.add(head, new ListNode(2), 1);
linkedList.add(head, new ListNode(3), 2);
// when
ListNode resultA = linkedList.remove(head, 3);// 범위 초과
ListNode resultB = linkedList.remove(head, -1);// 잘못된 인덱스
ListNode resultC = nodeToAdd.remove(head, 0);// head가 아닌 노드는 삭제 금지
// then
Assertions.assertNull(resultA);
Assertions.assertNull(resultB);
Assertions.assertNull(resultC);
}
@Test
@DisplayName("LinkedList: Basic Contains Node Test")
void basicContains() {
// given
linkedList.add(head, new ListNode(1), 0);
linkedList.add(head, new ListNode(2), 1);
ListNode nodeToFind = linkedList.add(head, new ListNode(3), 2);
// when
boolean containsCheck = linkedList.contains(head, nodeToFind);
// then
Assertions.assertTrue(containsCheck);
}
@Test
@DisplayName("LinkedList: fail Contains Node Test")
void wrongContains() {
// given
ListNode nodeNotInList = new ListNode(10);
linkedList.add(head, new ListNode(1), 0);
linkedList.add(head, new ListNode(2), 1);
linkedList.add(head, new ListNode(3), 2);
// when
boolean checkA = linkedList.contains(head, nodeNotInList);
boolean checkB = nodeNotInList.contains(head, nodeNotInList);
// then
Assertions.assertFalse(checkA);
Assertions.assertFalse(checkB);
}
}