class TestNumberEncodingsRealData(unittest.TestCase):
    """docstring for TestNumberEncodingsRealData"""
    def setUp(self):
        mapping_dict = create_mapping_dict("E | J N Q | R W X | D S Y | F T | A M | C I V | B K U | L O P | G H Z")
        with open('dictionary.txt') as f:
            words_list = f.read().splitlines()
        self.phone_number_encoder = PhoneNumberEncoder(mapping_dict=mapping_dict, words_list=words_list)
        
    def test_empty_list_returned_when_no_encoding_found(self):
        assert len(self.phone_number_encoder.get_encodings('112')) == 0

    def test_get_encodings_with_big_dictionary(self):
        phone_number = "3202371835"

        result = self.phone_number_encoder.get_encodings(phone_number, separator=" ")
        assert result == ['3 wer du Jod 5', '3 wer du Joy 5']

    def test_encode_the_longest_word_in_dict(self):
        phone_number = '9316357348230213'
        result = self.phone_number_encoder.get_encodings(phone_number)
        assert 'zynismusfo"rdernd' in result

    def test_length_of_encoding_matches_length_of_number(self):
        phone_number = '68376528763907524156749871524386598025368689254638'
        # ignoring doublequotes, dashes and empty spaces the length of each result should match 
        # the length of the number
        result = self.phone_number_encoder.get_encodings(phone_number)
        assert all([ len(phone_number) == len(r.translate(None, ' "-')) for r in result])

    def test_50_longest_encodable_numbers_are_encoded(self):
        for phone_number in TOP_LONGEST_ENCODABLE_NUMBERS:
            result = self.phone_number_encoder.get_encodings(phone_number)
            assert len(result) >=1
            assert all([len(phone_number) == len(coded.translate(None, '"- ')) for coded in result])
Пример #2
0
def run(words_list=create_word_list(args.d), source_stream=io.open(args.i, "r")):
    mapping_dict = create_mapping_dict(args.m)
    phone_number_encoder = PhoneNumberEncoder(mapping_dict=mapping_dict, words_list=words_list)

    for phone_number in source_stream:
        safe_phone_number = "".join(re.findall(r"\d+", phone_number))
        if phone_number == "":
            break
        elif len(safe_phone_number) < 2:
            continue
        else:
            result = phone_number_encoder.get_encodings(str(safe_phone_number))
            for r in result:
                print template(phone_number, r)
class TestNumberEncodings(unittest.TestCase):

    def setUp(self):
        mapping_dict = create_mapping_dict("E | J N Q | R W X | D S Y | F T | A M | C I V | B K U | L O P | G H Z")
        words_list = sample_dictionary
        self.phone_number_encoder = PhoneNumberEncoder(mapping_dict=mapping_dict, words_list=words_list)

    def test_correct_encoding_on_sample_data(self):
        expected_results = [s.strip() for s in correct_output]

        for phone_number in sample_phones:
            encodings = self.phone_number_encoder.get_encodings(phone_number, separator=" ")
            for encoding in encodings:
                expected_output = template(phone_number, encoding)
                assert expected_output in expected_results
                expected_results.remove(expected_output)
        logging.info('here expected_results should be empty %s' % expected_results)
        assert len(expected_results) == 0

    def test_empty_list_returned_when_no_encoding_found(self):
        assert len(self.phone_number_encoder.get_encodings('112')) == 0

    def test_returns_original_word_after_encoding(self):
        # 10/783--5: je Bo" da
        number = '1078'
        assert 'je Bo"' in self.phone_number_encoder.get_encodings(number)

    def test_ignore_extra_characters_when_encoding(self):
        weird_number = '//////----1---0/783--5'
        result1 = self.phone_number_encoder.get_encodings(weird_number)
        number = '107835'
        result2 = self.phone_number_encoder.get_encodings(number)
        assert result2 == result1

    def test_ensure_separator_is_respected(self):
        n = '10781078'
        res = self.phone_number_encoder.get_encodings(n, separator=' ')
        res2 = self.phone_number_encoder.get_encodings(n, separator='**')
        assert len(''.join(res).split(' ')) == len(''.join(res2).split('**'))
 def setUp(self):
     mapping_dict = create_mapping_dict("E | J N Q | R W X | D S Y | F T | A M | C I V | B K U | L O P | G H Z")
     words_list = sample_dictionary
     self.phone_number_encoder = PhoneNumberEncoder(mapping_dict=mapping_dict, words_list=words_list)
 def setUp(self):
     mapping_dict = create_mapping_dict("E | J N Q | R W X | D S Y | F T | A M | C I V | B K U | L O P | G H Z")
     with open('dictionary.txt') as f:
         words_list = f.read().splitlines()
     self.phone_number_encoder = PhoneNumberEncoder(mapping_dict=mapping_dict, words_list=words_list)