""" Written by: Jinesh Parakh This is a checker script which compiles and runs the C++ code that you have written and checks it's accuracy with all the sample inputs and outputs scrapped using the main.py script """ #import necessary ibraries or modules import os import filecmp import sys from termcolor import colored, cprint from colorama import Fore, Back, Style import shutil # The next two functions are used to format text for increasing the user experience def prRed(skk): print("\033[91m {}\033[00m" .format(skk)) def prGreen(skk): print("\033[92m {}\033[00m" .format(skk)) def returnNumberofFiles(): #function to return number of files in that folder path = os.getcwd() numFiles = len([f for f in os.listdir(path)if os.path.isfile(os.path.join(path, f))]) numFiles-=2 numFiles=numFiles//2 return numFiles numFiles=returnNumberofFiles() print("Compiling Code........") if os.system("g++ soln.cpp")!=0: #Compiling the C++ code (soln.cpp) cprint('Compilation Error', 'red',attrs=['bold']) sys.exit() cprint('Code successfully Compiled!!!!', 'green',attrs=['bold']) flag=0 for i in range(0,numFiles): os.system("./a.outmyoutput"+str(i)+".txt") #running the compiled C++ code file1="output"+str(i)+".txt" file2="myoutput"+str(i)+".txt" file3="myoutputt"+str(i)+".txt" shutil.copy(file2,file3) f=open(file3,"a+") f.write("\n") f.close() if filecmp.cmp(file1,file2) or filecmp.cmp(file1,file3): #Checking if the expected output matches with your output print(Fore.GREEN + u'\u2714', end=' ') prGreen("Sample Test Case "+str(i) +" PASS") print() Style.RESET_ALL else: #if the expected output does not match flag=1 print(Fore.RED + u'\u2718', end=' ') prRed("Sample Test Case "+str(i) +" FAIL") Style.RESET_ALL print("Expected Output: ") x=open(file1,"r+") print(x.read()) print("Your Output: ") y=open(file2,"r+") print(y.read()) print() os.remove(file2) os.remove(file3) os.remove("a.out") if flag==0: #if all test cases pass, give OK VERDICT cprint('All sample inputs passed!! VERDICT OK', 'green',attrs=['bold']) else: #if some test cases do not pass, give NOT OK VERICT cprint('Some or all sample inputs failed!! VERDICT NOT OK', 'red',attrs=['bold'])