コード例 #1
0
def test_swap_up_repeated() -> None:
    e1 = Leader(1, "Sarah", "CEO", 500000, 30, "Some Corp.")
    e2 = Employee(2, "Sandra", "Secretary", 20000, 30)
    e3 = Leader(3, "Sofia", "Manager", 25000, 30, "Grunts Department")
    e4 = Employee(4, "Senya", "Grunt Alpha", 15000, 30)
    e5 = Employee(5, "Sylvia", "Grunt Beta", 10000, 30)
    e6 = Employee(6, "Scarlett", "Grunt Gamma", 5000, 30)
    e7 = Employee(7, "Samantha", "Grunt Epsilon", 2500, 100)
    e2.become_subordinate(e1)
    e3.become_subordinate(e1)
    e4.become_subordinate(e3)
    e5.become_subordinate(e4)
    e6.become_subordinate(e5)
    e7.become_subordinate(e6)

    new_e7 = e7.swap_up()
    assert new_e7.get_superior() == e5
    assert new_e7.salary == 5000
    assert new_e7.position == "Grunt Gamma"

    for i in range(4):
        new_e7 = new_e7.swap_up()

    assert isinstance(new_e7, Leader)
    assert new_e7.get_superior() is None
    assert new_e7.salary == 500000
    assert new_e7.position == "CEO"
    assert new_e7.get_department_name() == "Some Corp."
    new_subs = new_e7.get_direct_subordinates()
    assert new_subs[0].name == "Sarah"
    assert new_subs[1].name == "Sandra"
コード例 #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
コード例 #3
0
def test_obtain_employees() -> None:
    o = Organization()
    e1 = Leader(1, 'Holly', '', 1, 1, 'Department')
    o.add_employee(e1)
    e2 = Employee(2, 'Ivan', '', 1, 1)
    o.add_employee(e2, 1)
    e3 = Employee(3, 'Kevin', '', 1, 1)
    o.add_employee(e3, 2)
    e4 = Employee(4, 'Joe', 'Mama', 1, 100)
    o.add_employee(e4, 2)
    e5 = Employee(5, 'Linda', '', 1, 1)
    o.add_employee(e5, 4)
    assert e1.get_direct_subordinates() == [e2]
    assert e2.get_superior() == e1
    assert e2.get_direct_subordinates() == [e3, e4]
    assert e3.get_superior() == e2
    assert e4.get_superior() == e2
    assert e3.get_direct_subordinates() == []
    assert e4.get_direct_subordinates() == [e5]
    assert e5.get_superior() == e4
    e4.obtain_subordinates([2])
    assert o.get_head() == e1
    assert e1.get_direct_subordinates() == [e3, e4]
    assert e3.get_superior() == e1
    assert e4.get_superior() == e1
    assert e3.get_direct_subordinates() == []
    assert e4.get_direct_subordinates() == [e2, e5]
    assert e2.get_superior() == e4
    assert e5.get_superior() == e4
コード例 #4
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'
コード例 #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_get_department_name() -> None:
    e2 = Employee(3, 'Joe', 'Worker', 10000, 50)
    assert e2.get_department_name() == ''
    l = Leader(1, 'Lena', 'LEADER', 100000, 100, 'Department')
    assert l.get_department_name() == 'Department'
    e1 = Employee(2, 'Mama', 'Anna', 50000, 100)
    e1.become_subordinate(l)
    assert e1.get_department_name() == 'Department'
    e2.become_subordinate(e1)
    assert e2.get_department_name() == 'Department'
コード例 #7
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'
コード例 #8
0
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]
コード例 #9
0
def test_get_closest_common_superior_self_is_superior() -> None:
    e1 = Employee(1, "Emma Ployee", "Worker", 10000, 50)
    e2 = Employee(2, "Sue Perior", "Manager", 50000, 30)
    e3 = Employee(3, "Robocop", "Worker", 20000, 30)
    e4 = Leader(4, "Sarah", "CEO", 500000, 30, "Some Corp.")
    e5 = Employee(5, "Sofia", "Worker", 10000, 30)
    e6 = Employee(6, "Terry", "Worker", 5000, 30)
    e7 = Employee(7, "Odysseus", "Worker", 22000, 30)
    e1.become_subordinate(e2)
    e3.become_subordinate(e2)
    e2.become_subordinate(e4)
    e5.become_subordinate(e2)
    e6.become_subordinate(e4)
    e7.become_subordinate(e4)
    assert e4.get_closest_common_superior(1) == e4
コード例 #10
0
def test_get_organization_head_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 e1.get_organization_head().name == 'Bigg Boss'
コード例 #11
0
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
コード例 #12
0
def create_leaders(n: int) -> [Leader]:
    ans = []
    for i in range(1, n + 1):
        ans.append(
            Leader(i, 'Name' + str(i), 'Job' + str(i), i * 1000, 50,
                   'Department' + str(i)))
    return ans
コード例 #13
0
def test_get_employees_paid_more_than_advanced() -> None:
    e1 = Employee(1, "Emma Ployee", "Worker", 10000, 50)
    e2 = Employee(2, "Sue Perior", "Manager", 50000, 30)
    e3 = Employee(3, "Robocop", "Worker", 20000, 30)
    e4 = Leader(4, "Sarah", "CEO", 500000, 30, "Some Corp.")
    e5 = Employee(5, "Sofia", "Worker", 10000, 30)
    e6 = Employee(6, "Terry", "Worker", 5000, 30)
    e7 = Employee(7, "Odysseus", "Worker", 22000, 30)
    e1.become_subordinate(e2)
    e3.become_subordinate(e2)
    e2.become_subordinate(e4)
    e5.become_subordinate(e2)
    e6.become_subordinate(e4)
    e7.become_subordinate(e4)
    more_than_20000 = e4.get_employees_paid_more_than(20000)
    assert more_than_20000 == [e2, e4, e7]
コード例 #14
0
def test_get_all_subordinates_advanced() -> None:
    e1 = Employee(1, "Emma Ployee", "Worker", 10000, 50)
    e2 = Employee(2, "Sue Perior", "Manager", 20000, 30)
    e3 = Employee(3, "Robocop", "Worker", 20000, 30)
    e4 = Leader(4, "Sarah", "CEO", 20000, 30, "Some Corp.")
    e5 = Employee(5, "Sofia", "Worker", 20000, 30)
    e6 = Employee(6, "Terry", "Worker", 20000, 30)
    e7 = Employee(7, "Odysseus", "Worker", 20000, 30)
    e1.become_subordinate(e2)
    e3.become_subordinate(e2)
    e2.become_subordinate(e4)
    e5.become_subordinate(e2)
    e6.become_subordinate(e4)
    e7.become_subordinate(e4)
    assert e2.get_all_subordinates() == [e1, e3, e5]
    assert e4.get_all_subordinates() == [e1, e2, e3, e5, e6, e7]
    assert e1.get_all_subordinates() == []
コード例 #15
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
コード例 #16
0
def test_short_create() -> None:
    o = Organization()
    lin = Leader(1, 'Linda', 'Sewed', 10, 10, 'MyNew')
    o.add_employee(lin)
    assert o.get_head() == lin
    t = create_department_salary_tree(o)
    assert t.department_name == 'MyNew'
    assert size(t) == 1
コード例 #17
0
def test_become_each_other() -> None:
    e1 = Leader(1, "Sarah", "CEO", 500000, 30, "Some Corp.")
    e2 = Employee(2, "Sandra", "Secretary", 20000, 30)
    e3 = Employee(3, "Sofia", "Manager", 25000, 40)
    e2.become_subordinate(e1)
    e3.become_subordinate(e2)
    assert e3.get_department_name() == 'Some Corp.'
    lol = e2.become_leader('chloeisamazingandneedschicken')
    assert isinstance(lol.get_employee(2), Leader)
    assert e3.get_department_name() == 'chloeisamazingandneedschicken'
    lol = e1.become_employee()
    assert isinstance(lol.get_employee(1), Employee)
    assert isinstance(lol.get_employee(1), Leader) == False
    assert lol.get_employee(1).get_department_name() == ''
    assert len(lol.get_employee(1).get_all_subordinates()) == 2
    assert lol.get_employee(2).get_department_name() == \
           'chloeisamazingandneedschicken'
コード例 #18
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'
コード例 #19
0
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'
コード例 #20
0
def test_obtain_subordinates_simple() -> 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)
    e2.become_subordinate(e1)
    e3.become_subordinate(e1)
    e4.become_subordinate(e3)
    e5.become_subordinate(e3)
    new_head = e2.obtain_subordinates([3, 5])
    assert new_head == e1
    assert e2.get_direct_subordinates() == [e3, e5]
    assert e1.get_direct_subordinates() == [e2, e4]
    assert e3.get_superior() == e2
    assert e5.get_superior() == e2
    assert e2.get_superior() == e1
    assert e4.get_superior() == e1
コード例 #21
0
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
コード例 #22
0
def test_create_department_salary_tree() -> None:
    e1 = Leader(1, "Emma Ployee", "Worker", 15000, 50, 'Marketing')
    e2 = Employee(2, "Sue Perior", "Manager", 25000, 30)
    e3 = Employee(3, "Bigg Boss", "CEO", 50000, 60)
    e4 = Leader(4, "Emma Watson", "Manager", 30000, 50, 'Sales')
    e5 = Leader(5, "The Rock", "Worker", 15000, 15, 'Management')
    e2.become_subordinate(e1)
    e3.become_subordinate(e1)
    e4.become_subordinate(e3)
    e5.become_subordinate(e3)
    o = Organization(e1)
    dst = create_department_salary_tree(o)
    assert dst.department_name == 'Marketing'
    assert dst.salary == 30000.0
    assert len(dst.subdepartments) == 2
    assert dst.subdepartments[0].department_name == 'Sales'
    assert dst.subdepartments[0].salary == 30000.0
    assert dst.subdepartments[1].department_name == 'Management'
    assert dst.subdepartments[1].salary == 15000.0
コード例 #23
0
def test_get_highest_rated_subordinate_advanced() -> None:
    e1 = Employee(1, "Emma Ployee", "Worker", 52000, 50)
    e2 = Employee(2, "Sue Perior", "Manager", 50000, 30)
    e3 = Employee(3, "Robocop", "Worker", 20000, 80)
    e4 = Leader(4, "Sarah", "CEO", 500000, 99, "Some Corp.")
    e5 = Employee(5, "Sofia", "Worker", 10000, 69)
    e6 = Employee(6, "Terry", "Worker", 5000, 79)
    e7 = Employee(7, "Odysseus", "Worker", 62000, 88)
    e8 = Employee(8, "Sparrow", "Contract Worker", 60000, 12)
    e9 = Employee(9, "Nick", "Contract Worker", 70000, 25)
    e10 = Employee(10, "Theseus", "Contract Worker", 80000, 87)
    e1.become_subordinate(e2)
    e3.become_subordinate(e2)
    e2.become_subordinate(e4)
    e5.become_subordinate(e2)
    e6.become_subordinate(e4)
    e7.become_subordinate(e4)
    e8.become_subordinate(e1)
    e9.become_subordinate(e1)
    e10.become_subordinate(e1)
    assert e2.get_highest_rated_subordinate() == e3
    assert e4.get_highest_rated_subordinate() == e7
    assert e1.get_highest_rated_subordinate() == e10
コード例 #24
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'
コード例 #25
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
コード例 #26
0
def test_fire_under_rating_advanced() -> 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)
    o = Organization()
    o.add_employee(e1)
    o.add_employee(e2, 1)
    o.add_employee(e3, 1)
    o.add_employee(e4, 2)
    o.add_employee(e5, 3)
    o.fire_under_rating(35)
    assert o.get_head() == e5
    assert e5.get_direct_subordinates() == [e4]
    assert e4.get_superior() == e5
コード例 #27
0
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
コード例 #28
0
def test_fire_employee_new_head_2() -> None:
    e1 = Leader(1, "Sarah", "CEO", 500000, 30, "Some Corp.")
    e2 = Employee(2, "Sandra", "Secretary", 20000, 40)
    e3 = Employee(3, "Sofia", "Manager", 25000, 30)
    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 == 2
    assert head.get_direct_subordinates() == [e3]
    assert e3.get_superior() == head
コード例 #29
0
def test_fire_lowest_employee_new_head() -> None:
    e1 = Leader(1, "Sarah", "CEO", 500000, 1, "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)
    e6 = Employee(6, "Savannah", "Wedding Officiate", 5000, 50)
    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.add_employee(e6, 2)
    o.fire_lowest_rated_employee()
    assert o.get_head().eid == 2
    assert o.get_head().get_direct_subordinates() == [e3, e6]
    assert e3.get_superior() == e2
コード例 #30
0
def test_get_employees_with_position() -> None:
    e1 = Employee(1, "Emma Ployee", "Worker", 10000, 50)
    e2 = Employee(2, "Sue Perior", "Manager", 50000, 30)
    e3 = Employee(3, "Robocop", "Worker", 20000, 30)
    e4 = Leader(4, "Sarah", "CEO", 500000, 30, "Some Corp.")
    e5 = Employee(5, "Sofia", "Worker", 10000, 30)
    e6 = Employee(6, "Terry", "Worker", 5000, 30)
    e7 = Employee(7, "Odysseus", "Worker", 22000, 30)
    o = Organization()
    o.add_employee(e4)
    o.add_employee(e7, 4)
    o.add_employee(e6, 4)
    o.add_employee(e2, 4)
    o.add_employee(e1, 2)
    o.add_employee(e3, 2)
    o.add_employee(e5, 3)
    assert o.get_employees_with_position("Worker") == [e1, e3, e5, e6, e7]
    assert o.get_employees_with_position("Manager") == [e2]
    assert o.get_employees_with_position("CEO") == [e4]