X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=tests%2Ftest_cadenus.py;h=c7325e976a541960b1038e65abd07736e618e2e3;hb=f19a021eabb3222709b9d513839a14c01cfdfd38;hp=c7b48ec1317f822dede0d9403990ee1dbb47e038;hpb=3350a462f460e81d96c587466f5b6a88cbba1f7e;p=szyfrow.git diff --git a/tests/test_cadenus.py b/tests/test_cadenus.py index c7b48ec..c7325e9 100644 --- a/tests/test_cadenus.py +++ b/tests/test_cadenus.py @@ -56,26 +56,60 @@ def test_decipher_message(): def test_cadenus_break(): - plaintext = sanitise('''It is a truth universally acknowledged, that a single man in - possession of a good fortune, must be in want of a wife. However - little known the feelings or views of such a man may be on his - first entering a neighbourhood, this truth is so well fixed in - the minds of the surrounding families, that he is considered the - rightful property of some one or other of their daughters.''') + plaintext = sanitise('''You will rejoice to hear that no disaster has accompanied the +commencement of an enterprise which you have regarded with such evil +forebodings. I arrived here yesterday, and my first task is to assure +my dear sister of my welfare and increasing confidence in the success +of my undertaking. + +I am already far north of London, and as I walk in the streets of +Petersburgh, I feel a cold northern breeze play upon my cheeks, which +braces my nerves and fills me with delight. Do you understand this +feeling? This breeze, which has travelled from the regions towards +which I am advancing, gives me a foretaste of those icy climes. +Inspirited by this wind of promise, my daydreams become more fervent +and vivid. + +I try in vain to be persuaded that the pole is the seat of +frost and desolation; it ever presents itself to my imagination as the +region of beauty and delight. There, Margaret, the sun is for ever +visible, its broad disk just skirting the horizon and diffusing a +perpetual splendour. There—for with your leave, my sister, I will put +some trust in preceding navigators—there snow and frost are banished; +and, sailing over a calm sea, we may be wafted to a land surpassing in +wonders and in beauty every region hitherto discovered on the habitable +globe. + +Its productions and features may be without example, as the +phenomena of the heavenly bodies undoubtedly are in those undiscovered +solitudes. What may not be expected in a country of eternal light? I +may there discover the wondrous power which attracts the needle and may +regulate a thousand celestial observations that require only this +voyage to render their seeming eccentricities consistent for ever. I +shall satiate my ardent curiosity with the sight of a part of the world +never before visited, and may tread a land never before imprinted by +the foot of man. These are my enticements, and they are sufficient to +conquer all fear of danger or death and to induce me to commence this +laborious voyage with the joy a child feels when he embarks in a little +boat, with his holiday mates, on an expedition of discovery up his +native river. ''' +) expected_key = 'swashbuckling' - expected_score = Ptrigrams(plaintext) + chunk_len = len(transpositions_of(expected_key)) * 25 + target = plaintext + pad(len(plaintext), chunk_len, 'a') + expected_score = Ptrigrams(target) expected_keycol = make_cadenus_keycolumn(doubled_letters='vw', start='a', reverse=True) ciphertext = cadenus_encipher(plaintext, expected_key, expected_keycol) - # dictionary = ['clearinghouse', 'computerising', 'counterclaims', - # 'housewarmings', 'intravenously', 'liquefactions', 'somersaulting', - # 'sportsmanlike', 'swashbuckling'] + dictionary = ['clearinghouse', 'computerising', 'counterclaims', + 'housewarmings', 'intravenously', 'liquefactions', 'somersaulting', + 'sportsmanlike', 'swashbuckling'] - dictionary = ['swashbuckling'] + # dictionary = ['swashbuckling'] - (key, keycol), score = cadenus_break(ciphertext, words=dictionary, + (key, keycol), score = cadenus_break(ciphertext, wordlist=dictionary, fitness=Ptrigrams) assert key == expected_key