summaryrefslogtreecommitdiff
path: root/tests/test-tokenizer-1-bpe.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-tokenizer-1-bpe.cpp')
-rw-r--r--tests/test-tokenizer-1-bpe.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/tests/test-tokenizer-1-bpe.cpp b/tests/test-tokenizer-1-bpe.cpp
index 85a59a14..386530f2 100644
--- a/tests/test-tokenizer-1-bpe.cpp
+++ b/tests/test-tokenizer-1-bpe.cpp
@@ -91,9 +91,19 @@ int main(int argc, char **argv) {
}
}
}
- // TODO: why doesn't this work for the full range of Unicodes?
+ // Restrict to assigned unicode planes
// for (uint32_t cp = 0x10000; cp < 0x0010ffff; ++cp) {
- for (uint32_t cp = 0x10000; cp < 0x00080000; ++cp) {
+ for (uint32_t cp = 0x10000; cp < 0x00040000; ++cp) {
+ std::string str = codepoint_to_utf8(cp);
+ std::vector<llama_token> tokens = llama_tokenize(ctx, str, false);
+ std::string check = llama_detokenize_bpe(ctx, tokens);
+ if (str != check) {
+ fprintf(stderr, "%s : error: codepoint %x detokenizes to '%s'(%zu) instead of '%s'(%zu)\n",
+ __func__, cp, check.c_str(), check.length(), str.c_str(), str.length());
+ return 4;
+ }
+ }
+ for (uint32_t cp = 0x000e0000; cp < 0x0010ffff; ++cp) {
std::string str = codepoint_to_utf8(cp);
std::vector<llama_token> tokens = llama_tokenize(ctx, str, false);
std::string check = llama_detokenize_bpe(ctx, tokens);
@@ -103,7 +113,6 @@ int main(int argc, char **argv) {
return 4;
}
}
-
llama_free_model(model);
llama_free(ctx);