def test_get_organization_head() -> None:
    e1 = Employee(1, "Emma Ployee", "Worker", 10000, 50)
    e2 = Employee(2, "Sue Perior", "Manager", 20000, 30)
    e3 = Employee(3, "Bigg Boss", "CEO", 50000, 60)
    e1.become_subordinate(e2)
    e2.become_subordinate(e3)
    assert e1.get_organization_head().name == 'Bigg Boss'
示例#2
0
def test_department_salary_tree_simple() -> None:
    e1 = Leader(1, "Sarah", "CEO", 300000, 89, "Some Corp.")
    e2 = Leader(2, "Sandra", "Secretary", 20000, 89, "Finance")
    e3 = Employee(3, "Sofia", "Manager", 300000, 89)
    e4 = Leader(4, "Senya", "HR Head", 5000, 89, "Human Resources")
    e5 = Employee(5, "Sylvia", "Secretary", 300000, 99)
    e6 = Employee(6, "Selena", "Grunt", 5000, 99)
    e7 = Employee(7, "Sophie", "Grunt", 5000, 99)
    o = Organization()
    o.add_employee(e1)
    o.add_employee(e2, 1)
    o.add_employee(e3, 1)
    o.add_employee(e4, 1)
    o.add_employee(e5, 1)
    o.add_employee(e6, 4)
    o.add_employee(e7, 4)
    tree = create_department_salary_tree(o)
    assert int(tree.salary) == 300000
    assert tree.department_name == "Some Corp."
    assert len(tree.subdepartments) == 2
    assert int(tree.subdepartments[0].salary) == 20000
    assert tree.subdepartments[0].department_name == "Finance"
    assert len(tree.subdepartments[0].subdepartments) == 0
    assert int(tree.subdepartments[1].salary) == 5000
    assert tree.subdepartments[1].department_name == "Human Resources"
    assert len(tree.subdepartments[1].subdepartments) == 0
def test_lt() -> None:
    e1 = Employee(1, "Emma Ployee", "Worker", 10000, 50)
    e2 = Employee(2, "Sue Perior", "Manager", 20000, 30)
    e3 = Employee(1, "Evil Clone", "Worker", 10000, 50)
    assert e1 < e2
    assert not e2 < e1
    assert not e3 < e1
def test_get_average_salary_simple() -> None:
    o = Organization()
    assert o.get_average_salary() == 0.0
    e1 = Employee(1, "Emma Ployee", "Worker", 10000, 50)
    e2 = Employee(2, "Sue Perior", "Manager", 20000, 30)
    o.add_employee(e2)
    o.add_employee(e1, 2)
    assert o.get_average_salary() == 15000.0
示例#5
0
def test_get_employee() -> None:
    e1 = Employee(1, "Emma Ployee", "Worker", 10000, 50)
    e2 = Employee(2, "Sue Perior", "Manager", 20000, 30)
    e3 = Leader(3, "Bigg Boss", "CEO", 50000, 60, "Some Corp.")
    e1.become_subordinate(e2)
    e2.become_subordinate(e3)
    assert e3.get_employee(1) is e1
    assert e1.get_employee(1) is e1
    assert e2.get_employee(3) is None
示例#6
0
def test_avg_sal() -> None:
    org = Organization()
    assert org.get_average_salary() == 0.0
    e = Employee(1, 'Boss', 'CEO', 50000, 50)
    org.add_employee(e)
    e1 = Employee(2, 'Sarah', 'Keyboardist', 100000, 100)
    org.add_employee(e1, 1)
    assert org.get_average_salary() == 75000
    assert org.get_average_salary('Keyboardist') == 100000
def test_init() -> None:
    e = Employee(1, "Emma Ployee", "Worker", 10000, 50)
    assert e.eid == 1
    assert e.name == "Emma Ployee"
    assert e.position == "Worker"
    assert e.salary == 10000
    assert e.rating == 50
    assert e.get_direct_subordinates() == []
    assert e.get_superior() is None
示例#8
0
def test_get_emp() -> None:
    org2 = Organization(None)
    assert org2.get_employee(1) is None
    e = Employee(1, 'Boss', 'CEO', 50000, 50)
    org = Organization(e)
    assert org.get_employee(1).name == 'Boss'
    e1 = Employee(2, 'Man', 'Manager', 20000, 50)
    e.add_subordinate(e1)
    assert org.get_employee(2).name == 'Man'
    assert org.get_employee(3) is None
def test_add_sub() -> None:
    e1 = Employee(5, "Emma Ployee", "Worker", 10000, 50)
    e2 = Employee(7, "Sue Perior", "Manager", 20000, 30)
    assert len(e1.get_all_subordinates()) == 0
    e1.add_subordinate(e2)
    assert len(e1.get_all_subordinates()) == 1
    assert e2.get_superior() is None
示例#10
0
def test_get_closest_common_superior_simple() -> None:
    e1 = Employee(1, "Emma Ployee", "Worker", 10000, 50)
    e2 = Employee(2, "Sue Perior", "Manager", 20000, 30)
    e3 = Leader(3, "Bigg Boss", "CEO", 50000, 60, "Some Corp.")
    e1.become_subordinate(e3)
    e2.become_subordinate(e3)
    superior = e1.get_closest_common_superior(3)
    assert superior.eid == 3
def test_add_employee_simple() -> None:
    o = Organization()
    e1 = Employee(1, "Emma Ployee", "Worker", 10000, 50)
    e2 = Employee(2, "Sue Perior", "Manager", 20000, 30)
    o.add_employee(e2)
    assert o.get_head() is e2
    o.add_employee(e1, 2)
    assert o.get_employee(1) is e1
    assert e1.get_superior() is e2
    e3 = Employee(3, "Bruce Wayne", "Philanthropist", 0, 100)
    o.add_employee(e3)
    assert o.get_head() == e3
def test_get_higher_paid_employees_simple() -> None:
    e1 = Employee(1, "Emma Ployee", "Worker", 10000, 50)
    e2 = Employee(2, "Sue Perior", "Manager", 20000, 30)
    e3 = Leader(3, "Bigg Boss", "CEO", 50000, 60, "Some Corp.")
    e1.become_subordinate(e2)
    e2.become_subordinate(e3)
    more_than = e2.get_higher_paid_employees()
    assert len(more_than) == 1
    assert more_than[0].name == 'Bigg Boss'
def test_get_next_free_id() -> None:
    dans = Organization()
    dans.add_employee(Employee(1, 'Dan', 'Iel', 1, 1))
    dans.add_employee(Employee(2, 'Dan', 'Iel', 1, 1), 1)
    dans.add_employee(Employee(3, 'Dan', 'Iel', 1, 1), 1)
    dans.add_employee(Employee(4, 'Dan', 'Iel', 1, 1), 3)
    dans.add_employee(Employee(6, 'Dan', 'Iel', 1, 1), 3)
    dans.add_employee(Employee(100, 'Dan', 'Iel', 1, 1), 6)
    dans.add_employee(Employee(5, 'Dan', 'Iel', 1, 1), 2)
    dans.add_employee(Employee(8, 'Dan', 'Iel', 1, 1), 100)
    dans.add_employee(Employee(13, 'Dan', 'Iel', 1, 1), 2)
    dans.add_employee(Employee(27, 'Dan', 'Iel', 1, 1), 13)
    assert dans.get_next_free_id() not in [1, 2, 3, 4, 5, 6, 8, 13, 27, 100]
示例#14
0
def test_swap_up_simple() -> None:
    e1 = Employee(1, "Emma Ployee", "Worker", 10000, 50)
    e2 = Leader(2, "Sue Perior", "Manager", 20000, 30, "Department")
    e3 = Leader(3, "Bigg Boss", "CEO", 50000, 60, "Company")
    e1.become_subordinate(e2)
    e2.become_subordinate(e3)
    new_e1 = e1.swap_up()
    assert isinstance(new_e1, Leader)
    new_e2 = new_e1.get_direct_subordinates()[0]
    assert isinstance(new_e2, Employee)
    assert new_e1.position == 'Manager'
    assert new_e1.eid == 1
    assert e3.get_direct_subordinates()[0] is new_e1
def test_get_average_salary_advanced() -> None:
    e1 = Employee(1, "Emma Ployee", "Worker", 50000, 50)
    e2 = Employee(2, "Sue Perior", "Manager", 50000, 30)
    e3 = Employee(3, "Robocop", "Worker", 50000, 30)
    e4 = Leader(4, "Sarah", "CEO", 500000, 30, "Some Corp.")
    e5 = Employee(5, "Sofia", "Worker", 50000, 30)
    o = Organization()
    o.add_employee(e4)
    o.add_employee(e2, 4)
    o.add_employee(e1, 2)
    o.add_employee(e3, 2)
    o.add_employee(e5, 2)
    assert round(o.get_average_salary()) == 140000
def test_fire_under_rating_simple() -> None:
    e1 = Leader(1, "Sarah", "CEO", 500000, 99, "Some Corp.")
    e2 = Employee(2, "Sandra", "Secretary", 20000, 99)
    e3 = Employee(3, "Sofia", "Manager", 25000, 89)
    e4 = Employee(4, "Senya", "Grunt", 5000, 89)
    e5 = Employee(5, "Sylvia", "Grunt", 5000, 89)
    o = Organization()
    o.add_employee(e1)
    o.add_employee(e2, 1)
    o.add_employee(e3, 1)
    o.add_employee(e4, 3)
    o.add_employee(e5, 3)
    o.fire_under_rating(99)
    assert o.get_head() == e1
    assert e1.get_direct_subordinates() == [e2]
示例#17
0
def test_get_all_subordinates_simple() -> None:
    e1 = Employee(1, "Emma Ployee", "Worker", 10000, 50)
    e2 = Employee(2, "Sue Perior", "Manager", 20000, 30)
    e3 = Leader(3, "Bigg Boss", "CEO", 50000, 60, "Some Corp.")
    e1.become_subordinate(e2)
    e2.become_subordinate(e3)
    assert e3.get_all_subordinates()[0].name == 'Emma Ployee'
    assert e3.get_all_subordinates()[1].name == 'Sue Perior'
示例#18
0
    def create_employee(self, name: str, eid: int, salary: float, rating: int,
                        position: str, superior_id: int) -> None:
        """Create the Employee with the name <name>, ID <eid>, salary <salary>,
        position <position>, rating <rating>, and set their superior to be the
        employee with ID <superior_id>.

        If <superior_id> == 0, this employee is the new head of the
        organization.

        If <eid> is already in use or < 0, then pick the next free ID number as
        the ID.

        Pre-condition: <superior_id> == 0 or is an ID that appears in the
        organization.
        """
        # Find the next free id if eid is already taken or is < 1
        if eid < 1 or self.current_organization.get_employee(eid) is not None:
            eid = self.current_organization.get_next_free_id()

        # Create the employee
        new_employee = Employee(eid, name, position, salary, rating)

        # Add the employee to the organization
        if superior_id <= 0:
            self.current_organization.add_employee(new_employee)
        else:
            self.current_organization.add_employee(new_employee, superior_id)

        self.display_employee(eid)
def test_employee_attributes() -> None:
    e = Employee(1, "name", "position", 10.50, 70)
    assert e.eid == 1
    assert e.name == 'name'
    assert e.position == "position"
    assert e.salary == 10.50
    assert e.rating == 70
def test_promote_employee_simple() -> None:
    e1 = Leader(1, "Sarah", "CEO", 500000, 89, "Some Corp.")
    e2 = Employee(2, "Sandra", "Secretary", 20000, 89)
    e3 = Employee(3, "Sofia", "Manager", 25000, 89)
    e4 = Employee(4, "Senya", "Grunt", 5000, 89)
    e5 = Employee(5, "Sylvia", "Grunt", 5000, 99)
    o = Organization()
    o.add_employee(e1)
    o.add_employee(e2, 1)
    o.add_employee(e3, 1)
    o.add_employee(e4, 3)
    o.add_employee(e5, 3)
    o.promote_employee(5)
    assert o.get_head().eid == 5
    assert len(o.get_head().get_direct_subordinates()) == 2
    assert o.get_head().get_direct_subordinates()[0].eid == 1
    assert o.get_head().get_direct_subordinates()[1].eid == 2
示例#21
0
def test_get_employees_paid_more_than_simple() -> None:
    e1 = Employee(1, "Emma Ployee", "Worker", 10000, 50)
    e2 = Employee(2, "Sue Perior", "Manager", 20000, 30)
    e3 = Leader(3, "Bigg Boss", "CEO", 50000, 60, "Some Corp.")
    e1.become_subordinate(e2)
    e2.become_subordinate(e3)
    more_than_10000 = e3.get_employees_paid_more_than(10000)
    assert len(more_than_10000) == 2
    assert more_than_10000[0].name == 'Sue Perior'
    assert more_than_10000[1].name == 'Bigg Boss'
示例#22
0
def test_add_emp() -> None:
    org = Organization()
    e = Employee(1, 'Boss', 'CEO', 50000, 50)
    assert org.get_employee(1) is None
    org.add_employee(e)
    assert org.get_employee(1).name == 'Boss'
    e1 = Employee(2, 'Sarah', 'Keyboardist', 1000000, 100)
    org.add_employee(e1, 1)
    assert org.get_employee(2).name == 'Sarah'
    assert e1.get_superior() == e
    assert len(e.get_all_subordinates()) == 1
    e2 = Employee(3, 'John', 'Doe', 10, 10)
    org.add_employee(e2, 2)
    assert org.get_employee(3).name == 'John'
    assert e2.get_superior() == e1
def test_fire_employee_new_head() -> None:
    e1 = Leader(1, "Sarah", "CEO", 500000, 30, "Some Corp.")
    e2 = Employee(2, "Sandra", "Secretary", 20000, 30)
    e3 = Employee(3, "Sofia", "Manager", 25000, 40)
    e4 = Employee(4, "Senya", "Grunt", 5000, 30)
    e5 = Employee(5, "Sylvia", "Grunt", 5000, 40)
    o = Organization()
    o.add_employee(e1)
    o.add_employee(e2, 1)
    o.add_employee(e3, 1)
    o.add_employee(e4, 3)
    o.add_employee(e5, 3)
    o.fire_employee(1)
    head = o.get_head()
    assert head.eid == 3
    assert head.get_direct_subordinates() == [e2, e4, e5]
    assert e2.get_superior() == head
    assert e4.get_superior() == head
    assert e5.get_superior() == head
def test_fire_under_tie_advanced() -> None:
    e1 = Employee(1, '', '', 10, 10)
    e2 = Employee(2, '', '', 10, 10)
    e3 = Employee(3, '', '', 10, 20)
    e4 = Employee(4, '', '', 10, 10)
    e5 = Employee(5, '', '', 10, 20)
    o = Organization()
    o.add_employee(e1)
    o.add_employee(e5, 1)
    o.add_employee(e2, 5)
    o.add_employee(e4, 1)
    o.add_employee(e3, 4)
    o.fire_under_rating(20)
    assert o.get_head() == e5
    assert e5.get_direct_subordinates() == [e3]
    assert e3.get_superior() == e5
示例#25
0
def test_get_highest_rated_subordinate_simple() -> None:
    e1 = Employee(1, "Emma Ployee", "Worker", 10000, 50)
    assert e1.get_position_in_hierarchy() == 'Worker'
    e2 = Leader(2, "Sue Perior", "Manager", 20000, 30, "Department")
    e3 = Leader(3, "Bigg Boss", "CEO", 50000, 60, "Company")
    e1.become_subordinate(e2)
    e2.become_subordinate(e3)
    assert e3.get_highest_rated_subordinate().name == 'Sue Perior'
    e1.become_subordinate(e3)
    assert e3.get_highest_rated_subordinate().name == 'Emma Ployee'
def test_fire_under_rating_advanced_2() -> None:
    e1 = Leader(1, "Sarah", "CEO", 500000, 10, "Some Corp.")
    e2 = Employee(2, "Sandra", "Secretary", 20000, 20)
    e3 = Employee(3, "Sofia", "Manager", 25000, 30)
    e4 = Employee(4, "Senya", "Grunt", 5000, 40)
    e5 = Employee(5, "Sylvia", "Grunt", 5000, 50)
    e6 = Employee(6, 'Savanahh', 'Stayin', 5000, 39)
    o = Organization()
    o.add_employee(e1)
    o.add_employee(e2, 1)
    o.add_employee(e3, 1)
    o.add_employee(e4, 2)
    o.add_employee(e6, 3)
    o.add_employee(e5, 6)
    o.fire_under_rating(40)
    assert o.get_head() == e4
    assert e4.get_direct_subordinates() == [e5]
    assert e5.get_superior() == e4
示例#27
0
def test_get_position_in_hierarchy() -> None:
    e1 = Employee(1, "Emma Ployee", "Worker", 10000, 50)
    e2 = Leader(2, "Sue Perior", "Manager", 20000, 30, "Dept E")
    e3 = Leader(3, "Robocop", "Worker", 20000, 30, "Dept D")
    e4 = Leader(4, "Sarah", "Worker", 20000, 30, "Dept C")
    e5 = Leader(5, "Sofia", "Secretary", 20000, 30, "Dept B")
    e6 = Employee(6, "Terry", "COO", 20000, 30)
    e7 = Leader(7, "Sarah", "CEO", 20000, 30, "Dept A")
    e1.become_subordinate(e2)
    e2.become_subordinate(e3)
    e3.become_subordinate(e4)
    e4.become_subordinate(e5)
    e5.become_subordinate(e6)
    e6.become_subordinate(e7)
    assert e1.get_position_in_hierarchy() == "Worker, Dept E, Dept D, Dept C," \
                                             " Dept B, Dept A"
    assert e5.get_position_in_hierarchy() == "Secretary, Dept B, Dept A"
    assert e7.get_position_in_hierarchy() == "CEO, Dept A"
def test_fire_under_tie_simple() -> None:
    e1 = Employee(1, '', '', 10, 10)
    e2 = Employee(2, '', '', 10, 20)
    e3 = Employee(3, '', '', 10, 20)
    o = Organization()
    o.add_employee(e1)
    o.add_employee(e3, 1)
    o.add_employee(e2, 1)
    o.fire_under_rating(20)
    assert o.get_head() == e2
    assert e2.get_direct_subordinates() == [e3]
    assert e3.get_superior() == e2
def test_fire_lowest_rated_employee_tie() -> None:
    e1 = Leader(1, "Sarah", "CEO", 500000, 99, "Some Corp.")
    e2 = Employee(2, "Sandra", "Secretary", 20000, 99)
    e3 = Employee(3, "Sofia", "Manager", 25000, 89)
    e4 = Employee(4, "Senya", "Grunt", 5000, 89)
    e5 = Employee(5, "Sylvia", "Grunt", 5000, 89)
    o = Organization()
    o.add_employee(e1)
    o.add_employee(e2, 1)
    o.add_employee(e3, 1)
    o.add_employee(e4, 3)
    o.add_employee(e5, 3)
    o.fire_lowest_rated_employee()
    assert e1.get_direct_subordinates() == [e2, e4, e5]
    assert e4.get_superior() == e1
    assert e5.get_superior() == e1
示例#30
0
def test_get_department_leader() -> None:
    e1 = Employee(1, "Emma Ployee", "Worker", 10000, 50)
    assert e1.get_department_leader() is None
    e2 = Leader(2, "Sue Perior", "Manager", 20000, 30, "Department")
    e3 = Leader(3, "Bigg Boss", "CEO", 50000, 60, "Company")
    e1.become_subordinate(e2)
    e2.become_subordinate(e3)
    assert e1.get_department_leader().name == 'Sue Perior'
    assert e2.get_department_leader().name == 'Sue Perior'