#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 function tests the getPermutations function def testGetPermutations(): failed = False #Holds whether a test was failed #Test 1 permString = "012" correctAnswer = ["012", "021", "102", "120", "201", "210"] answer = Algorithms.getPermutations(permString) if(answer != correctAnswer): print("getPermutations failed the first test") failed = True #If the false was not triggered it must have passed all tests if(not failed): print("getPermutations 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\n") #Test getPermutations timer.start() testGetPermutations() timer.stop() print("testGetPermutations took " + timer.getString() + " to run") """Results: getPrimes passed all tests testGetPrimes took 429.000 microseconds to run getNumPrimes passed all tests testGetNumPrimes took 324.100 microseconds to run getFactors passed all tests testGetFactors took 202.700 microseconds to run getDivisors passed all tests testGetDivisors took 205.900 microseconds to run getFib passed all tests testGetFib took 1.738 milliseconds to run getAllFib passed all tests testGetAllFib took 215.100 microseconds to run prod passed all tests testProd took 207.000 microseconds to run getPermutations passed all tests testGetPermutations took 212.800 microseconds to run """