| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "Test.h" | 8 #include "Test.h" |
| 9 | 9 |
| 10 // Include the implementation so we can make an appropriate template instance. | 10 // Include the implementation so we can make an appropriate template instance. |
| 11 #include "SkAdvancedTypefaceMetrics.h" | 11 #include "SkAdvancedTypefaceMetrics.h" |
| 12 | 12 |
| 13 using namespace skia_advanced_typeface_metrics_utils; | 13 using namespace skia_advanced_typeface_metrics_utils; |
| 14 | 14 |
| 15 namespace { | |
| 16 | |
| 17 // Negative values and zeros in a range plus trailing zeros. | 15 // Negative values and zeros in a range plus trailing zeros. |
| 18 // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 16 // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
| 19 const int16_t data1[] = {-1, 0, -3, 4, 5, 6, 7, 0, 0, 0, 8, 0, 0, 0, 0}; | 17 static const int16_t data1[] = {-1, 0, -3, 4, 5, 6, 7, 0, 0, 0, 8, 0, 0, 0, 0}; |
| 20 const char* expected1 = "0[-1 0 -3 4 5 6 7 0 0 0 8]"; | 18 static const char* expected1 = "0[-1 0 -3 4 5 6 7 0 0 0 8]"; |
| 21 | 19 |
| 22 // Run with leading and trailing zeros. | 20 // Run with leading and trailing zeros. |
| 23 // Test rules: d 0 1 2 3 4 5 6 7 8 9 10 11 | 21 // Test rules: d 0 1 2 3 4 5 6 7 8 9 10 11 |
| 24 const int16_t data2[] = {0, 0, 0, 100, 100, 100, 100, 100, 100, 100, 0, 0}; | 22 static const int16_t data2[] = {0, 0, 0, 100, 100, 100, 100, 100, 100, 100, 0, 0
}; |
| 25 const char* expected2 = "3 9 100"; | 23 static const char* expected2 = "3 9 100"; |
| 26 | 24 |
| 27 // Removing 0's from a range. | 25 // Removing 0's from a range. |
| 28 // Test rules: a 0 1 2 3 4 5 6 7 8 9 10 11 | 26 // Test rules: a 0 1 2 3 4 5 6 7 8 9 10 11 |
| 29 const int16_t data3[] = {1, 2, 0, 0, 0, 3, 4, 0, 0, 0, 0, 5}; | 27 static const int16_t data3[] = {1, 2, 0, 0, 0, 3, 4, 0, 0, 0, 0, 5}; |
| 30 const char* expected3 = "0[1 2 0 0 0 3 4] 11[5]"; | 28 static const char* expected3 = "0[1 2 0 0 0 3 4] 11[5]"; |
| 31 | 29 |
| 32 // Removing 0's from a run/range and between runs. | 30 // Removing 0's from a run/range and between runs. |
| 33 // Test rules: a, b 0 1 2 3 4 5 6 7 8 9 10 11 12 14 15 | 31 // Test rules: a, b 0 1 2 3 4 5 6 7 8 9 10 11 12 14 15 |
| 34 const int16_t data4[] = {1, 0, 0, 0, 1, 2, 2, 2, 3, 0, 0, 0, 0, 3, 4}; | 32 static const int16_t data4[] = {1, 0, 0, 0, 1, 2, 2, 2, 3, 0, 0, 0, 0, 3, 4}; |
| 35 const char* expected4 = "0[1 0 0 0 1] 5 7 2 8[3] 13[3 4]"; | 33 static const char* expected4 = "0[1 0 0 0 1] 5 7 2 8[3] 13[3 4]"; |
| 36 | 34 |
| 37 // Runs that starts outside a range. | 35 // Runs that starts outside a range. |
| 38 // Test rules: a, e 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 36 // Test rules: a, e 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
| 39 const int16_t data5[] = {1, 1, 2, 3, 0, 0, 0, 0, 5, 5, 6, 7, 0, 0, 0, 0, 8, 0}; | 37 static const int16_t data5[] = {1, 1, 2, 3, 0, 0, 0, 0, 5, 5, 6, 7, 0, 0, 0, 0,
8, 0}; |
| 40 const char* expected5 = "0 1 1 2[2 3] 8 9 5 10[6 7] 16[8]"; | 38 static const char* expected5 = "0 1 1 2[2 3] 8 9 5 10[6 7] 16[8]"; |
| 41 | 39 |
| 42 // Zeros and runs that should be broken out. | 40 // Zeros and runs that should be broken out. |
| 43 // Test rules: a, b, e 0 1 2 3 4 5 6 7 8 9 10 11 12 13 | 41 // Test rules: a, b, e 0 1 2 3 4 5 6 7 8 9 10 11 12 13 |
| 44 const int16_t data6[] = {1, 0, 0, 0, 0, 1, 2, 3, 3, 4, 5, 5, 5, 6}; | 42 static const int16_t data6[] = {1, 0, 0, 0, 0, 1, 2, 3, 3, 4, 5, 5, 5, 6}; |
| 45 const char* expected6 = "0[1] 5[1 2 3 3 4] 10 12 5 13[6]"; | 43 static const char* expected6 = "0[1] 5[1 2 3 3 4] 10 12 5 13[6]"; |
| 46 | 44 |
| 47 // Don't cares that aren't enough to break out a run. | 45 // Don't cares that aren't enough to break out a run. |
| 48 // Test rules: c 0 1 2 3 4 5 | 46 // Test rules: c 0 1 2 3 4 5 |
| 49 const int16_t data7[] = {1, 2, 10, 11, 2, 3}; | 47 static const int16_t data7[] = {1, 2, 10, 11, 2, 3}; |
| 50 const char* expected7 = "0[1 2 10 11 2 3]"; | 48 static const char* expected7 = "0[1 2 10 11 2 3]"; |
| 51 const uint32_t subset7[] = {0, 1, 4, 5}; | 49 static const uint32_t subset7[] = {0, 1, 4, 5}; |
| 52 const char* expectedSubset7 = "0[1 2 0 0 2 3]"; | 50 static const char* expectedSubset7 = "0[1 2 0 0 2 3]"; |
| 53 | 51 |
| 54 // Don't cares that are enough to break out a run. | 52 // Don't cares that are enough to break out a run. |
| 55 // Test rules: c 0 1 2 3 4 5 6 | 53 // Test rules: c 0 1 2 3 4 5 6 |
| 56 const int16_t data8[] = {1, 2, 10, 11, 12, 2, 3}; | 54 static const int16_t data8[] = {1, 2, 10, 11, 12, 2, 3}; |
| 57 const char* expected8 = "0[1 2 10 11 12 2 3]"; | 55 static const char* expected8 = "0[1 2 10 11 12 2 3]"; |
| 58 const uint32_t subset8[] = {0, 1, 5, 6}; | 56 static const uint32_t subset8[] = {0, 1, 5, 6}; |
| 59 const char* expectedSubset8 = "0[1] 1 5 2 6[3]"; | 57 static const char* expectedSubset8 = "0[1] 1 5 2 6[3]"; |
| 60 | 58 |
| 61 // Leading don't cares. | 59 // Leading don't cares. |
| 62 // Test rules: d 0 1 2 3 4 | 60 // Test rules: d 0 1 2 3 4 |
| 63 const int16_t data9[] = {1, 1, 10, 2, 3}; | 61 static const int16_t data9[] = {1, 1, 10, 2, 3}; |
| 64 const char* expected9 = "0 1 1 2[10 2 3]"; | 62 static const char* expected9 = "0 1 1 2[10 2 3]"; |
| 65 const uint32_t subset9[] = {0, 1, 3, 4}; | 63 static const uint32_t subset9[] = {0, 1, 3, 4}; |
| 66 const char* expectedSubset9 = "0 1 1 3[2 3]"; | 64 static const char* expectedSubset9 = "0 1 1 3[2 3]"; |
| 67 | 65 |
| 68 // Almost run of don't cares inside a range. | 66 // Almost run of don't cares inside a range. |
| 69 // Test rules: c 0 1 2 3 4 5 | 67 // Test rules: c 0 1 2 3 4 5 |
| 70 const int16_t data10[] = {1, 2, 10, 11, 12, 3}; | 68 static const int16_t data10[] = {1, 2, 10, 11, 12, 3}; |
| 71 const char* expected10 = "0[1 2 10 11 12 3]"; | 69 static const char* expected10 = "0[1 2 10 11 12 3]"; |
| 72 const uint32_t subset10[] = {0, 1, 5}; | 70 static const uint32_t subset10[] = {0, 1, 5}; |
| 73 const char* expectedSubset10 = "0[1 2 0 0 0 3]"; | 71 static const char* expectedSubset10 = "0[1 2 0 0 0 3]"; |
| 74 | 72 |
| 75 // Run of don't cares inside a range. | 73 // Run of don't cares inside a range. |
| 76 // Test rules: c 0 1 2 3 4 5 6 | 74 // Test rules: c 0 1 2 3 4 5 6 |
| 77 const int16_t data11[] = {1, 2, 10, 11, 12, 13, 3}; | 75 static const int16_t data11[] = {1, 2, 10, 11, 12, 13, 3}; |
| 78 const char* expected11 = "0[1 2 10 11 12 13 3]"; | 76 static const char* expected11 = "0[1 2 10 11 12 13 3]"; |
| 79 const uint32_t subset11[] = {0, 1, 6}; | 77 static const uint32_t subset11[] = {0, 1, 6}; |
| 80 const char* expectedSubset11 = "0[1 2] 6[3]"; | 78 static const char* expectedSubset11 = "0[1 2] 6[3]"; |
| 81 | 79 |
| 82 // Almost run within a range with leading don't cares. | 80 // Almost run within a range with leading don't cares. |
| 83 // Test rules: c 0 1 2 3 4 5 6 | 81 // Test rules: c 0 1 2 3 4 5 6 |
| 84 const int16_t data12[] = {1, 10, 11, 2, 12, 13, 3}; | 82 static const int16_t data12[] = {1, 10, 11, 2, 12, 13, 3}; |
| 85 const char* expected12 = "0[1 10 11 2 12 13 3]"; | 83 static const char* expected12 = "0[1 10 11 2 12 13 3]"; |
| 86 const uint32_t subset12[] = {0, 3, 6}; | 84 static const uint32_t subset12[] = {0, 3, 6}; |
| 87 const char* expectedSubset12 = "0[1 0 0 2 0 0 3]"; | 85 static const char* expectedSubset12 = "0[1 0 0 2 0 0 3]"; |
| 88 | 86 |
| 89 // Run within a range with leading don't cares. | 87 // Run within a range with leading don't cares. |
| 90 // Test rules: c 0 1 2 3 4 5 6 7 | 88 // Test rules: c 0 1 2 3 4 5 6 7 |
| 91 const int16_t data13[] = {1, 10, 11, 2, 2, 12, 13, 3}; | 89 static const int16_t data13[] = {1, 10, 11, 2, 2, 12, 13, 3}; |
| 92 const char* expected13 = "0[1 10 11 2 2 12 13 3]"; | 90 static const char* expected13 = "0[1 10 11 2 2 12 13 3]"; |
| 93 const uint32_t subset13[] = {0, 3, 4, 7}; | 91 static const uint32_t subset13[] = {0, 3, 4, 7}; |
| 94 const char* expectedSubset13 = "0[1] 1 6 2 7[3]"; | 92 static const char* expectedSubset13 = "0[1] 1 6 2 7[3]"; |
| 95 | 93 |
| 96 // Enough don't cares to breakup something. | 94 // Enough don't cares to breakup something. |
| 97 // Test rules: a 0 1 2 3 4 5 | 95 // Test rules: a 0 1 2 3 4 5 |
| 98 const int16_t data14[] = {1, 0, 0, 0, 0, 2}; | 96 static const int16_t data14[] = {1, 0, 0, 0, 0, 2}; |
| 99 const char* expected14 = "0[1] 5[2]"; | 97 static const char* expected14 = "0[1] 5[2]"; |
| 100 const uint32_t subset14[] = {0, 5}; | 98 static const uint32_t subset14[] = {0, 5}; |
| 101 const char* expectedSubset14 = "0[1] 5[2]"; | 99 static const char* expectedSubset14 = "0[1] 5[2]"; |
| 102 | |
| 103 } | |
| 104 | 100 |
| 105 static SkString stringify_advance_data(SkAdvancedTypefaceMetrics::AdvanceMetric<
int16_t>* data) { | 101 static SkString stringify_advance_data(SkAdvancedTypefaceMetrics::AdvanceMetric<
int16_t>* data) { |
| 106 SkString result; | 102 SkString result; |
| 107 bool leadingSpace = false; | 103 bool leadingSpace = false; |
| 108 while (data != NULL) { | 104 while (data != NULL) { |
| 109 if (leadingSpace) { | 105 if (leadingSpace) { |
| 110 result.append(" "); | 106 result.append(" "); |
| 111 } else { | 107 } else { |
| 112 leadingSpace = true; | 108 leadingSpace = true; |
| 113 } | 109 } |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 205 TestWData(reporter, data13, SK_ARRAY_COUNT(data13), NULL, 0, expected13); | 201 TestWData(reporter, data13, SK_ARRAY_COUNT(data13), NULL, 0, expected13); |
| 206 TestWData(reporter, data13, SK_ARRAY_COUNT(data13), subset13, | 202 TestWData(reporter, data13, SK_ARRAY_COUNT(data13), subset13, |
| 207 SK_ARRAY_COUNT(subset13), expectedSubset13); | 203 SK_ARRAY_COUNT(subset13), expectedSubset13); |
| 208 TestWData(reporter, data14, SK_ARRAY_COUNT(data14), NULL, 0, expected14); | 204 TestWData(reporter, data14, SK_ARRAY_COUNT(data14), NULL, 0, expected14); |
| 209 TestWData(reporter, data14, SK_ARRAY_COUNT(data14), subset14, | 205 TestWData(reporter, data14, SK_ARRAY_COUNT(data14), subset14, |
| 210 SK_ARRAY_COUNT(subset14), expectedSubset14); | 206 SK_ARRAY_COUNT(subset14), expectedSubset14); |
| 211 } | 207 } |
| 212 | 208 |
| 213 #include "TestClassDef.h" | 209 #include "TestClassDef.h" |
| 214 DEFINE_TESTCLASS("WArray", WArrayTest, TestWArray) | 210 DEFINE_TESTCLASS("WArray", WArrayTest, TestWArray) |
| OLD | NEW |