diff --git a/testAlgorithms.py b/testAlgorithms.py new file mode 100644 index 0000000..179d421 --- /dev/null +++ b/testAlgorithms.py @@ -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 . +""" + + +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 +"""