From 819f73c23cfd8471e1cbc77ee7c14d8150457765 Mon Sep 17 00:00:00 2001 From: Herb Derby Date: Mon, 9 Jul 2018 17:06:09 -0400 Subject: Use new SkGlyphIDSet Change-Id: I6b8080393a22a56577528f66630ad39372edf712 Reviewed-on: https://skia-review.googlesource.com/140243 Commit-Queue: Herb Derby Reviewed-by: Mike Klein --- tests/GlyphRunTest.cpp | 45 ++++++++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 19 deletions(-) (limited to 'tests/GlyphRunTest.cpp') diff --git a/tests/GlyphRunTest.cpp b/tests/GlyphRunTest.cpp index 46b4715c61..0e0c441b75 100644 --- a/tests/GlyphRunTest.cpp +++ b/tests/GlyphRunTest.cpp @@ -11,25 +11,32 @@ #include "Test.h" -DEF_TEST(GlyphSetBasic, reporter) { - SkGlyphSet set; - - std::vector unique; - - set.reuse(10, &unique); - REPORTER_ASSERT(reporter, set.add(7) == 0); - REPORTER_ASSERT(reporter, set.add(3) == 1); - set.reuse(10, &unique); - REPORTER_ASSERT(reporter, set.add(5) == 0); - REPORTER_ASSERT(reporter, set.add(8) == 1); - REPORTER_ASSERT(reporter, set.add(3) == 2); - - REPORTER_ASSERT(reporter, unique.size() == 5); - REPORTER_ASSERT(reporter, unique[0] == 7); - REPORTER_ASSERT(reporter, unique[1] == 3); - REPORTER_ASSERT(reporter, unique[2] == 5); - REPORTER_ASSERT(reporter, unique[3] == 8); - REPORTER_ASSERT(reporter, unique[4] == 3); +DEF_TEST(GlyphRunGlyphIDSetBasic, reporter) { + SkGlyphID glyphs[] = {100, 3, 240, 3, 234}; + auto glyphIDs = SkSpan(glyphs, SK_ARRAY_COUNT(glyphs)); + int universeSize = 1000; + SkGlyphID uniqueGlyphs[SK_ARRAY_COUNT(glyphs)]; + uint16_t denseIndices[SK_ARRAY_COUNT(glyphs)]; + + SkGlyphIDSet gs; + auto uniqueGlyphIDs = gs.uniquifyGlyphIDs(universeSize, glyphIDs, uniqueGlyphs, denseIndices); + + std::vector test{uniqueGlyphIDs.begin(), uniqueGlyphIDs.end()}; + std::sort(test.begin(), test.end()); + auto newEnd = std::unique(test.begin(), test.end()); + REPORTER_ASSERT(reporter, uniqueGlyphIDs.size() == newEnd - test.begin()); + REPORTER_ASSERT(reporter, uniqueGlyphIDs.size() == 4); + { + uint16_t answer[] = {0, 1, 2, 1, 3}; + REPORTER_ASSERT(reporter, + std::equal(answer, std::end(answer), denseIndices)); + } + + { + SkGlyphID answer[] = {100, 3, 240, 234}; + REPORTER_ASSERT(reporter, + std::equal(answer, std::end(answer), uniqueGlyphs)); + } } DEF_TEST(GlyphRunBasic, reporter) { -- cgit v1.2.3