1import unittest 2from util import * 3 4class MnemonicTests(unittest.TestCase): 5 6 words_list, wl = None, None 7 8 def setUp(self): 9 if self.wl is None and wordlist_init is not None: 10 self.words_list, words = load_words('english') 11 self.wl = wordlist_init(utf8(words)) 12 13 14 @internal_only() 15 def test_mnemonic(self): 16 17 LEN = 16 18 PHRASES = LEN * 8 // 11 # 11 bits per phrase 19 PHRASES_BYTES = (PHRASES * 11 + 7) // 8 # Bytes needed to store 20 self.assertEqual(LEN, PHRASES_BYTES) 21 22 buf = create_string_buffer(LEN) 23 24 # Test round tripping 25 for i in range(len(self.words_list) - PHRASES): 26 phrase = utf8(' '.join(self.words_list[i : i + PHRASES])) 27 28 ret, written = mnemonic_to_bytes(self.wl, phrase, buf, LEN) 29 self.assertEqual(ret, 0) 30 self.assertEqual(written, PHRASES_BYTES) 31 generated = mnemonic_from_bytes(self.wl, buf, LEN) 32 self.assertEqual(phrase, generated) 33 34 35if __name__ == '__main__': 36 unittest.main() 37