11#define CATCH_CONFIG_MAIN
2- #include " ../catch_amalgamated.hpp"
32#include " merge_two_sorted_lists.cpp"
43
4+ #include " ../catch_amalgamated.hpp"
5+
56// Helper function to create a linked list from vector
6- ListNode* createList (const vector<int >& values) {
7- if (values.empty ()) return nullptr ;
8-
7+ ListNode* createList (const std::vector<int >& values) {
8+ if (values.empty ())
9+ return nullptr ;
10+
911 ListNode* head = new ListNode (values[0 ]);
1012 ListNode* current = head;
11-
13+
1214 for (size_t i = 1 ; i < values.size (); i++) {
1315 current->next = new ListNode (values[i]);
1416 current = current->next ;
1517 }
16-
18+
1719 return head;
1820}
1921
2022// Helper function to convert linked list to vector for easy comparison
21- vector<int > listToVector (ListNode* head) {
22- vector<int > result;
23+ std:: vector<int > listToVector (ListNode* head) {
24+ std:: vector<int > result;
2325 while (head) {
2426 result.push_back (head->val );
2527 head = head->next ;
@@ -44,8 +46,8 @@ TEST_CASE("Merge Two Sorted Lists", "[merge_two_sorted_lists]") {
4446 ListNode* list1 = createList ({1 , 2 , 4 });
4547 ListNode* list2 = createList ({1 , 3 , 4 });
4648 ListNode* result = solution.mergeTwoLists (list1, list2);
47-
48- vector<int > expected = {1 , 1 , 2 , 3 , 4 , 4 };
49+
50+ std:: vector<int > expected = {1 , 1 , 2 , 3 , 4 , 4 };
4951 REQUIRE (listToVector (result) == expected);
5052 deleteList (result);
5153 }
@@ -55,7 +57,7 @@ TEST_CASE("Merge Two Sorted Lists", "[merge_two_sorted_lists]") {
5557 ListNode* list1 = nullptr ;
5658 ListNode* list2 = nullptr ;
5759 ListNode* result = solution.mergeTwoLists (list1, list2);
58-
60+
5961 REQUIRE (result == nullptr );
6062 }
6163
@@ -64,16 +66,16 @@ TEST_CASE("Merge Two Sorted Lists", "[merge_two_sorted_lists]") {
6466 ListNode* list1 = nullptr ;
6567 ListNode* list2 = createList ({0 });
6668 ListNode* result = solution.mergeTwoLists (list1, list2);
67-
68- vector<int > expected = {0 };
69+
70+ std:: vector<int > expected = {0 };
6971 REQUIRE (listToVector (result) == expected);
7072 deleteList (result);
7173
7274 // Reverse case: [5] and [] -> [5]
7375 list1 = createList ({5 });
7476 list2 = nullptr ;
7577 result = solution.mergeTwoLists (list1, list2);
76-
78+
7779 expected = {5 };
7880 REQUIRE (listToVector (result) == expected);
7981 deleteList (result);
@@ -83,16 +85,16 @@ TEST_CASE("Merge Two Sorted Lists", "[merge_two_sorted_lists]") {
8385 ListNode* list1 = createList ({1 });
8486 ListNode* list2 = createList ({2 });
8587 ListNode* result = solution.mergeTwoLists (list1, list2);
86-
87- vector<int > expected = {1 , 2 };
88+
89+ std:: vector<int > expected = {1 , 2 };
8890 REQUIRE (listToVector (result) == expected);
8991 deleteList (result);
9092
9193 // Reverse order
9294 list1 = createList ({3 });
9395 list2 = createList ({1 });
9496 result = solution.mergeTwoLists (list1, list2);
95-
97+
9698 expected = {1 , 3 };
9799 REQUIRE (listToVector (result) == expected);
98100 deleteList (result);
@@ -101,7 +103,7 @@ TEST_CASE("Merge Two Sorted Lists", "[merge_two_sorted_lists]") {
101103 list1 = createList ({2 });
102104 list2 = createList ({2 });
103105 result = solution.mergeTwoLists (list1, list2);
104-
106+
105107 expected = {2 , 2 };
106108 REQUIRE (listToVector (result) == expected);
107109 deleteList (result);
@@ -112,16 +114,16 @@ TEST_CASE("Merge Two Sorted Lists", "[merge_two_sorted_lists]") {
112114 ListNode* list1 = createList ({1 , 3 , 5 , 7 , 9 });
113115 ListNode* list2 = createList ({2 , 4 });
114116 ListNode* result = solution.mergeTwoLists (list1, list2);
115-
116- vector<int > expected = {1 , 2 , 3 , 4 , 5 , 7 , 9 };
117+
118+ std:: vector<int > expected = {1 , 2 , 3 , 4 , 5 , 7 , 9 };
117119 REQUIRE (listToVector (result) == expected);
118120 deleteList (result);
119121
120122 // Second list longer
121123 list1 = createList ({1 , 5 });
122124 list2 = createList ({2 , 3 , 4 , 6 , 7 });
123125 result = solution.mergeTwoLists (list1, list2);
124-
126+
125127 expected = {1 , 2 , 3 , 4 , 5 , 6 , 7 };
126128 REQUIRE (listToVector (result) == expected);
127129 deleteList (result);
@@ -131,8 +133,8 @@ TEST_CASE("Merge Two Sorted Lists", "[merge_two_sorted_lists]") {
131133 ListNode* list1 = createList ({1 , 2 , 3 });
132134 ListNode* list2 = createList ({4 , 5 , 6 });
133135 ListNode* result = solution.mergeTwoLists (list1, list2);
134-
135- vector<int > expected = {1 , 2 , 3 , 4 , 5 , 6 };
136+
137+ std:: vector<int > expected = {1 , 2 , 3 , 4 , 5 , 6 };
136138 REQUIRE (listToVector (result) == expected);
137139 deleteList (result);
138140 }
@@ -141,8 +143,8 @@ TEST_CASE("Merge Two Sorted Lists", "[merge_two_sorted_lists]") {
141143 ListNode* list1 = createList ({7 , 8 , 9 });
142144 ListNode* list2 = createList ({1 , 2 , 3 });
143145 ListNode* result = solution.mergeTwoLists (list1, list2);
144-
145- vector<int > expected = {1 , 2 , 3 , 7 , 8 , 9 };
146+
147+ std:: vector<int > expected = {1 , 2 , 3 , 7 , 8 , 9 };
146148 REQUIRE (listToVector (result) == expected);
147149 deleteList (result);
148150 }
@@ -151,8 +153,8 @@ TEST_CASE("Merge Two Sorted Lists", "[merge_two_sorted_lists]") {
151153 ListNode* list1 = createList ({1 , 2 , 3 });
152154 ListNode* list2 = createList ({1 , 2 , 3 });
153155 ListNode* result = solution.mergeTwoLists (list1, list2);
154-
155- vector<int > expected = {1 , 1 , 2 , 2 , 3 , 3 };
156+
157+ std:: vector<int > expected = {1 , 1 , 2 , 2 , 3 , 3 };
156158 REQUIRE (listToVector (result) == expected);
157159 deleteList (result);
158160 }
@@ -161,8 +163,8 @@ TEST_CASE("Merge Two Sorted Lists", "[merge_two_sorted_lists]") {
161163 ListNode* list1 = createList ({-10 , -5 , 0 });
162164 ListNode* list2 = createList ({-8 , -3 , 2 });
163165 ListNode* result = solution.mergeTwoLists (list1, list2);
164-
165- vector<int > expected = {-10 , -8 , -5 , -3 , 0 , 2 };
166+
167+ std:: vector<int > expected = {-10 , -8 , -5 , -3 , 0 , 2 };
166168 REQUIRE (listToVector (result) == expected);
167169 deleteList (result);
168170 }
@@ -171,8 +173,8 @@ TEST_CASE("Merge Two Sorted Lists", "[merge_two_sorted_lists]") {
171173 ListNode* list1 = createList ({-100 , -50 , 50 });
172174 ListNode* list2 = createList ({-75 , 0 , 100 });
173175 ListNode* result = solution.mergeTwoLists (list1, list2);
174-
175- vector<int > expected = {-100 , -75 , -50 , 0 , 50 , 100 };
176+
177+ std:: vector<int > expected = {-100 , -75 , -50 , 0 , 50 , 100 };
176178 REQUIRE (listToVector (result) == expected);
177179 deleteList (result);
178180 }
@@ -181,8 +183,8 @@ TEST_CASE("Merge Two Sorted Lists", "[merge_two_sorted_lists]") {
181183 ListNode* list1 = createList ({-100 , 0 , 100 });
182184 ListNode* list2 = createList ({-100 , 0 , 100 });
183185 ListNode* result = solution.mergeTwoLists (list1, list2);
184-
185- vector<int > expected = {-100 , -100 , 0 , 0 , 100 , 100 };
186+
187+ std:: vector<int > expected = {-100 , -100 , 0 , 0 , 100 , 100 };
186188 REQUIRE (listToVector (result) == expected);
187189 deleteList (result);
188190 }
@@ -191,32 +193,32 @@ TEST_CASE("Merge Two Sorted Lists", "[merge_two_sorted_lists]") {
191193 ListNode* list1 = createList ({5 , 5 , 5 });
192194 ListNode* list2 = createList ({5 , 5 });
193195 ListNode* result = solution.mergeTwoLists (list1, list2);
194-
195- vector<int > expected = {5 , 5 , 5 , 5 , 5 };
196+
197+ std:: vector<int > expected = {5 , 5 , 5 , 5 , 5 };
196198 REQUIRE (listToVector (result) == expected);
197199 deleteList (result);
198200 }
199201
200202 SECTION (" Maximum constraint lengths" ) {
201203 // Create lists with maximum allowed length (50 nodes each)
202- vector<int > values1, values2;
204+ std:: vector<int > values1, values2;
203205 for (int i = 0 ; i < 50 ; i += 2 ) {
204206 values1.push_back (i);
205207 }
206208 for (int i = 1 ; i < 50 ; i += 2 ) {
207209 values2.push_back (i);
208210 }
209-
211+
210212 ListNode* list1 = createList (values1);
211213 ListNode* list2 = createList (values2);
212214 ListNode* result = solution.mergeTwoLists (list1, list2);
213-
214- vector<int > expected;
215+
216+ std:: vector<int > expected;
215217 for (int i = 0 ; i < 50 ; i++) {
216218 expected.push_back (i);
217219 }
218-
220+
219221 REQUIRE (listToVector (result) == expected);
220222 deleteList (result);
221223 }
222- }
224+ }
0 commit comments