Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import easygui
- import os
- import subprocess
- import difflib
- from prettytable import PrettyTable
- import time
- class bcolors:
- HEADER = '\033[95m'
- OKBLUE = '\033[94m'
- OKGREEN = '\033[92m'
- WARNING = '\033[93m'
- FAIL = '\033[91m'
- ENDC = '\033[0m'
- BOLD = '\033[1m'
- UNDERLINE = '\033[4m'
- source_code = easygui.fileopenbox(msg="Open source code", title="Source Code", default="*.cpp", multiple=False)
- input_files = easygui.fileopenbox(msg="Open input files", title="Input", default="*.in", multiple=True)
- output_files = easygui.fileopenbox(msg="Open output files", title="Output", default="*.out", multiple=True)
- if len(input_files) != len(output_files):
- print("Please enter same number of input and output files")
- print(u"\u001b[0m\u001b[7m Compiler Output \u001b[0m" + bcolors.WARNING)
- os.system("g++ " + source_code+" -static -DONLINE_JUDGE -s -x c++ -Wl,--stack=268435456 -std=c++11 -D__USE_MINGW_ANSI_STDIO=0 -Wall -Wextra -O2 -lm -fomit-frame-pointer -pthread -o " + os.path.splitext(source_code)[0] + ".exe")
- print(bcolors.ENDC + u"\u001b[0m\u001b[7m Test Cases Checker \u001b[0m" + "\n")
- correct = 0
- x = PrettyTable(["Test Case", "Judge Verdict", "Time Taken"])
- for i in range(len(input_files)):
- start = time.time()
- os.system(os.path.splitext(source_code)[0] + ".exe <" + input_files[i] + " >myoutput.out")
- end = time.time()
- temp = subprocess.Popen("FC /N /LB50 " + output_files[i] + " myoutput.out", stdout=subprocess.PIPE, shell=True)
- (out, err) = temp.communicate()
- if "no differences encountered" in out.decode("utf-8"):
- x.add_row([str(i+1),bcolors.OKGREEN + "AC" + bcolors.ENDC, str(end - start) + " seconds"])
- correct += 1
- else:
- print(bcolors.UNDERLINE + "TEST " + str(i+1) + " " + input_files[i] + ":" + bcolors.ENDC)
- print(bcolors.FAIL + "WA")
- print(out.decode("utf-8") + bcolors.ENDC)
- x.add_row([str(i+1),bcolors.FAIL + "WA" + bcolors.ENDC, "NA"])
- print(x)
- os.remove("myoutput.out")
- print(bcolors.UNDERLINE + "Total Correct = " + str(correct) + "/" + str(len(input_files)) + bcolors.ENDC)
Add Comment
Please, Sign In to add comment