Created a test script for my algorithms

This commit is contained in:
2019-03-02 13:55:15 -05:00
parent 44c89f144d
commit 5c9ff778bb

259
testAlgorithms.py Normal file
View File

@@ -0,0 +1,259 @@
#Python/pyClasses/testAlgorithms.py
#Matthew Ellison
# Created: 03-02-19
#Modified: 03-02-19
#This script runs tests on all function in the Algorithms library
"""
Copyright (C) 2019 Matthew Ellison
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
"""
import Algorithms
from Stopwatch import Stopwatch
#This function tests the getPrimes function
def testGetPrimes():
failed = False #Holds whether a test was failed
#Test 1
correctAnswer = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
topNum = 100
answer = Algorithms.getPrimes(topNum) #Get the answer from the function
#Print an error message if the function returned the wrong answer
if(correctAnswer != answer):
print("getPrimes failed the first test")
failed = True
#Print a message if all of the tests passed
if(not failed):
print("getPrimes passed all tests")
#This function tests the getNumPrimes function
def testGetNumPrimes():
failed = False #Holds whether a test was failed
#Test 1
correctAnswer = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
numPrimes = 25
answer = Algorithms.getNumPrimes(numPrimes) #Get the answer from the function
#Print an error message if the function returned the wrong answer
if(correctAnswer != answer):
print("getNumPrimes failed the first test")
failed = True
#Print a message if all of the tests passed
if(not failed):
print("getNumPrimes passed all tests")
#This function tests the getFactors function
def testGetFactors():
failed = False #Holds whether a test was failed
#Test 1
correctAnswer = [2, 2, 5, 5]
number = 100
answer = Algorithms.getFactors(number)
#Print an error message if the function returned the wrong answer
if(correctAnswer != answer):
print("getFactors failed the first test")
failed = True
#Test 2
correctAnswer = [2, 7, 7]
number = 98
answer = Algorithms.getFactors(number)
#Print an error message if the function returned the wrong answer
if(correctAnswer != answer):
print("getFactors failed the second test")
failed = True
#Print a message if all of the tests passed
if(not failed):
print("getFactors passed all tests")
#This function tests the getDivisors function
def testGetDivisors():
failed = False #Holds whether a test was failed
#Test 1
correctAnswer = [1, 2, 4, 5, 10, 20, 25, 50, 100]
topNum = 100
answer = Algorithms.getDivisors(topNum)
#Print an error message if the function returned the wrong answer
if(correctAnswer != answer):
print("getDivisors failed the first test")
failed = True
#Print a message if all of the tests passed
if(not failed):
print("getDivisors passed all tests")
#This function tests the getFib function
def testGetFib():
failed = False #Holds whether a test was failed
#Test 1
correctAnswer = 144
number = 12
answer = Algorithms.getFib(number)
#Print an error message if the function returned the wrong answer
if(correctAnswer != answer):
print("getFib failed the first test")
failed = True
#Test 2
correctAnswer = 6765
number = 20
answer = Algorithms.getFib(number)
#Print an error message if the function returned the wrong answer
if(correctAnswer != answer):
print("getFib failed the second test")
failed = True
#Test 3
correctAnswer = 1070066266382758936764980584457396885083683896632151665013235203375314520604694040621889147582489792657804694888177591957484336466672569959512996030461262748092482186144069433051234774442750273781753087579391666192149259186759553966422837148943113074699503439547001985432609723067290192870526447243726117715821825548491120525013201478612965931381792235559657452039506137551467837543229119602129934048260706175397706847068202895486902666185435124521900369480641357447470911707619766945691070098024393439617474103736912503231365532164773697023167755051595173518460579954919410967778373229665796581646513903488154256310184224190259846088000110186255550245493937113651657039447629584714548523425950428582425306083544435428212611008992863795048006894330309773217834864543113205765659868456288616808718693835297350643986297640660000723562917905207051164077614812491885830945940566688339109350944456576357666151619317753792891661581327159616877487983821820492520348473874384736771934512787029218636250627816
number = 4782
answer = Algorithms.getFib(number)
#Print an error message if the function returned the wrong answer
if(correctAnswer != answer):
print("getFib failed the third test")
failed = True
#Print a message if all of the tests passed
if(not failed):
print("getFib passed all tests")
#This function tests the getAllFib function
def testGetAllFib():
failed = False #Holds whether a test was failed
#Test 1
correctAnswer = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
highestNumber = 100
answer = Algorithms.getAllFib(highestNumber)
#Print an error message if the function returned the wrong answer
if(correctAnswer != answer):
print("getAllFib failed the first test")
failed = True
#Test 2
correctAnswer = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987]
highestNumber = 1000
answer = Algorithms.getAllFib(highestNumber)
#Print an error message if the function returned the wrong answer
if(correctAnswer != answer):
print("getAllFib failed the second test")
failed = True
#Print a message if all of the tests passed
if(not failed):
print("getAllFib passed all tests")
#This function tests the prod function
def testProd():
failed = False #Holds whether a test was failed
#Test 1
correctAnswer = 0
numbers = []
answer = Algorithms.prod(numbers)
#Print an error message if the function returned the wrong answer
if(correctAnswer != answer):
print("prod failed the first test")
failed = True
#Test 2
correctAnswer = 57600
numbers = [2, 2, 3, 3, 4, 4, 100]
answer = Algorithms.prod(numbers)
#Print an error message if the function returned the wrong answer
if(correctAnswer != answer):
print("prod failed the second test")
failed = True
#Print a message if all of the tests passed
if(not failed):
print("prod passed all tests")
#This runs all of the tests and times them if this script is implicitly called
if __name__ == "__main__":
timer = Stopwatch()
#Test getPrimes
timer.start()
testGetPrimes()
timer.stop()
print("testGetPrimes took " + timer.getString() + " to run\n")
#Test getNumPrimes
timer.start()
testGetNumPrimes()
timer.stop()
print("testGetNumPrimes took " + timer.getString() + " to run\n")
#Test getFactors
timer.start()
testGetFactors()
timer.stop()
print("testGetFactors took " + timer.getString() + " to run\n")
#Test getDivisors
timer.start()
testGetDivisors()
timer.stop()
print("testGetDivisors took " + timer.getString() + " to run\n")
#Test getFib
timer.start()
testGetFib()
timer.stop()
print("testGetFib took " + timer.getString() + " to run\n")
#Test getAllFib
timer.start()
testGetAllFib()
timer.stop()
print("testGetAllFib took " + timer.getString() + " to run\n")
#Test prod
timer.start()
testProd()
timer.stop()
print("testProd took " + timer.getString() + " to run")
"""Results:
getPrimes passed all tests
testGetPrimes took 130.448 microseconds to run
getNumPrimes passed all tests
testGetNumPrimes took 112.202 microseconds to run
getFactors passed all tests
testGetFactors took 41.105 microseconds to run
getDivisors passed all tests
testGetDivisors took 15.416 microseconds to run
getFib passed all tests
testGetFib took 3.185 milliseconds to run
getAllFib passed all tests
testGetAllFib took 25.959 microseconds to run
prod passed all tests
testProd took 9.553 microseconds to run
"""