Created
May 15, 2025 07:29
-
-
Save untainsYD/bd44aeede4e9bbe73a115da1de7a0aba to your computer and use it in GitHub Desktop.
DoublyLinkedListTestClass
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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