I am working on this project 

TestProj5
GitHub Classroom URL: see Blackboard

**Note - Any updates to the description will be found on the ZyBook description of this project.

Pete’s Pets has four types of employees.
Managers, who receive a fixed weekly salary
Clerks, who receives a fixed hourly wage for up to the first 40 hours they work and "time-and-a-half," i.e., 1.5 times their hourly wage, for overtime hours worked
Vets, who receive $800 plus $3.75 for each vaccine they administer
Stylists, who receive a fixed amount of money per appointment.

Create a program that calculates the weekly pay for employees of "Pete's Pets", the total payroll and print's out a Weekly Pay Report.

You do not know the number of employees in the file in advance.

Each type of employee has its own pay code:

Managers have paycode 1
Clerks have code 2
Vets have code 3
Stylists have code 4
Input will come from a sequential file that has a line for each employee.

The first item in the line will always be the paycode.
The second and third item will be the first and last name.
The fourth item will be the employee ID.
For a paycode of 1, the salary will be the next item. If the pay code is 2, hourly salary is the next item followed by hours worked. If the pay code is 3, the next item will be the number of vaccines administered. If the pay code is 4, the next item will be the payrate per appointment followed by the number of appointments. All items in a line of the file are separated by a space.
You have been provided with the following classes:

Employee.h (simple class, no need for .cpp file). Implement the < and > operators. Use the employee number to determine > or <.
main.cpp (driver class)
test.cpp (this is used for the autograding)
testing.cpp (this is the one to run on the gl server and get a valgrind report on)
Requirements:

Implement 4 derived classes that inherit from Employee (these are your Data Element classes). An empty .h and .cpp file have been created for each of these.
(a) Manager -
(b) Clerk
(c) Stylist
(d) Vet
They will contain variables appropriate for the type of employee. They inherit from Employee and define the virtual method(s). There should also be getters for private members unique to each class, and any other methods that are needed for your design. The parameterized constructor should call the constructor of the Employee class with member initialization syntax. Provide a copy constructor. The toString method will override the Employee toString method and use the Employee::toString method within the implementation. Provide a destructor. Use const to represent any constants.

Create a Data Manager class called Employees. You have been provided with the .h file and an empty .cpp file. It will contain a vector that holds pointers to Employee objects that will accommodate pointers to Manager, Clerk, Stylist and Vet objects. Add any other variables needed for your design including numManagers, numClerks, numStylist and numVets, which will be incremented when you add an Employee of this type. Employees will contain the following functions:
(a) void addEmployee(string). The string passed in will be one line from the input file. Use the paycode to determine what is to be extracted from the string. Create the correct type of object and add it to the vector.
(b) double calculateWeeklyPay(). Returns the sum of weekly pay for all objects in the vector.
(c) string printReport(). Returns a string with the Weekly Pay Report. The employees are sorted by employee number in the report. (The necessary methods and overloaded operators needed for the sort are provided for you.)The Employee Number and First and Last Names are printed in a column of width 25. The Weekly Pay is printed in a column of width 10. Total Payroll will be printed as well as the number of each type of employee. Look at the example output to see the details of the Weekly Pay Report. All pay must be printed with 2 decimal places.
(d) Rule of 3 - Copy constructor, Destructor, operator= . You will need the clone() for the copy constructor and =.
(e) Default constructor
Any additional functions you may need for your design must be private utility functions. **** Make sure any .h files you need for the derived classes are put in the Employees.h, not the Employees.cpp

main.cpp will read from the file and print out the report.

Given the following input file:

4 Paul Johnson 44444 8.75 75
1 Eric Hall 11111 1200.00
3 Katie Bell 33333 55
2 Patrick Brown 22222 12.50 50
The following report will be printed:

Weekly Pay Report for Pete's Pets

Employee                 Weekly Pay
11111 Eric Hall             1200.00
22222 Patrick Brown          687.50
33333 Katie Bell            1006.25
44444 Paul Johnson           656.25

Total payroll: 3550.00
Managers: 1
Clerks: 1
Vets: 1
Stylist: 1
Given the following file:

4 Paul Johnson 44444 8.75 75
2 Erica Smith 12345 8.75 35
1 Eric Hall 11111 1200.00
4 Paula Potter 34567 12.25 43
3 Katie Bell 33333 55
2 Patrick Brown 22222 12.50 50
3 Kelly Myers 23456 22
3 Karen Miller 45678 34
The following report will be printed:

Weekly Pay Report for Pete's Pets

Employee                 Weekly Pay
11111 Eric Hall             1200.00
12345 Erica Smith            306.25
22222 Patrick Brown          687.50
23456 Kelly Myers            882.50
33333 Katie Bell            1006.25
34567 Paula Potter           526.75
44444 Paul Johnson           656.25
45678 Karen Miller           927.50

Total payroll: 6193.00
Managers: 1
Clerks: 2
Vets: 3
Stylist: 2
You have been provided with two data files - employees.txt and employeesA.txt You have been provided with two testing files - tests.cpp is for the autograding and testing.cpp is the one to test your program on the gl server and run a valgrind report. A makefile is provided. "make driver" will run main.cpp. "make testing" will run all the tests and give you a score. "make testMemory" is for the gl server to find memory leaks. "make test" will run the tests that are used for the autograding. 

 and currently stuck trying to get my project to pass this test 

int testPassedPrintReportEmployee()
{
    int returnResult = 1;
    string expectedString = "";
    string student = "";
    Employees employees;

    ifstream in;
    string line;
    string fileName = "employees.txt";
    string result;
    char result1[80];
    int empNum;
    double total;

    in.open(fileName);
    if (!in)
    {
        student = "Could not open file: " + fileName;
        expectedString = "Opened file: " + fileName + "\n";
        printResultsStr(returnResult, expectedString, student);
        return 1;
    }
    // read a line and add to employees
    while (!in.eof())
    {
        getline(in, line);
        employees.addEmployee(line);
    }
    // report
    istringstream inp(employees.printReport());
    inp.getline(result1, 80, '\n'); //"Weekly Pay Report for Pete's Pets"
    inp.getline(result1, 80, '\n'); // empty line
    inp.getline(result1, 80, '\n'); //"Employee      Weekly Pay"
    inp >> empNum;
    if (empNum != 11111)
    {
        expectedString = "First employee number should be 11111\n";
        student = empNum;
    }
    else
    {
        inp.getline(result1, 80, '\n'); // get the rest of the line
        inp >> empNum;
        if (empNum != 22222)
        {
            expectedString = "Second employee number should be 22222\n";
            student = empNum;
        }
        else
        {
            inp.getline(result1, 80, '\n'); // get the rest of the line
            inp >> empNum;
            if (empNum != 33333)
            {
                expectedString = "Third employee number should be 33333\n";
                student = empNum;
            }
            else
            {
                inp.getline(result1, 80, '\n'); // get the rest of the line
                inp >> empNum;
                if (empNum != 44444)
                {
                    expectedString = "Fourth employee number should be 44444\n";
                    student = empNum;
                }
                else
                {
                    inp.getline(result1, 80, '\n'); // get the rest of the line
                    inp.getline(result1, 80, '\n'); // empty line
                    inp >> result;                  //"Total"
                    inp >> result;                  //"payroll"
                    inp >> total;
                    if (((total - 3550.00) > .01))
                    {
                        expectedString = "total: 3500.00\n";
                        student = "total: " + to_string(total);
                    }
                    else
                    {
                        inp >> result; //"Managers"
                        inp >> total;
                        if (total != 1)
                        {
                            expectedString = "Managers: 1\n";
                            student = "Managers: " + to_string(total);
                        }
                        else
                        {
                            inp >> result; //"Clerks"

                            inp >> total;
                            if (total != 1)
                            {
                                expectedString = "Clerks: 1\n";
                                student = "Clerks: " + to_string(total);
                            }
                            else
                            {
                                inp >> result; //"Vets"
                                inp >> total;
                                if (total != 1)
                                {
                                    expectedString = "Vets: 1\n";
                                    student = "Vets: " + to_string(total);
                                }
                                else
                                {
                                    inp >> result; //"Sylist"
                                    inp >> total;
                                    if (total != 1)
                                    {
                                        expectedString = "Stylist: 1\n";
                                        student = "Stylist: " + to_string(total);
                                    }
                                    else returnResult =0;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    printResultsStr(returnResult, expectedString, student);
    return returnResult;
} 

it's currently returing this 

./test testPassedPrintReportEmployee
Test Name: testPassedPrintReportEmployee
FAILED this test

Expected result:
First employee number should be 11111

Your result:
╬