From 4b27e80d7f6a41115ad22f493a536dc754696824 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 31 Dec 2016 21:56:47 +0200 Subject: Add first function for hex to word --- check | 5 +++++ pgpwordlist/funcs.py | 27 +++++++++++++++++++++++++++ pgpwordlist/funcs_tests.py | 41 +++++++++++++++++++++++++++++++++++++++++ without-tests | 2 ++ 4 files changed, 75 insertions(+) create mode 100755 check create mode 100644 pgpwordlist/funcs.py create mode 100644 pgpwordlist/funcs_tests.py create mode 100644 without-tests diff --git a/check b/check new file mode 100755 index 0000000..c6dd0cf --- /dev/null +++ b/check @@ -0,0 +1,5 @@ +#!/bin/sh + +set -eu + +python -m CoverageTestRunner --ignore-missing-from=without-tests pgpwordlist diff --git a/pgpwordlist/funcs.py b/pgpwordlist/funcs.py new file mode 100644 index 0000000..59a5972 --- /dev/null +++ b/pgpwordlist/funcs.py @@ -0,0 +1,27 @@ +# Copyright 2016 Lars Wirzenius +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# =*= License: GPL-3+ =*= + + +import pgpwordlist + + +def get_word(hex, offset): + hex = hex.lower() + t = pgpwordlist.pgp_word_list.get(hex) + if t is None: + raise KeyError(hex) + return t[offset % 2] diff --git a/pgpwordlist/funcs_tests.py b/pgpwordlist/funcs_tests.py new file mode 100644 index 0000000..e4f6805 --- /dev/null +++ b/pgpwordlist/funcs_tests.py @@ -0,0 +1,41 @@ +# Copyright 2016 Lars Wirzenius +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# =*= License: GPL-3+ =*= + + +import unittest + +import pgpwordlist + + +class WordListQueriesTests(unittest.TestCase): + + def test_raises_keyerror_if_hex_value_unknown(self): + with self.assertRaises(KeyError): + pgpwordlist.get_word('g', 0) + + def test_gets_unique_results_for_all_two_hex_digit_velues(self): + even_words = set() + odd_words = set() + for i in range(256): + hex = '%02x' % i + even_word = pgpwordlist.get_word(hex, 0) + odd_word = pgpwordlist.get_word(hex, 1) + self.assertNotIn(even_word, even_words) + self.assertNotIn(odd_word, odd_words) + even_words.add(even_word) + odd_words.add(odd_word) + diff --git a/without-tests b/without-tests new file mode 100644 index 0000000..e122dc0 --- /dev/null +++ b/without-tests @@ -0,0 +1,2 @@ +pgpwordlist/__init__.py +pgpwordlist/wordlist.py -- cgit v1.2.1