From: Behdad Esfahbod Date: Thu, 28 Apr 2011 15:56:29 +0000 (-0400) Subject: [test/buffer] Test reverse() and reverse_clusters() X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=db126b5448ec802285cf2b6f0e7da412d02dfb28;p=platform%2Fupstream%2FlibHarfBuzzSharp.git [test/buffer] Test reverse() and reverse_clusters() --- diff --git a/test/test-buffer.c b/test/test-buffer.c index ab7f204..75e9a8c 100644 --- a/test/test-buffer.c +++ b/test/test-buffer.c @@ -130,6 +130,12 @@ test_buffer_contents (Fixture *fixture, gconstpointer user_data) g_assert_cmpint (len, ==, 5); for (i = 0; i < len; i++) { + g_assert_cmphex (glyphs[i].mask, ==, 1); + g_assert_cmphex (glyphs[i].var1.u32, ==, 0); + g_assert_cmphex (glyphs[i].var2.u32, ==, 0); + } + + for (i = 0; i < len; i++) { unsigned int cluster; cluster = 1+i; if (i >= 2) { @@ -140,10 +146,58 @@ test_buffer_contents (Fixture *fixture, gconstpointer user_data) } g_assert_cmphex (glyphs[i].codepoint, ==, utf32[1+i]); g_assert_cmphex (glyphs[i].cluster, ==, cluster); - g_assert_cmphex (glyphs[i].mask, ==, 1); - g_assert_cmphex (glyphs[i].var1.u32, ==, 0); - g_assert_cmphex (glyphs[i].var2.u32, ==, 0); } + + /* reverse, test, and reverse back */ + + hb_buffer_reverse (fixture->b); + for (i = 0; i < len; i++) + g_assert_cmphex (glyphs[i].codepoint, ==, utf32[len-i]); + + hb_buffer_reverse (fixture->b); + for (i = 0; i < len; i++) + g_assert_cmphex (glyphs[i].codepoint, ==, utf32[1+i]); + + /* reverse_clusters works same as reverse for now since each codepoint is + * in its own cluster */ + + hb_buffer_reverse_clusters (fixture->b); + for (i = 0; i < len; i++) + g_assert_cmphex (glyphs[i].codepoint, ==, utf32[len-i]); + + hb_buffer_reverse_clusters (fixture->b); + for (i = 0; i < len; i++) + g_assert_cmphex (glyphs[i].codepoint, ==, utf32[1+i]); + + /* now form a cluster and test again */ + glyphs[2].cluster = glyphs[1].cluster; + + /* reverse, test, and reverse back */ + + hb_buffer_reverse (fixture->b); + for (i = 0; i < len; i++) + g_assert_cmphex (glyphs[i].codepoint, ==, utf32[len-i]); + + hb_buffer_reverse (fixture->b); + for (i = 0; i < len; i++) + g_assert_cmphex (glyphs[i].codepoint, ==, utf32[1+i]); + + /* reverse_clusters twice still should return the original string, + * but when applied once, the 1-2 cluster should be retained. */ + + hb_buffer_reverse_clusters (fixture->b); + for (i = 0; i < len; i++) { + unsigned int j = len-1-i; + if (j == 1) + j = 2; + else if (j == 2) + j = 1; + g_assert_cmphex (glyphs[i].codepoint, ==, utf32[1+j]); + } + + hb_buffer_reverse_clusters (fixture->b); + for (i = 0; i < len; i++) + g_assert_cmphex (glyphs[i].codepoint, ==, utf32[1+i]); } static void @@ -184,7 +238,6 @@ main (int argc, char **argv) } /* XXX test invalid UTF-8 / UTF-16 text input (also overlong sequences) */ - /* XXX test reverse() and reverse_clusters() */ /* XXX test pre_allocate(), allocation_successful(), and memory management */ /* XXX test buffer reset */ /* XXX test buffer set length */