Index: tests/ToUnicode.cpp |
=================================================================== |
--- tests/ToUnicode.cpp (revision 11153) |
+++ tests/ToUnicode.cpp (working copy) |
@@ -17,17 +17,28 @@ |
const char* buffer, size_t len) { |
SkAutoDataUnref data(stream.copyToData()); |
if (offset + len > data->size()) { |
+ printf("A %i %i\n", (int)(offset + len), (int)data->size()); |
vandebo (ex-Chrome)
2013/09/09 20:00:29
Remove debug lines
|
+ printf("%s\n%s\n", data->bytes() + offset, buffer); |
return false; |
} |
if (len != strlen(buffer)) { |
+ printf("B %i %i\n", (int)len, (int)strlen(buffer)); |
+ printf("%s\n%s\n", data->bytes() + offset, buffer); |
return false; |
} |
+ if (memcmp(data->bytes() + offset, buffer, len) != 0) { |
+ printf("C %i %i\n", (int)len, (int)strlen(buffer)); |
+ printf("%s\n%s\n", data->bytes() + offset, buffer); |
+ } |
+ |
return memcmp(data->bytes() + offset, buffer, len) == 0; |
} |
void append_cmap_sections(const SkTDArray<SkUnichar>& glyphToUnicode, |
const SkPDFGlyphSet* subset, |
- SkDynamicMemoryWStream* cmap); |
+ SkDynamicMemoryWStream* cmap, |
+ uint16_t firstGlypthID, |
+ uint16_t lastGlypthID); |
static void TestToUnicode(skiatest::Reporter* reporter) { |
SkTDArray<SkUnichar> glyphToUnicode; |
@@ -56,7 +67,9 @@ |
glyphToUnicode.push(0x35); // 11 |
glyphsInSubset.push(12); |
glyphToUnicode.push(0x36); // 12 |
- for (uint16_t i = 13; i < 0xFE; ++i) { |
+ glyphsInSubset.push(13); |
+ glyphToUnicode.push(0x37); // 13 |
+ for (uint16_t i = 14; i < 0xFE; ++i) { |
glyphToUnicode.push(0); // Zero from index 0x9 to 0xFD |
} |
glyphsInSubset.push(0xFE); |
@@ -70,7 +83,7 @@ |
SkDynamicMemoryWStream buffer; |
subset.set(glyphsInSubset.begin(), glyphsInSubset.count()); |
- append_cmap_sections(glyphToUnicode, &subset, &buffer); |
+ append_cmap_sections(glyphToUnicode, &subset, &buffer, 0, 0xFFFF); |
char expectedResult[] = |
"4 beginbfchar\n\ |
@@ -81,7 +94,7 @@ |
endbfchar\n\ |
4 beginbfrange\n\ |
<0005> <0007> <0027>\n\ |
-<000B> <000C> <0035>\n\ |
+<000B> <000D> <0035>\n\ |
<00FE> <00FF> <1010>\n\ |
<0100> <0101> <1012>\n\ |
endbfrange\n"; |
@@ -89,6 +102,38 @@ |
REPORTER_ASSERT(reporter, stream_equals(buffer, 0, expectedResult, |
buffer.getOffset())); |
+ // Remove characters and ranges. |
+ buffer.reset(); |
+ |
+ append_cmap_sections(glyphToUnicode, &subset, &buffer, 8, 0x00FF); |
+ |
+ char expectedResultChop1[] = |
+"2 beginbfchar\n\ |
+<0008> <002F>\n\ |
+<0009> <0033>\n\ |
+endbfchar\n\ |
+2 beginbfrange\n\ |
+<000B> <000D> <0035>\n\ |
+<00FE> <00FF> <1010>\n\ |
+endbfrange\n"; |
+ |
+ REPORTER_ASSERT(reporter, stream_equals(buffer, 0, expectedResultChop1, |
+ buffer.getOffset())); |
+ |
+ // Remove characters from range to downdrade it to one char. |
+ buffer.reset(); |
+ |
+ append_cmap_sections(glyphToUnicode, &subset, &buffer, 0x00D, 0x00FE); |
+ |
+ char expectedResultChop2[] = |
+"2 beginbfchar\n\ |
+<000D> <0037>\n\ |
+<00FE> <1010>\n\ |
+endbfchar\n"; |
+ |
+ REPORTER_ASSERT(reporter, stream_equals(buffer, 0, expectedResultChop2, |
+ buffer.getOffset())); |
+ |
glyphToUnicode.reset(); |
glyphsInSubset.reset(); |
SkPDFGlyphSet subset2; |
@@ -110,7 +155,7 @@ |
SkDynamicMemoryWStream buffer2; |
subset2.set(glyphsInSubset.begin(), glyphsInSubset.count()); |
- append_cmap_sections(glyphToUnicode, &subset2, &buffer2); |
+ append_cmap_sections(glyphToUnicode, &subset2, &buffer2, 0, 0xffff); |
char expectedResult2[] = |
"4 beginbfchar\n\ |