示例#1
0
def test4(showme=1, findallmatches=1):
    domaingraph, domaincells, morseset, vertexmap, outedges, walldomains, varsaffectedatwall, varnames, threshnames = (
        tc.test4()
    )
    extendedmorsegraph, extendedmorsecells = pp.makeExtendedMorseSetDomainGraph(
        vertexmap, morseset, domaingraph, domaincells
    )
    newoutedges, wallthresh, newwalldomains, booleanoutedges = pp.makeWallGraphFromDomainGraph(
        len(vertexmap), extendedmorsegraph, extendedmorsecells
    )
    newvarsaffectedatwall = pp.varsAtWalls(threshnames, newwalldomains, wallthresh, varnames)
    wallinfo = makeWallInfo(newoutedges, newwalldomains, newvarsaffectedatwall)
    wallinfo = pp.truncateExtendedWallGraph(booleanoutedges, newoutedges, wallinfo)
    patternnames, patternmaxmin, originalpatterns = fp.parsePatterns()
    patterns = pp.translatePatterns(varnames, patternnames, patternmaxmin, cyclic=1)
    match = matchPattern(patterns[0][0], wallinfo, cyclic=1, findallmatches=findallmatches)
    if showme and findallmatches:
        print set(match) == set([(4, 0, 2, 5, 4), (4, 0, 1, 3, 6, 5, 4)])
    if showme and not findallmatches:
        print match[0] in [(4, 0, 2, 5, 4), (4, 0, 1, 3, 6, 5, 4)]
    match = matchPattern(patterns[1][0], wallinfo, cyclic=1, findallmatches=findallmatches)
    if showme:
        print "None" in match
示例#2
0
def test4():
    domaingraph,domaincells,morseset,vertexmap,outedges,walldomains,varsaffectedatwall,varnames,threshnames=tc.test4()
    extendedmorsegraph,extendedmorsecells=pp.makeExtendedMorseSetDomainGraph(vertexmap,morseset,domaingraph,domaincells)
    print extendedmorsegraph==[[6,1],[2,4],[5,],[0,],[3,],[4,],[]]
    print extendedmorsecells==domaincells[3:]+[domaincells[0]]
    newoutedges,wallthresh,newwalldomains,booleanoutedges=pp.makeWallGraphFromDomainGraph(len(vertexmap),extendedmorsegraph, extendedmorsecells)
    print newoutedges==[(),(2,3),(4,),(6,),(7,),(0,1),(5,),(6,)]
    print newwalldomains==[(1,2.5)] +walldomains
    print wallthresh==[0,1,1,0,0,0,1,1]
    print pp.varsAtWalls(threshnames,newwalldomains,wallthresh,varnames)==[0]+varsaffectedatwall
    patternnames=[['X1','X2','X1','X2'],['X1','X1','X2','X2']]
    patternmaxmin=[['min','min','max','max'],['max','min','min','max']]
    patterns=translatePatterns(varnames,patternnames,patternmaxmin,cyclic=1)
    print patterns==[[['md','um','Mu','dM','md']],[['Md','md','um','uM','Md']]]
    patternnames,patternmaxmin,originalpatterns=fp.parsePatterns()
    print patternnames==[['X2', 'X1', 'X2', 'X1'], ['X2', 'X2', 'X1', 'X1']]
    print patternmaxmin==[['max', 'min', 'min', 'max'], ['max', 'min', 'min', 'max']]
    print translatePatterns(varnames,patternnames,patternmaxmin,cyclic=1)==[[['dM','md','um','Mu','dM']],[['dM','dm','mu','Mu','dM']]]
示例#3
0
def blockify(input_bin_str, block_len):
    return [
        input_bin_str[i:i + block_len]
        for i in range(0, len(input_bin_str), block_len)
    ]


def cbc_decrypt(cipher, input_bin_str, iv, block_len):
    # Function for decrypting a single block
    def decrypt_block(cipher, enc_str, iv):
        return strxor(cipher.decrypt(enc_str), iv)

    output_str = ""
    block_list = blockify(input_bin_str, block_len)

    next_iv = iv
    for block in block_list:
        output_str += decrypt_block(cipher, block, next_iv)
        next_iv = block

    return output_str


if __name__ == "__main__":
    testcases.test1()
    testcases.test2()
    testcases.test3()
    testcases.test4()
    testcases.test5a()
    testcases.test5b()
示例#4
0
def test4():
    domaingraph, domaincells, morseset, vertexmap, outedges, walldomains, varsaffectedatwall, varnames, threshnames = tc.test4(
    )
    extendedmorsegraph, extendedmorsecells = pp.makeExtendedMorseSetDomainGraph(
        vertexmap, morseset, domaingraph, domaincells)
    newoutedges, wallthresh, newwalldomains, booleanoutedges = pp.makeWallGraphFromDomainGraph(
        len(vertexmap), extendedmorsegraph, extendedmorsecells)
    newvarsaffectedatwall = pp.varsAtWalls(threshnames, newwalldomains,
                                           wallthresh, varnames)
    wallinfo = wl.makeWallInfo(newoutedges, newwalldomains,
                               newvarsaffectedatwall)
    wallinfo = pp.truncateExtendedWallGraph(booleanoutedges, newoutedges,
                                            wallinfo)
    print set(wallinfo.keys()) == set([(0, 1), (0, 2), (1, 3), (2, 5), (3, 6),
                                       (4, 0), (5, 4), (6, 5)])
    print wallinfo[(0, 1)] == [(3, ('ud', ))]
    print wallinfo[(0, 2)] == [(5, ('um', ))]
    print wallinfo[(1, 3)] == [(6, ('um', ))]
    print wallinfo[(2, 5)] == [(4, ('Mu', ))]
    print wallinfo[(3, 6)] == [(5, ('uu', ))]
    print set(wallinfo[(4, 0)]) == set([(1, ('md', )), (2, ('md', ))])
    print wallinfo[(5, 4)] == [(0, ('dM', ))]
    print wallinfo[(6, 5)] == [(4, ('Mu', ))]
示例#5
0
def test4():
    domaingraph, domaincells, morseset, vertexmap, outedges, walldomains, varsaffectedatwall, varnames, threshnames = tc.test4(
    )
    extendedmorsegraph, extendedmorsecells = pp.makeExtendedMorseSetDomainGraph(
        vertexmap, morseset, domaingraph, domaincells)
    print extendedmorsegraph == [[6, 1], [2, 4], [
        5,
    ], [
        0,
    ], [
        3,
    ], [
        4,
    ], []]
    print extendedmorsecells == domaincells[3:] + [domaincells[0]]
    newoutedges, wallthresh, newwalldomains, booleanoutedges = pp.makeWallGraphFromDomainGraph(
        len(vertexmap), extendedmorsegraph, extendedmorsecells)
    print newoutedges == [(), (2, 3), (4, ), (6, ), (7, ), (0, 1), (5, ),
                          (6, )]
    print newwalldomains == [(1, 2.5)] + walldomains
    print wallthresh == [0, 1, 1, 0, 0, 0, 1, 1]
    print pp.varsAtWalls(threshnames, newwalldomains, wallthresh,
                         varnames) == [0] + varsaffectedatwall
    patternnames = [['X1', 'X2', 'X1', 'X2'], ['X1', 'X1', 'X2', 'X2']]
    patternmaxmin = [['min', 'min', 'max', 'max'],
                     ['max', 'min', 'min', 'max']]
    patterns = translatePatterns(varnames,
                                 patternnames,
                                 patternmaxmin,
                                 cyclic=1)
    print patterns == [[['md', 'um', 'Mu', 'dM', 'md']],
                       [['Md', 'md', 'um', 'uM', 'Md']]]
    patternnames, patternmaxmin, originalpatterns = fp.parsePatterns()
    print patternnames == [['X2', 'X1', 'X2', 'X1'], ['X2', 'X2', 'X1', 'X1']]
    print patternmaxmin == [['max', 'min', 'min', 'max'],
                            ['max', 'min', 'min', 'max']]
    print translatePatterns(varnames, patternnames, patternmaxmin,
                            cyclic=1) == [[['dM', 'md', 'um', 'Mu', 'dM']],
                                          [['dM', 'dm', 'mu', 'Mu', 'dM']]]
示例#6
0
def test4():
    domaingraph,domaincells,morseset,vertexmap,outedges,walldomains,varsaffectedatwall,varnames,threshnames=tc.test4()
    extendedmorsegraph,extendedmorsecells=pp.makeExtendedMorseSetDomainGraph(vertexmap,morseset,domaingraph,domaincells)
    newoutedges,wallthresh,newwalldomains,booleanoutedges=pp.makeWallGraphFromDomainGraph(len(vertexmap),extendedmorsegraph, extendedmorsecells)
    newvarsaffectedatwall=pp.varsAtWalls(threshnames,newwalldomains,wallthresh,varnames)
    wallinfo = wl.makeWallInfo(newoutedges,newwalldomains,newvarsaffectedatwall)
    wallinfo = pp.truncateExtendedWallGraph(booleanoutedges,newoutedges,wallinfo)
    print set(wallinfo.keys())==set([(0,1),(0,2),(1,3),(2,5),(3,6),(4,0),(5,4),(6,5)])
    print wallinfo[(0,1)]==[(3,('ud',))]
    print wallinfo[(0,2)]==[(5,('um',))]
    print wallinfo[(1,3)]==[(6,('um',))]
    print wallinfo[(2,5)]==[(4,('Mu',))]
    print wallinfo[(3,6)]==[(5,('uu',))]
    print set(wallinfo[(4,0)])==set([(1,('md',)),(2,('md',))])
    print wallinfo[(5,4)]==[(0,('dM',))]
    print wallinfo[(6,5)]==[(4,('Mu',))]
示例#7
0
def test4(showme=1, findallmatches=1):
    domaingraph, domaincells, morseset, vertexmap, outedges, walldomains, varsaffectedatwall, varnames, threshnames = tc.test4(
    )
    extendedmorsegraph, extendedmorsecells = pp.makeExtendedMorseSetDomainGraph(
        vertexmap, morseset, domaingraph, domaincells)
    newoutedges, wallthresh, newwalldomains, booleanoutedges = pp.makeWallGraphFromDomainGraph(
        len(vertexmap), extendedmorsegraph, extendedmorsecells)
    newvarsaffectedatwall = pp.varsAtWalls(threshnames, newwalldomains,
                                           wallthresh, varnames)
    wallinfo = makeWallInfo(newoutedges, newwalldomains, newvarsaffectedatwall)
    wallinfo = pp.truncateExtendedWallGraph(booleanoutedges, newoutedges,
                                            wallinfo)
    patternnames, patternmaxmin, originalpatterns = fp.parsePatterns()
    patterns = pp.translatePatterns(varnames,
                                    patternnames,
                                    patternmaxmin,
                                    cyclic=1)
    match = matchPattern(patterns[0][0],
                         wallinfo,
                         cyclic=1,
                         findallmatches=findallmatches)
    if showme and findallmatches:
        print set(match) == set([(4, 0, 2, 5, 4), (4, 0, 1, 3, 6, 5, 4)])
    if showme and not findallmatches:
        print match[0] in [(4, 0, 2, 5, 4), (4, 0, 1, 3, 6, 5, 4)]
    match = matchPattern(patterns[1][0],
                         wallinfo,
                         cyclic=1,
                         findallmatches=findallmatches)
    if showme: print 'None' in match