Please help me with this entire C++ lab example. I will provide the given codes below the pictured instructions. thank you so much
// StringDriver.h
#ifndef _STRINGDRIVER_H
#define _STRINGDRIVER_H
#include “String.h”
#include “ReverseString.h”
#include “CaseString.h”
int main();
void test1();
void test2();
void test3();
void test4();
void test5();
void test6();
void test7();
void test8();
void test9();
void test10();
void test11();
void test12();
void test13();
void test14();
void test15();
void test16();
void test17();
void test18();
void test19();
void test20();
void wait();
#endif
————————————————————————————————————————-
// StringDriver.cpp
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include “StringDriver.h”
using namespace std;
ofstream csis;
int main() {
csis.open(“csis.txt”);
test1();
test2();
test3();
test4();
test5();
test6();
test7();
test8();
test9();
test10();
test11();
test12();
test13();
test14();
test15();
test16();
test17();
test18();
test19();
test20();
csis.close();
}
void test1() {
cout << “1. Testing S1: String default ctor.” << endl << endl;
csis << “1. Testing S1: String default ctor.” << endl << endl;
String s1;
s1.print();
wait();
}
void test2() {
cout << “2. Testing S2: String one arg (char *) ctor.” << endl << endl;
csis << “2. Testing S2: String one arg (char *) ctor.” << endl << endl;
String s2(“ABC”);
s2.print();
wait();
}
void test3() {
cout << “3. Testing S3: String one arg (char) ctor.” << endl << endl;
csis << “3. Testing S3: String one arg (char) ctor.” << endl << endl;
String s3(‘Z’);
s3.print();
wait();
}
void test4() {
cout << “4. Testing S4: String one arg (int) ctor.” << endl << endl;
csis << “4. Testing S4: String one arg (int) ctor.” << endl << endl;
String s4(10);
s4.print();
wait();
}
void test5() {
cout << “5. Testing S5, T5: String copy ctor.” << endl << endl;
csis << “5. Testing S5, T5: String copy ctor.” << endl << endl;
String s5(“Purple Rain”);
s5.print();
String t5(s5);
t5.print();
wait();
}
void test6() {
cout << “6. Testing S6: String two arg (char, int) ctor.” << endl << endl;
csis << “6. Testing S6: String two arg (char, int) ctor.” << endl << endl;
String s6(‘*’, 10);
s6.print();
wait();
}
void test7() {
cout << “7. Testing S7, T7, U7: String assignment.” << endl << endl;
csis << “7. Testing S7, T7, U7: String assignment.” << endl << endl;
String s7(“Sally Ride”), t7, u7;
t7 = u7 = s7;
s7.print();
t7.print();
u7.print();
wait();
}
void test8() {
cout << “8. Testing S8: String assignment.” << endl << endl;
csis << “8. Testing S8: String assignment.” << endl << endl;
String s8(“ABC”);
s8 = s8;
s8.print();
wait();
}
void test9() {
cout << “9. Testing S9: Implicit type conversion.” << endl << endl;
csis << “9. Testing S9: Implicit type conversion.” << endl << endl;
String s9;
s9 = “ABC”;
s9.print();
wait();
}
void test10() {
cout << “10. Testing S10, T10, U10: String concatenation.” << endl << endl;
csis << “10. Testing S10, T10, U10: String concatenation.” << endl << endl;
String s10(“DEF”);
String t10(‘H’);
String u10(“ABC” + s10 + “G” + t10 + ‘I’);
u10.print();
String v10(‘X’ + u10);
v10.print();
wait();
}
void test11() {
cout << “11. Testing S11, T11: String concatenation.” << endl << endl;
csis << “11. Testing S11, T11: String concatenation.” << endl << endl;
String s11(‘A’);
String t11(“BC”);
s11 += s11 += t11 += ‘D’;
s11.print();
t11.print();
wait();
}
void test12() {
cout << “12. Testing S12, T12: String unary operator.” << endl << endl;
csis << “12. Testing S12, T12: String unary operator.” << endl << endl;
String s12(“Unary +”);
String t12(+s12);
s12.print();
t12.print();
s12 = +s12;
s12.print();
wait();
}
void test13() {
cout << “13. Testing S13, T13: String comparison operators.” << endl << endl;
csis << “13. Testing S13, T13: String comparison operators.” << endl << endl;
String s13(“ABC”), t13(“ABCD”);
s13.print();
t13.print();
cout << endl;
cout << “== ” << (s13 == t13 ? “True” : “False”) << endl;
cout << “!= ” << (s13 != t13 ? “True” : “False”) << endl;
cout << “< ” << (s13 < t13 ? “True” : “False”) << endl;
cout << “<= ” << (s13 <= t13 ? “True” : “False”) << endl;
cout << “> ” << (s13 > t13 ? “True” : “False”) << endl;
cout << “>= ” << (s13 >= t13 ? “True” : “False”) << endl;
csis << endl;
csis << “== ” << (s13 == t13 ? “True” : “False”) << endl;
csis << “!= ” << (s13 != t13 ? “True” : “False”) << endl;
csis << “< ” << (s13 < t13 ? “True” : “False”) << endl;
csis << “<= ” << (s13 <= t13 ? “True” : “False”) << endl;
csis << “> ” << (s13 > t13 ? “True” : “False”) << endl;
csis << “>= ” << (s13 >= t13 ? “True” : “False”) << endl;
wait();
}
void test14() {
cout << “14. Testing S14: Overloaded subscript operator.” << endl << endl;
csis << “14. Testing S14: Overloaded subscript operator.” << endl << endl;
String s14(“C++ is fun.”);
for (int i = -1; i <= s14.getLength(); i++) {
char& ch = s14[i];
if (ch != ‘