Skip to content

Instantly share code, notes, and snippets.

@untainsYD
Created May 15, 2025 07:29
Show Gist options
  • Save untainsYD/bd44aeede4e9bbe73a115da1de7a0aba to your computer and use it in GitHub Desktop.
Save untainsYD/bd44aeede4e9bbe73a115da1de7a0aba to your computer and use it in GitHub Desktop.
DoublyLinkedListTestClass
package lab4;
import lab4.container.DoublyLinkedList;
import java.util.Iterator;
/**
* Тестування узагальненого класу DoublyLinkedList
*/
public class Task8 {
public static void main(String[] args) {
// Тестування базових операцій зі списком Integer
testIntegerList();
// Тестування зі списком String
testStringList();
// Тестування спеціальних методів
testSpecialMethods();
// Тестування ітераторів
testIterators();
// Тестування граничних випадків
testEdgeCases();
}
/**
* Тестування базових операцій з цілими числами
*/
private static void testIntegerList() {
System.out.println("=== Тестування списку Integer ===");
// Створення порожнього списку
DoublyLinkedList<Integer> list = new DoublyLinkedList<>();
System.out.println("Новий список: " + list);
System.out.println("Розмір: " + list.size());
System.out.println("Порожній: " + list.isEmpty());
// Додавання елементів
list.add(10);
list.add(20);
list.add(30);
System.out.println("\nПісля додавання трьох елементів: " + list);
System.out.println("Розмір: " + list.size());
System.out.println("Порожній: " + list.isEmpty());
// Додавання за індексом
list.add(1, 15);
System.out.println("\nПісля додавання 15 за індексом 1: " + list);
// Отримання елементів
System.out.println("\nЕлемент за індексом 0: " + list.get(0));
System.out.println("Елемент за індексом 2: " + list.get(2));
// Заміна елементів
list.set(0, 5);
System.out.println("\nПісля заміни елемента за індексом 0 на 5: " + list);
// Видалення елементів
list.remove(2);
System.out.println("\nПісля видалення елемента за індексом 2: " + list);
// Перевірка наявності елементів
System.out.println("\nСписок містить 5: " + list.contains(5));
System.out.println("Список містить 25: " + list.contains(25));
// Очищення списку
list.clear();
System.out.println("\nПісля очищення: " + list);
System.out.println("Розмір: " + list.size());
System.out.println();
}
/**
* Тестування списку рядків
*/
private static void testStringList() {
System.out.println("=== Тестування списку String ===");
// Створення списку з початковими елементами
DoublyLinkedList<String> list = new DoublyLinkedList<>("Apple", "Banana", "Cherry");
System.out.println("Список з початковими елементами: " + list);
// Додавання елементів з обох кінців
list.addFirst("Orange");
list.addLast("Grape");
System.out.println("\nПісля додавання з обох кінців: " + list);
// Отримання елементів з обох кінців
System.out.println("\nПерший елемент: " + list.getFirst());
System.out.println("Останній елемент: " + list.getLast());
// Видалення елементів з обох кінців
String first = list.removeFirst();
String last = list.removeLast();
System.out.println("\nВидалений перший елемент: " + first);
System.out.println("Видалений останній елемент: " + last);
System.out.println("Список після видалення: " + list);
// Пошук індексу
System.out.println("\nІндекс 'Banana': " + list.indexOf("Banana"));
System.out.println("Індекс 'Melon': " + list.indexOf("Melon"));
System.out.println();
}
/**
* Тестування спеціальних методів
*/
private static void testSpecialMethods() {
System.out.println("=== Тестування спеціальних методів ===");
DoublyLinkedList<Character> list = new DoublyLinkedList<>('A', 'B', 'C', 'D', 'E');
System.out.println("Початковий список: " + list);
// Видалення елемента за значенням
list.remove('C');
System.out.println("\nПісля видалення 'C': " + list);
// Додавання та видалення з різних кінців
list.addFirst('X');
list.addLast('Y');
System.out.println("\nПісля додавання з обох кінців: " + list);
list.removeFirst();
list.removeLast();
System.out.println("Після видалення з обох кінців: " + list);
System.out.println();
}
/**
* Тестування ітераторів
*/
private static void testIterators() {
System.out.println("=== Тестування ітераторів ===");
DoublyLinkedList<Integer> list = new DoublyLinkedList<>(1, 2, 3, 4, 5);
System.out.println("Список: " + list);
// Прямий ітератор (for-each)
System.out.println("\nПеребір елементів за допомогою for-each:");
for (Integer item : list) {
System.out.print(item + " ");
}
System.out.println();
// Прямий ітератор (явний)
System.out.println("\nПеребір елементів за допомогою явного ітератора:");
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next() + " ");
}
System.out.println();
// Зворотний ітератор
System.out.println("\nПеребір елементів у зворотному напрямку:");
Iterator<Integer> descendingIterator = list.descendingIterator();
while (descendingIterator.hasNext()) {
System.out.print(descendingIterator.next() + " ");
}
System.out.println();
// Видалення елементів за допомогою ітератора
System.out.println("\nВидалення парних елементів за допомогою ітератора:");
iterator = list.iterator();
while (iterator.hasNext()) {
Integer item = iterator.next();
if (item % 2 == 0) {
iterator.remove();
}
}
System.out.println("Список після видалення: " + list);
System.out.println();
}
/**
* Тестування граничних випадків
*/
private static void testEdgeCases() {
System.out.println("=== Тестування граничних випадків ===");
// Порожній список
DoublyLinkedList<String> list = new DoublyLinkedList<>();
System.out.println("Порожній список: " + list);
try {
String first = list.getFirst();
System.out.println("Перший елемент: " + first); // Не повинно виконатись
} catch (Exception e) {
System.out.println("Очікувана помилка при отриманні першого елемента з порожнього списку: " + e.getMessage());
}
try {
String last = list.getLast();
System.out.println("Останній елемент: " + last); // Не повинно виконатись
} catch (Exception e) {
System.out.println("Очікувана помилка при отриманні останнього елемента з порожнього списку: " + e.getMessage());
}
try {
String removed = list.removeFirst();
System.out.println("Видалений елемент: " + removed); // Не повинно виконатись
} catch (Exception e) {
System.out.println("Очікувана помилка при видаленні першого елемента з порожнього списку: " + e.getMessage());
}
// Список з одним елементом
System.out.println("\nСписок з одним елементом:");
list.add("Single");
System.out.println(list);
System.out.println("Перший елемент: " + list.getFirst());
System.out.println("Останній елемент: " + list.getLast());
// Видалення єдиного елемента
String removed = list.removeFirst();
System.out.println("Видалений елемент: " + removed);
System.out.println("Список після видалення: " + list);
// Некоректні індекси
list.add("A");
list.add("B");
list.add("C");
try {
String element = list.get(-1);
System.out.println("Елемент за індексом -1: " + element); // Не повинно виконатись
} catch (Exception e) {
System.out.println("\nОчікувана помилка при доступі за від'ємним індексом: " + e.getMessage());
}
try {
String element = list.get(3);
System.out.println("Елемент за індексом 3: " + element); // Не повинно виконатись
} catch (Exception e) {
System.out.println("Очікувана помилка при доступі за занадто великим індексом: " + e.getMessage());
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment