Handy script to generate Test Cases for HackerRank, HackerEarth and CodeChef Problems
Are you a Problem Author? The toughest part of creating a problem is creating tricky, correct and constrained Test Cases. Well, here is a handy Python Script, for your respective logic (solution).
- Testcase Generator
- Table of Contents
- Mentions
- Supported Languages
- Install
- FAQ 📃
- Contributors ✨
- Stargazers over time 📈
- Blog post on experince in NWoC 2018 by Rounak Agarwal.
- Selected as project in GSSoC 2019
- Selected as project in NJACKWinterOfCode 2018
The following languages are supported for testcase generation:
-
Clone the repository
$ git clone https://github.com/aashutoshrathi/Testcase-Generator.git
-
Create a virtual environment
$ virtualenv venv
(click here to read about activating virtualenv)$ source ./venv/bin/activate
$ cd venv/Scripts/ $ activate
-
Install requirements and modules
$ pip install -r requirements.txt
$ pip install -e .
- Change directory to
tc_generator
$ cd tc_generator/
- Edit the logic file of the language of your choice with the code for which you want to generate TCs NOTE: Make sure to keep the classname as 'logic' in java so that it can compile to 'logic.class'
- Edit the Input area in
tc_gen.py
according to the input format you wish to generate - Run the project
$ python tc_gen.py
- Enter your choice of language when prompted
- Enter the choice of platform when prompted
- The input and output files would be generated and stored in
test-cases.zip
for HackerRank & HackerEarth andtest-cases
directory for CodeChef.
Tip: If you're creating testcases for CodeChef then you can validate that the input sequence is generated according to the constraints using this validator file. 😉
docker build . --tag=tcgen
docker run -p 4000:80 tcgen
- Change Directory to
Testcase-Generator
$ cd Testcase-Generator/
- Install requirements and modules
$ pip install -r requirements.txt
$ pip install -e .
- Run
pytest
$ pytest
- If no tests fail, the generator is working correctly.
- How do I compile with a different version of C++?
Changing Line 22 in
lang_compiler.py
to the line below will compile the file with C++ 17. You can replace the '17' with '11', '14' or '20' in the line below to compile with the respective versions.
'compile': ['g++', f'{CMD}.cpp', '-o', CMD, '-std=c++17']},
- What line ending does it saves the testcases in? It saves the files with Linux style file endings (LF) in both Linux and Windows (unless the file is opened and saved again in WIndows that may change it to CRLF).
Thanks goes to these wonderful people (emoji key):
Aashutosh Rathi 🔧 📆 👀 🐛 💻 |
Pushkar Patel 🚧 |
Pritha Upadhyay 🚧 |
Vishnu Ramana 📖 |
Tim Rossback 📖 |
Sasivarnan R 📖 |
Gerardo Gálvez 💻 |
Dastgir 📖 |
Sai Adarsh S 📖 |
Rounak Agarwal 💻 📝 |
This project follows the all-contributors specification. Contributions of any kind welcome!
Made with ❤ by Aashutosh Rathi