Пример #1
0
def step2():
    try:
        from bureaucrat import Bureaucrat
        from exception import GradeTooLowException
        from form import Form
    except:
        return 0

    backup = sys.stdout
    sys.stdout = open('step2_output', 'w')

    score = 0

    form = Form('Amazing Form', 100, 50)
    if form.name != 'Amazing Form' or form.grade_sign != 100 or form.grade_exec != 50:
        sys.stdout.close()
        sys.stdout = backup
        return score

    score = 20

    if not (form.__str__()
            == 'Amazing Form sign grade: 100, exec grade: 50, is signed: False'
            or form.__repr__() ==
            'Amazing Form sign grade: 100, exec grade: 50, is signed: False'):
        sys.stdout.close()
        sys.stdout = backup
        return score

    julien = Bureaucrat('Julien', 140)
    matt = Bureaucrat('Matt', 60)
    exception = False

    score = 30

    try:
        form.be_signed(julien)
    except GradeTooLowException:
        exception = True
    if not exception:
        sys.stdout.close()
        sys.stdout = backup
        return score

    score = 50

    form.be_signed(matt)
    if not form.is_signed:
        return score

    form.is_signed = False
    julien.sign_form(form)
    form.is_signed = False
    matt.sign_form(form)

    sys.stdout.close()
    sys.stdout = backup

    with open('./step2_output') as f:
        output = f.readlines()

        score = 60
        if output[0] and output[0] != 'Julien cannot sign Amazing Form\n':
            return score

        score = 80
        if output[1] and output[1] != 'Matt signs Amazing Form\n':
            return score

    return 100