Introduction
Introduction Statistics Contact Development Disclaimer Help
Update bidi tests to also check reordering - libgrapheme - unicode string libra…
git clone git://git.suckless.org/libgrapheme
Log
Files
Refs
README
LICENSE
---
commit 1815d4d8d141da580372c678c3e38fab0e948d52
parent 52ee78ea80d51b163f7fc85e9387389266d2331b
Author: Laslo Hunhold <[email protected]>
Date: Fri, 26 May 2023 09:53:24 +0200
Update bidi tests to also check reordering
We already implemented the reordering extraction, which is why we
only needed to add the handling in the test-binary itself.
Signed-off-by: Laslo Hunhold <[email protected]>
Diffstat:
M test/bidirectional.c | 52 +++++++++++++++++++++++++++--…
1 file changed, 46 insertions(+), 6 deletions(-)
---
diff --git a/test/bidirectional.c b/test/bidirectional.c
@@ -12,12 +12,15 @@
int
main(int argc, char *argv[])
{
- uint_least32_t data[512]; /* TODO iterate and get max, allocate */
+ uint_least32_t data[512],
+ output[512]; /* TODO iterate and get max, allocate */
int_least8_t lev[512];
- size_t i, num_tests, failed, datalen, levlen, ret, j, m;
+ size_t i, num_tests, failed, datalen, levlen, outputlen, ret, j, m,
+ ret2;
datalen = LEN(data);
levlen = LEN(lev);
+ outputlen = LEN(output);
(void)argc;
@@ -27,16 +30,19 @@ main(int argc, char *argv[])
for (i = 0, failed = 0; i < LEN(bidirectional_test); i++) {
for (m = 0; m < bidirectional_test[i].modelen; m++) {
- ret = grapheme_bidirectional_preprocess(
+ ret = grapheme_bidirectional_preprocess_paragraph(
bidirectional_test[i].cp,
bidirectional_test[i].cplen,
- bidirectional_test[i].mode[m], data, datalen);
+ bidirectional_test[i].mode[m], data, datalen,
+ NULL);
+ ret2 = 0;
if (ret != bidirectional_test[i].cplen ||
ret > datalen) {
goto err;
}
+ /* line levels */
ret = grapheme_bidirectional_get_line_embedding_levels(
data, ret, lev, levlen);
@@ -49,6 +55,25 @@ main(int argc, char *argv[])
goto err;
}
}
+
+ /* reordering */
+ ret2 = grapheme_bidirectional_reorder_line(
+ bidirectional_test[i].cp, data, ret, output,
+ outputlen);
+
+ if (ret2 != bidirectional_test[i].reorderlen) {
+ goto err;
+ }
+
+ for (j = 0; j < ret2; j++) {
+ if (output[j] !=
+ bidirectional_test[i]
+ .cp[bidirectional_test[i]
+ .reorder[j]]) {
+ goto err;
+ }
+ }
+
continue;
err:
fprintf(stderr,
@@ -58,17 +83,32 @@ err:
fprintf(stderr, " 0x%04" PRIXLEAST32,
bidirectional_test[i].cp[j]);
}
- fprintf(stderr, " ],\n\tgot (");
+ fprintf(stderr, " ],\n\tlevels: got (");
for (j = 0; j < ret; j++) {
fprintf(stderr, " %" PRIdLEAST8,
(int_least8_t)lev[j]);
}
- fprintf(stderr, " ),\n\texpected (");
+ fprintf(stderr, " ),\n\tlevels: expected (");
for (j = 0; j < ret; j++) {
fprintf(stderr, " %" PRIdLEAST8,
bidirectional_test[i].level[j]);
}
fprintf(stderr, " ).\n");
+
+ fprintf(stderr, "\treordering: got (");
+ for (j = 0; j < ret2; j++) {
+ fprintf(stderr, " 0x%04" PRIxLEAST32,
+ output[j]);
+ }
+ fprintf(stderr, " ),\n\treordering: expected (");
+ for (j = 0; j < bidirectional_test[i].reorderlen; j++)…
+ fprintf(stderr, " 0x%04" PRIxLEAST32,
+ bidirectional_test[i]
+ .cp[bidirectional_test[i]
+ .reorder[j]]);
+ }
+ fprintf(stderr, " ).\n");
+
failed++;
}
}
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.