-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSinglyLinkedListMWE.cpp
More file actions
89 lines (76 loc) · 2.1 KB
/
SinglyLinkedListMWE.cpp
File metadata and controls
89 lines (76 loc) · 2.1 KB
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
#include "SinglyLinkedList.hpp"
#include <iostream>
#include <cassert>
#include <queue>
int main() {
std::cout << "MWE test starts!\n";
// Test constructor and push operations
SinglyLinkedList<int> list;
assert(list.empty());
list.push_back(1);
list.push_back(2);
list.push_front(0);
assert(list.size() == 3);
std::cout << "0\n";
// Test access operations
assert(list.front() == 0);
assert(list.back() == 2);
assert(list.get(1) == 1);
std::cout << "1\n";
// Test pop operations
list.pop_front();
list.pop_back();
assert(list.size() == 1);
assert(list.front() == 1);
std::cout << "2\n";
// Test clear operation
list.clear();
assert(list.empty());
std::cout << "3\n";
// Test copy constructor
SinglyLinkedList<int> list2 = {1, 2, 3, 4, 5};
SinglyLinkedList<int> list3(list2);
assert(list2 == list3);
std::cout << "4\n";
// Test assignment operator
list = list2;
assert(list == list2);
std::cout << "5\n";
// Test conversion to/from std::vector
std::vector<int> vec = list.to_vector();
SinglyLinkedList<int> list4;
list4 = vec;
assert(list == list4);
std::cout << "6\n";
// Test conversion to/from std::array
auto arr = list.to_array_auto<5>();
SinglyLinkedList<int> list5;
list5 = arr;
assert(list == list5);
std::cout << "7\n";
// Test conversion to/from std::list
std::list<int> stdList = list.to_list();
SinglyLinkedList<int> list6;
list6 = stdList;
assert(list == list6);
std::cout << "8\n";
// Test iterator
int sum = 0;
for (const auto& item : list) {
sum += item;
}
assert(sum == 15);
std::cout << "9\n";
// Test compatibility with std::queue
std::queue<int, SinglyLinkedList<int>> myQueue;
myQueue.push(10);
myQueue.push(20);
myQueue.push(30);
assert(myQueue.front() == 10);
assert(myQueue.back() == 30);
myQueue.pop();
assert(myQueue.size() == 2);
std::cout << "10\n";
std::cout << "All tests passed successfully!" << std::endl;
return 0;
}