test: CircleLinkedListTest
(#5422)
* test: CircleLinkedListTest * checkstyle: fix formatting --------- Co-authored-by: alxkm <alx@alx.com>
This commit is contained in:
parent
a9bc7c269d
commit
45563ccbde
@ -51,22 +51,25 @@ public class CircleLinkedList<E> {
|
|||||||
size++;
|
size++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// utility function for traversing the list
|
|
||||||
public String toString() {
|
public String toString() {
|
||||||
Node<E> p = head.next;
|
if (size == 0) {
|
||||||
String s = "[ ";
|
return "[]";
|
||||||
while (p != head) {
|
|
||||||
s += p.value;
|
|
||||||
if (p != tail) {
|
|
||||||
s += " , ";
|
|
||||||
}
|
}
|
||||||
p = p.next;
|
StringBuilder sb = new StringBuilder("[ ");
|
||||||
|
Node<E> current = head.next;
|
||||||
|
while (current != head) {
|
||||||
|
sb.append(current.value);
|
||||||
|
if (current.next != head) {
|
||||||
|
sb.append(", ");
|
||||||
}
|
}
|
||||||
return s + " ]";
|
current = current.next;
|
||||||
|
}
|
||||||
|
sb.append(" ]");
|
||||||
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public E remove(int pos) {
|
public E remove(int pos) {
|
||||||
if (pos > size || pos < 0) {
|
if (pos >= size || pos < 0) {
|
||||||
// catching errors
|
// catching errors
|
||||||
throw new IndexOutOfBoundsException("position cannot be greater than size or negative");
|
throw new IndexOutOfBoundsException("position cannot be greater than size or negative");
|
||||||
}
|
}
|
||||||
@ -89,18 +92,4 @@ public class CircleLinkedList<E> {
|
|||||||
size--;
|
size--;
|
||||||
return saved;
|
return saved;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
CircleLinkedList<Integer> cl = new CircleLinkedList<>();
|
|
||||||
cl.append(12);
|
|
||||||
System.out.println(cl);
|
|
||||||
cl.append(23);
|
|
||||||
System.out.println(cl);
|
|
||||||
cl.append(34);
|
|
||||||
System.out.println(cl);
|
|
||||||
cl.append(56);
|
|
||||||
System.out.println(cl);
|
|
||||||
cl.remove(3);
|
|
||||||
System.out.println(cl);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,78 @@
|
|||||||
|
package com.thealgorithms.datastructures.lists;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
public class CircleLinkedListTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAppendAndSize() {
|
||||||
|
CircleLinkedList<Integer> list = new CircleLinkedList<>();
|
||||||
|
list.append(1);
|
||||||
|
list.append(2);
|
||||||
|
list.append(3);
|
||||||
|
|
||||||
|
assertEquals(3, list.getSize());
|
||||||
|
assertEquals("[ 1, 2, 3 ]", list.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRemove() {
|
||||||
|
CircleLinkedList<Integer> list = new CircleLinkedList<>();
|
||||||
|
list.append(1);
|
||||||
|
list.append(2);
|
||||||
|
list.append(3);
|
||||||
|
list.append(4);
|
||||||
|
|
||||||
|
assertEquals(2, list.remove(1));
|
||||||
|
assertEquals(3, list.remove(1));
|
||||||
|
assertEquals("[ 1, 4 ]", list.toString());
|
||||||
|
assertEquals(2, list.getSize());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRemoveInvalidIndex() {
|
||||||
|
CircleLinkedList<Integer> list = new CircleLinkedList<>();
|
||||||
|
list.append(1);
|
||||||
|
list.append(2);
|
||||||
|
|
||||||
|
assertThrows(IndexOutOfBoundsException.class, () -> list.remove(2));
|
||||||
|
assertThrows(IndexOutOfBoundsException.class, () -> list.remove(-1));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testToStringEmpty() {
|
||||||
|
CircleLinkedList<Integer> list = new CircleLinkedList<>();
|
||||||
|
assertEquals("[]", list.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testToStringAfterRemoval() {
|
||||||
|
CircleLinkedList<Integer> list = new CircleLinkedList<>();
|
||||||
|
list.append(1);
|
||||||
|
list.append(2);
|
||||||
|
list.append(3);
|
||||||
|
list.remove(1);
|
||||||
|
|
||||||
|
assertEquals("[ 1, 3 ]", list.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSingleElement() {
|
||||||
|
CircleLinkedList<Integer> list = new CircleLinkedList<>();
|
||||||
|
list.append(1);
|
||||||
|
|
||||||
|
assertEquals(1, list.getSize());
|
||||||
|
assertEquals("[ 1 ]", list.toString());
|
||||||
|
assertEquals(1, list.remove(0));
|
||||||
|
assertEquals("[]", list.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNullElement() {
|
||||||
|
CircleLinkedList<String> list = new CircleLinkedList<>();
|
||||||
|
assertThrows(NullPointerException.class, () -> list.append(null));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user