def haltsOnString(progString, inString): # if it doesn't complete before timing out, assume it is in an infinite loop val = utils.runWithTimeout(None, universal, progString, inString) if val != None: return 'yes' else: return 'no'
def numStepsOnString(progString, inString): start = time.clock() # if it doesn't complete before timing out, assume it is in an infinite loop val = utils.runWithTimeout(None, universal, progString, inString) elapsed = time.clock() - start if val: return str(elapsed) else: return 'no'
def testAlterYesToHalt(): for (progName, inString, solution) in [ ('containsGAGA.py', 'GAGAGAGAG', 'halted'), ('containsGAGA.py', 'TTTTGGCCGGT', None), ]: combinedString = utils.ESS(rf(progName), inString) val = utils.runWithTimeout(None, alterYesToHalt, combinedString) utils.tprint((progName, inString), ":", val) assert val == solution
def testyesOnPosIntsViaYoS(): testVals = [ ('containsGAGA.py', 'no'), ('yes.py', None), ] for (filename, solution) in testVals: inString = rf(filename) val = utils.runWithTimeout(None, yesOnPosIntsViaYoS, inString) utils.tprint(inString, ':', val) assert val == solution
def testWeirdH(): msg = 'finished already!' testvals = [ ('factor.py', msg), ('multiply.py', msg), ('containsGAGA.py', None), ] for (filename, solution) in testvals: val = utils.runWithTimeout(None, weirdH, rf(filename)) utils.tprint(filename, ':', val) assert val == solution
def testmaybeLoop(): testVals = [('', None), ('sdfjkhask', None), ('secret sauce', 'yes'), ('xsecret sauce', 'no'), ('xsecret saucex', 'yes'), ] for (inString, solution) in testVals: val = utils.runWithTimeout(None, maybeLoop, inString) utils.tprint(inString, ':', val) assert val == solution
def computesF(progString): from F import F iters = 100 for i in range(iters): inString = utils.randomAlphanumericString() val = utils.runWithTimeout(None, universal, progString, inString) if val: # returned a value, so check if it's the correct one if val != F(inString): return 'no' else: # timed out -- assume infinite loop return 'no' return 'yes'
def testAlterYesToComputesF(): from F import F from G import G # G is any computable function different to F F_input = 'xxxx' for (progName, inString, solution) in [('containsGAGA.py', 'GAGAGAGAG', F(F_input)), ('containsGAGA.py', 'TTTTGGCCGGT', G(F_input))]: utils.writeFile('progString.txt', rf(progName)) utils.writeFile('inString.txt', inString) val = utils.runWithTimeout(None, alterYesToComputesF, F_input) utils.tprint((progName, inString), ":", val) assert val == solution
def testBrokenSort(): testvals = [ ('here is no water but only rock', 'but here is no only rock water'), ('', ''), ('xxxx', 'xxxx'), ('apple banana apple', None), # brokenSort enters infinite loop for duplicate values ] for (inString, solution) in testvals: val = utils.runWithTimeout(None, brokenSort, inString) utils.tprint(inString, ':', val) assert val == solution
def testrecognizeEvenLength(): testVals = [('', 'yes'), ('xx', 'yes'), ('xxxx', 'yes'), (200*'x', 'yes'), ('x', None), ('xxx', None), (201*'x', None), ] for (inString, solution) in testVals: val = utils.runWithTimeout(None, recognizeEvenLength, inString) utils.tprint(inString, ':', val) assert val == solution
def testloopIfContainsGAGA(): haltVal = 'halted' loopVal = 'loop' testvals = [ ('', haltVal), ('GGGGGGGGACCCCC', haltVal), ('GAGA', loopVal), ('CCCATTTGAGAGGGGG', loopVal), ] for (inString, solution) in testvals: val = utils.runWithTimeout(None, loopIfContainsGAGA, inString) utils.tprint(inString, val) if val == None: assert solution == loopVal else: assert val == solution
def testLoop(): inString = 'asdf' val = utils.runWithTimeout(None, loop, inString)
def testhaltsViaCompletePeano(): # Since isPeanoProof() and convertHaltToPeano() are not # implemented, there is nothing reasonable to assert in this # test. We just run the code. inString = 'asdf' val = utils.runWithTimeout(None, haltsViaCompletePeano, inString)
def testinfiniteLoop(): inString = 'asdf' val = utils.runWithTimeout(None, infiniteLoop, inString) assert val == None
def testSortTimings(): val = utils.runWithTimeout(None, sortTimings, 5) utils.tprint(val)
def testGodel(): # Since provableInPeano() and convertHaltToPeano() are not # implemented, there is nothing reasonable to assert in this # test. We just run the code. inString = 'asdf' val = utils.runWithTimeout(None, godel, inString)
def testMultiplyTimings(): val = utils.runWithTimeout(None, multiplyTimings, 5) utils.tprint(val)