Beispiel #1
0
def run_tests(a):
    print("Run Tests")
    # make sure assignment only runs once
    a.hasRun = True
    a.save()
    # get a list of all the students in the course
    roster_entries = Roster.objects.filter(CourseID = a.CourseID)
    for row in roster_entries:
        # get user information
        curr_user = row.UserID
        username = curr_user.username
        github_username = UserDetail.objects.get(User = curr_user).GitHubUsername
        course_prefix = a.CourseID.GitHubPrefix
        assignment_prefix = a.GitHubPrefix
        solution = a.SolutionLink
        # run tests and save return value
        return_val = test_runner(username, github_username, course_prefix, assignment_prefix, solution)
        submission = Submission.objects.filter(AssignmentID = a, RosterID = row)
        # if a submission already exists delete it
        if submission.count() > 0:
            submission.delete()
        # generate new submission
        instance = Submission()
        instance.AssignmentID = a
        instance.RosterID = row
        instance.SubmittedOn = datetime.now()
        instance.Grade = (return_val.passedTests / return_val.totalTests) * a.PossiblePts
        instance.Comments = return_val.comments
        instance.DidUseExtension = False
        instance.save()
 def run(self):
     """ Run tests specified in this test block. 
     
     Returns:
         list of results
     """
     return tr.test_runner(self).run_tests()
 def run(self):
     """ Run tests specified in this test block. 
     
     Returns:
         list of results
     """
     return tr.test_runner(self).run_tests()
     
Beispiel #4
0
    def test_main(self):
        test_data = test_runner('./tests')

        for args, answer in test_data:
            n, parents = args
            self.assertEqual(
                compute_height(int(n), [int(i) for i in parents.split()]),
                int(answer[0]))
 def test_main(self):
     test_data = test_runner('./tests')
     for test in test_data:
         data, result, file = test
         if result is not None:
             n_workers, _ = list(map(int, data[0].split()))
             jobs = list(map(int, data[1].split()))
             result = list(
                 map(lambda item: tuple(map(int, item.split())), result))
             assigned_jobs = assign_jobs(n_workers, jobs)
             print('file', file)
             self.assertCountEqual(result, assigned_jobs)
    def test_naive(self):
        test_data = test_runner('./tests')
        for test in test_data:

            data, result, file = test

            if '08' not in file:
                n_workers, _ = list(map(int, data[0].split()))
                jobs = list(map(int, data[1].split()))
                assigned_jobs = assign_jobs(n_workers, jobs)
                assigned_jobs_naive = assign_jobs_naive(n_workers, jobs)
                print('file', file)
                self.assertCountEqual(assigned_jobs, assigned_jobs_naive)
Beispiel #7
0
 def test_main(self):
     test_data = test_runner('./tests')
     for test in test_data:
         data, result, file = test
         if result is not None:
             result = list(map(int, result))
             n_tables, n_queries = map(int, data[0].split())
             counts = list(map(int, data[1].split()))
             db = Database(counts)
             expected = []
             for i in range(2, n_queries + 2):
                 dst, src = map(int, data[i].split())
                 db.merge(dst - 1, src - 1)
                 expected.append(db.max_row_count)
             print('file', file)
             self.assertCountEqual(result, expected)
    def test_main(self):
        test_data = test_runner('./tests')
        for test in test_data:
            data, result, file = test

            buffer_size, n_requests = map(int, data[0].split())
            requests = []

            for i in range(n_requests):
                arrived_at, time_to_process = map(int, data[i + 1].split())
                requests.append(Request(arrived_at, time_to_process))

            buffer = Buffer(buffer_size)
            responses = list(
                map(lambda x: x.started_at, process_requests(requests,
                                                             buffer)))
            expected = list(map(int, result))
            print('file', file)
            self.assertCountEqual(responses, expected)
Beispiel #9
0
def assignment_details(request, course_id, assn_name):
    userDetails = UserDetail.objects.get(User=request.user)
    setattr(request, 'view', 'assignment_details')
    if userDetails.isTeacher:
        courses = Course.objects.filter(InstructorID=request.user)
    else:
        courses = Roster.objects.filter(UserID=request.user)
    if userDetails.isTeacher:
        course = Course.objects.get(Slug=course_id)
        assignment = Assignment.objects.get(Slug=assn_name)
        return render(
            request, 'assignment_details.html', {
                'course': course,
                'assignment': assignment,
                'userDetails': userDetails,
                'courses': courses
            })
    else:
        #Student View
        course = Course.objects.get(Slug=course_id)
        assignment = Assignment.objects.get(Slug=assn_name)
        roster = Roster.objects.get(UserID=request.user, CourseID=course)
        pastSubmission = Submission.objects.filter(AssignmentID=assignment,
                                                   RosterID=roster)
        if request.method == 'POST':
            #Define parameters
            Username = request.user.username
            GitHubUserName = UserDetail.objects.get(
                User=request.user).GitHubUsername
            CoursePrefix = course.GitHubPrefix
            AssignmentPrefix = assignment.GitHubPrefix
            SolutionLink = assignment.SolutionLink
            #Call Code which saves the GradeInfo object to the returnVal object
            returnVal = test_runner(Username, GitHubUserName, CoursePrefix,
                                    AssignmentPrefix, SolutionLink)
            #Displays the results of the method call on the webpage as a message response
            messages.add_message(request, messages.INFO, returnVal.comments)
            #If there is already a submission, then overwrite it.
            roster = Roster.objects.get(UserID=request.user, CourseID=course)
            submission = Submission.objects.filter(AssignmentID=assignment,
                                                   RosterID=roster)
            if submission.count() > 0:
                submission.delete()
            #Adds the grade into the database
            instance = Submission()
            instance.AssignmentID = assignment
            instance.RosterID = roster
            instance.SubmittedOn = datetime.now()
            instance.Grade = (returnVal.passedTests /
                              returnVal.totalTests) * assignment.PossiblePts
            instance.Comments = returnVal.comments
            instance.DidUseExtension = False
            instance.save()
        return render(
            request, 'assignment_details.html', {
                'course': course,
                'assignment': assignment,
                'pastSubmission': pastSubmission,
                'userDetails': userDetails,
                'courses': courses
            })
Beispiel #10
0
    def test_main(self):
        test_data = test_runner('./tests')

        for args, answer in test_data:
            self.assertEqual(find_mismatch(*args),
                             answer if answer == 'Success' else int(answer[0]))