def test_restoration_integrity(self): char_table = CharacterTable() char_original = 'c' char_restored = char_table.decode(char_table.encode(char_original)) self.assertEqual(char_restored, char_original)
def predict(self, input_sequence): # todo: refactor labels = self._inference_model.predict(input_sequence) char_table = CharacterTable() s = ''.join([char_table.decode(label) for label in labels]) return s.strip()
def test_mapping_is_one_to_one(self): char_table = CharacterTable() decoded_chars = [] for code in range(len(char_table)): ch = char_table.decode(code) decoded_chars.append(ch) self.assertEqual( len(decoded_chars), len(set(decoded_chars)), 'Got duplicate characters from different codes: {}'.format( decoded_chars)) encoded_chars = [] for ch in decoded_chars: encoded_chars.append(char_table.encode(ch)) self.assertEqual( len(encoded_chars), len(set(encoded_chars)), '2 or more characters got mapped to the same code:'.format( encoded_chars))
def test_sentinel(self): char_table = CharacterTable() sentinel = char_table.sentinel decoded = char_table.decode(char_table.encode(sentinel)) self.assertEqual(decoded, sentinel)
def test_decode_out_of_alphabet(self): char_table = CharacterTable() res = char_table.decode(len(char_table)) self.assertEqual(res, '?')