Guest User

Untitled

a guest
Dec 13th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.00 KB | None | 0 0
  1. import easygui
  2. import os
  3. import subprocess
  4. import difflib
  5. from prettytable import PrettyTable
  6. import time
  7. class bcolors:
  8. HEADER = '\033[95m'
  9. OKBLUE = '\033[94m'
  10. OKGREEN = '\033[92m'
  11. WARNING = '\033[93m'
  12. FAIL = '\033[91m'
  13. ENDC = '\033[0m'
  14. BOLD = '\033[1m'
  15. UNDERLINE = '\033[4m'
  16. source_code = easygui.fileopenbox(msg="Open source code", title="Source Code", default="*.cpp", multiple=False)
  17. input_files = easygui.fileopenbox(msg="Open input files", title="Input", default="*.in", multiple=True)
  18. output_files = easygui.fileopenbox(msg="Open output files", title="Output", default="*.out", multiple=True)
  19. if len(input_files) != len(output_files):
  20. print("Please enter same number of input and output files")
  21. print(u"\u001b[0m\u001b[7m Compiler Output \u001b[0m" + bcolors.WARNING)
  22. 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")
  23. print(bcolors.ENDC + u"\u001b[0m\u001b[7m Test Cases Checker \u001b[0m" + "\n")
  24. correct = 0
  25. x = PrettyTable(["Test Case", "Judge Verdict", "Time Taken"])
  26. for i in range(len(input_files)):
  27. start = time.time()
  28. os.system(os.path.splitext(source_code)[0] + ".exe <" + input_files[i] + " >myoutput.out")
  29. end = time.time()
  30. temp = subprocess.Popen("FC /N /LB50 " + output_files[i] + " myoutput.out", stdout=subprocess.PIPE, shell=True)
  31. (out, err) = temp.communicate()
  32. if "no differences encountered" in out.decode("utf-8"):
  33. x.add_row([str(i+1),bcolors.OKGREEN + "AC" + bcolors.ENDC, str(end - start) + " seconds"])
  34. correct += 1
  35. else:
  36. print(bcolors.UNDERLINE + "TEST " + str(i+1) + " " + input_files[i] + ":" + bcolors.ENDC)
  37. print(bcolors.FAIL + "WA")
  38. print(out.decode("utf-8") + bcolors.ENDC)
  39. x.add_row([str(i+1),bcolors.FAIL + "WA" + bcolors.ENDC, "NA"])
  40. print(x)
  41. os.remove("myoutput.out")
  42. print(bcolors.UNDERLINE + "Total Correct = " + str(correct) + "/" + str(len(input_files)) + bcolors.ENDC)
Add Comment
Please, Sign In to add comment