|
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
|
2 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
3 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
5 |
|
6 #include "gtest/gtest.h" |
|
7 |
|
8 #include "gfxSkipChars.h" |
|
9 #include "mozilla/ArrayUtils.h" |
|
10 |
|
11 static bool |
|
12 TestConstructor() |
|
13 { |
|
14 gfxSkipChars skipChars; |
|
15 |
|
16 EXPECT_TRUE(skipChars.GetOriginalCharCount() == 0) << |
|
17 "[1] Make sure the gfxSkipChars was properly initialized with constructor"; |
|
18 |
|
19 return true; |
|
20 } |
|
21 |
|
22 static bool |
|
23 TestLength() |
|
24 { |
|
25 gfxSkipChars skipChars; |
|
26 |
|
27 skipChars.KeepChars(100); |
|
28 |
|
29 EXPECT_TRUE(skipChars.GetOriginalCharCount() == 100) << |
|
30 "[1] Check length after keeping chars"; |
|
31 |
|
32 skipChars.SkipChars(50); |
|
33 |
|
34 EXPECT_TRUE(skipChars.GetOriginalCharCount() == 150) << |
|
35 "[2] Check length after skipping chars"; |
|
36 |
|
37 skipChars.SkipChars(50); |
|
38 |
|
39 EXPECT_TRUE(skipChars.GetOriginalCharCount() == 200) << |
|
40 "[3] Check length after skipping more chars"; |
|
41 |
|
42 skipChars.KeepChar(); |
|
43 |
|
44 EXPECT_TRUE(skipChars.GetOriginalCharCount() == 201) << |
|
45 "[4] Check length after keeping a final char"; |
|
46 |
|
47 return true; |
|
48 } |
|
49 |
|
50 static bool |
|
51 TestIterator() |
|
52 { |
|
53 // Test a gfxSkipChars that starts with kept chars |
|
54 gfxSkipChars skipChars1; |
|
55 |
|
56 skipChars1.KeepChars(9); |
|
57 skipChars1.SkipChar(); |
|
58 skipChars1.KeepChars(9); |
|
59 skipChars1.SkipChar(); |
|
60 skipChars1.KeepChars(9); |
|
61 |
|
62 EXPECT_TRUE(skipChars1.GetOriginalCharCount() == 29) << |
|
63 "[1] Check length"; |
|
64 |
|
65 gfxSkipCharsIterator iter1(skipChars1); |
|
66 |
|
67 EXPECT_TRUE(iter1.GetOriginalOffset() == 0) << |
|
68 "[2] Check initial original offset"; |
|
69 EXPECT_TRUE(iter1.GetSkippedOffset() == 0) << |
|
70 "[3] Check initial skipped offset"; |
|
71 |
|
72 uint32_t expectSkipped1[] = |
|
73 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, |
|
74 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, |
|
75 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 }; |
|
76 |
|
77 for (uint32_t i = 0; i < mozilla::ArrayLength(expectSkipped1); i++) { |
|
78 EXPECT_TRUE(iter1.ConvertOriginalToSkipped(i) == expectSkipped1[i]) << |
|
79 "[4] Check mapping of original to skipped for " << i; |
|
80 } |
|
81 |
|
82 uint32_t expectOriginal1[] = |
|
83 { 0, 1, 2, 3, 4, 5, 6, 7, 8, |
|
84 10, 11, 12, 13, 14, 15, 16, 17, 18, |
|
85 20, 21, 22, 23, 24, 25, 26, 27, 28 }; |
|
86 |
|
87 for (uint32_t i = 0; i < mozilla::ArrayLength(expectOriginal1); i++) { |
|
88 EXPECT_TRUE(iter1.ConvertSkippedToOriginal(i) == expectOriginal1[i]) << |
|
89 "[5] Check mapping of skipped to original for " << i; |
|
90 } |
|
91 |
|
92 // Test a gfxSkipChars that starts with skipped chars |
|
93 gfxSkipChars skipChars2; |
|
94 |
|
95 skipChars2.SkipChars(9); |
|
96 skipChars2.KeepChar(); |
|
97 skipChars2.SkipChars(9); |
|
98 skipChars2.KeepChar(); |
|
99 skipChars2.SkipChars(9); |
|
100 |
|
101 EXPECT_TRUE(skipChars2.GetOriginalCharCount() == 29) << |
|
102 "[6] Check length"; |
|
103 |
|
104 gfxSkipCharsIterator iter2(skipChars2); |
|
105 |
|
106 EXPECT_TRUE(iter2.GetOriginalOffset() == 0) << |
|
107 "[7] Check initial original offset"; |
|
108 EXPECT_TRUE(iter2.GetSkippedOffset() == 0) << |
|
109 "[8] Check initial skipped offset"; |
|
110 |
|
111 uint32_t expectSkipped2[] = |
|
112 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
|
113 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
|
114 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }; |
|
115 |
|
116 for (uint32_t i = 0; i < mozilla::ArrayLength(expectSkipped2); i++) { |
|
117 EXPECT_TRUE(iter2.ConvertOriginalToSkipped(i) == expectSkipped2[i]) << |
|
118 "[9] Check mapping of original to skipped for " << i; |
|
119 } |
|
120 |
|
121 uint32_t expectOriginal2[] = { 9, 19, 29 }; |
|
122 |
|
123 for (uint32_t i = 0; i < mozilla::ArrayLength(expectOriginal2); i++) { |
|
124 EXPECT_TRUE(iter2.ConvertSkippedToOriginal(i) == expectOriginal2[i]) << |
|
125 "[10] Check mapping of skipped to original for " << i; |
|
126 } |
|
127 |
|
128 return true; |
|
129 } |
|
130 |
|
131 TEST(Gfx, gfxSkipChars) { |
|
132 TestConstructor(); |
|
133 TestLength(); |
|
134 TestIterator(); |
|
135 } |