/
MorningKoffe
/
NewIntArray
Обзор
Документация
Войти
/
MorningKoffe
/
NewIntArray
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
NewIntArray.cpp
147 строк
5 KB
Tsidik Vitaliy
init
06 июн 2026, 21:06
06 июн 2026, 21:06
5788ef5
Код
Авторство
О чём код?
#include <iostream> #include "IntegerArray.h" int main(int argc, char* argv[]) { try { std::cout << "\n=== Test 1: Normal Creation ===\n"; IntegerArray arr(5); arr[0] = 10; arr[1] = 20; arr[2] = 30; std::cout << "arr = [" << arr[0] << ", " << arr[1] << ", " << arr[2] << ", " << arr[3] << ", " << arr[4] << "]\n"; std::cout << "\n=== Test 2: Zero Creation ===\n"; try { IntegerArray arr0(0); } catch (const bad_length& e) { std::cout << "Caught " << e.what() << "\n"; } std::cout << "\n=== Test 3: Out of range ===\n"; try { IntegerArray arr(3); arr[5] = 100; } catch (const bad_range& e) { std::cout << "Caught bad_range at index " << e.index() << "\n"; } std::cout << "\n=== Test 4: Copy and Assign ===\n"; try { IntegerArray arr2 = arr; std::cout << "arr2 = ["; for (size_t i = 0; i < arr2.size(); ++i) { std::cout << arr2[i]; if (i < arr2.size() - 1) std::cout << ", "; } std::cout << "]\n"; IntegerArray arr3(2); arr3 = arr; std::cout << "arr3 (after assignment) = ["; for (size_t i = 0; i < arr3.size(); ++i) { std::cout << arr3[i]; if (i < arr3.size() - 1) std::cout << ", "; } std::cout << "]\n"; } catch (const std::exception& e) { std::cerr << "Exception during copy/assign: " << e.what() << "\n"; } std::cout << "\n=== Test 5: Test at method ===\n"; try { IntegerArray arr(2); arr.at(1) = 10; std::cout << "arr.at(1) = 10: " << arr.at(1) << "\n"; std::cout << "arr.at(2) = 10: "; arr.at(2) = 10; } catch (const bad_range& e) { std::cout << "Caught bad_range in at() at index " << e.index() << "\n"; } std::cout << "\n=== Test 6: Const access ===\n"; try { const IntegerArray arr(2); int val = arr[1]; // OK std::cout << "const arr[1] = " << val << "\n"; std::cout << "val = arr.at(3): "; val = arr.at(3); } catch (const std::exception& e) { std::cerr << "Exception with const access: " << e.what() << "\n"; } std::cout << "\n=== Test 7: Insert element ===\n"; arr.insert(1, 15); std::cout << "after insert(1, 15): size=" << arr.size() << "\n"; std::cout << "arr = ["; for (size_t i = 0; i < arr.size(); ++i) { std::cout << arr[i]; if (i < arr.size() - 1) std::cout << ", "; } std::cout << "]\n"; std::cout << "\n=== Test 8: Bad insert (pos > size) ===\n"; try { arr.insert(100, 999); } catch (const bad_argument& e) { std::cout << "Caught bad_argument: " << e.what() << "\n"; } std::cout << "\n=== Test 9: Delete element ===\n"; arr.erase(2); // удаляем индекс 2 (значение 20) std::cout << "after erase(2): size=" << arr.size() << "\n"; std::cout << "arr = ["; for (size_t i = 0; i < arr.size(); ++i) { std::cout << arr[i]; if (i < arr.size() - 1) std::cout << ", "; } std::cout << "]\n"; // → [10, 15, 30, 0, 0] std::cout << "\n=== Test 10: Error deleting (pos == size) ===\n"; try { arr.erase(arr.size()); // pos = 5, size=5 → 5 >= 5 → ошибка } catch (const bad_range& e) { std::cout << "Caught bad_range at index " << e.index() << "\n"; } std::cout << "\n=== Test 11: Error deleting (pos < 0) ===\n"; try { arr.erase(-1); // pos = 5, size=5 → 5 >= 5 → ошибка } catch (const bad_range& e) { std::cout << "Caught bad_range at index " << e.index() << "\n"; } std::cout << "\n=== Test 12: Resize (increase) ===\n"; arr.resize(8); std::cout << "after resize(8): size=" << arr.size() << "\n"; std::cout << "arr = ["; for (size_t i = 0; i < arr.size(); ++i) { std::cout << arr[i]; if (i < arr.size() - 1) std::cout << ", "; } std::cout << "]\n"; // → [10, 15, 30, 0, 0, 0, 0, 0] std::cout << "\n=== Test 13: Resize (decrease) ===\n"; arr.resize(3); std::cout << "after resize(3): size=" << arr.size() << "\n"; std::cout << "arr = ["; for (size_t i = 0; i < arr.size(); ++i) { std::cout << arr[i]; if (i < arr.size() - 1) std::cout << ", "; } std::cout << "]\n"; // → [10, 15, 30] std::cout << "\n=== Test 14: Resize(0) ===\n"; try { arr.resize(0); } catch (const bad_length& e) { std::cout << "Caught bad_length: " << e.what() << "\n"; } std::cout << "\n=== ALL TESTS SUCCESSFULLY COMPLETED !! ===\n"; } catch (const std::exception& e) { std::cerr << "\n=== UNEXPECTED EXCEPTION: " << e.what() << " ===\n"; return 1; } return 0; }