mirror of
https://github.com/KyleBanks/XOREncryption.git
synced 2023-08-10 21:13:15 +03:00
Began implementation of unit tests in Python
This commit is contained in:
parent
279a6d5c6d
commit
1298bd49ad
87
test/unittest.py
Normal file
87
test/unittest.py
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# encoding: utf-8
|
||||||
|
"""
|
||||||
|
test.py
|
||||||
|
|
||||||
|
Unit testing for XOR Encryption
|
||||||
|
|
||||||
|
Created by Kyle Banks on 2013-10-09.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
### TODO:
|
||||||
|
### Pass the string to encrypt from the command line, and validate that the encryption runs properly
|
||||||
|
### rather than using a constant output based on kylewbanks.com
|
||||||
|
successResult = " :=.43*-:8m2$."
|
||||||
|
|
||||||
|
# Returns the result of a shell command as a string, synchronously
|
||||||
|
def execCmd(cmd):
|
||||||
|
return os.popen(cmd).read()
|
||||||
|
|
||||||
|
# Executes the appropriate test and validates the output
|
||||||
|
def runTest(cmd, lang):
|
||||||
|
output = execCmd(cmd)
|
||||||
|
result = False
|
||||||
|
|
||||||
|
if(successResult in output):
|
||||||
|
result = True
|
||||||
|
|
||||||
|
if(result):
|
||||||
|
print(lang + ": PASS")
|
||||||
|
else:
|
||||||
|
print(lang + ": FAILED")
|
||||||
|
|
||||||
|
print(output)
|
||||||
|
return result
|
||||||
|
|
||||||
|
# C Test Cases
|
||||||
|
def testC():
|
||||||
|
execCmd("gcc ../C/main.c")
|
||||||
|
return runTest("./a.out", "C")
|
||||||
|
|
||||||
|
# C++ Test Cases
|
||||||
|
def testCpp():
|
||||||
|
execCmd("g++ ../C++/main.cpp")
|
||||||
|
return runTest("./a.out", "C++")
|
||||||
|
|
||||||
|
# Groovy Test Cases
|
||||||
|
# TODO: Use groovy based on PATH variable, not hardcoded path to groovy
|
||||||
|
def testGroovy():
|
||||||
|
return runTest("/usr/local/groovy/bin/groovy ../Groovy/XOREncryption.groovy", "Groovy")
|
||||||
|
|
||||||
|
# Java Test Cases
|
||||||
|
def testJava():
|
||||||
|
execCmd("javac ../Java\ \(Android\ compatible\)/XOREncryption.java")
|
||||||
|
execCmd("cd ../Java\ \(Android\ compatible\)/") #TODO: Shouldn't have to go into the directory to execute Java
|
||||||
|
return runTest("java XOREncryption", "Java")
|
||||||
|
|
||||||
|
# Python Test Cases
|
||||||
|
def testPython():
|
||||||
|
return runTest("python ../Python/XOREncryption.py", "Python")
|
||||||
|
|
||||||
|
# Objective-C Test Cases
|
||||||
|
def testObjectiveC():
|
||||||
|
execCmd("clang -fobjc-arc ../Objective-C/main.m")
|
||||||
|
return runTest("./a.out", "Objective-C") #TODO: For some reason this always fails, even though the output is correct (seems asynchronous almost)
|
||||||
|
|
||||||
|
# Executes all tests
|
||||||
|
def main():
|
||||||
|
print("Executing tests...")
|
||||||
|
print("------------------------------\n")
|
||||||
|
|
||||||
|
pythonSuccess = testPython()
|
||||||
|
cSuccess = testC()
|
||||||
|
cppSuccess = testCpp()
|
||||||
|
groovySuccess = testGroovy()
|
||||||
|
javaSuccess = testJava()
|
||||||
|
objcSuccess = testObjectiveC()
|
||||||
|
|
||||||
|
if(pythonSuccess and cSuccess and cppSuccess and groovySuccess and javaSuccess and objcSuccess):
|
||||||
|
print("\nAll tests successful.")
|
||||||
|
else:
|
||||||
|
print("\nERROR: Not all tests were successful.")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main();
|
Loading…
Reference in New Issue
Block a user