Coverage Report

Created: 2018-09-25 14:53

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