aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorGravatar Herb Derby <herb@google.com>2018-07-09 17:06:09 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-07-11 16:08:58 +0000
commit0421083a447a8ab105d20c786f7d8377f30a6d5d (patch)
treeff1e42f6427d000d8ee92a8c4092c27c3e814135 /tests
parentc3a541942310673a4f26aab6079c586efb8d8c3e (diff)
Use new SkGlyphIDSet - v2
Add bzero to make msan and valgrind happy. Change-Id: I9b4e2f2b8e690da4b4b920fef27d5a8854092219 Reviewed-on: https://skia-review.googlesource.com/140563 Reviewed-by: Mike Klein <mtklein@google.com> Commit-Queue: Herb Derby <herb@google.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/GlyphRunTest.cpp45
1 files changed, 26 insertions, 19 deletions
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<SkGlyphID> 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<const SkGlyphID>(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<SkGlyphID> 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) {