Testing done for now.
[szyfrow.git] / tests / test_cadenus.py
index c7b48ec1317f822dede0d9403990ee1dbb47e038..c7325e976a541960b1038e65abd07736e618e2e3 100644 (file)
@@ -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