зеркало из https://github.com/mozilla/gecko-dev.git
167 строки
4.9 KiB
C++
167 строки
4.9 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "gtest/gtest.h"
|
|
|
|
#include "gfxSkipChars.h"
|
|
#include "mozilla/ArrayUtils.h"
|
|
|
|
static bool
|
|
TestConstructor()
|
|
{
|
|
gfxSkipChars skipChars;
|
|
|
|
EXPECT_TRUE(skipChars.GetOriginalCharCount() == 0) <<
|
|
"[1] Make sure the gfxSkipChars was properly initialized with constructor";
|
|
|
|
return true;
|
|
}
|
|
|
|
static bool
|
|
TestLength()
|
|
{
|
|
gfxSkipChars skipChars;
|
|
|
|
skipChars.KeepChars(100);
|
|
|
|
EXPECT_TRUE(skipChars.GetOriginalCharCount() == 100) <<
|
|
"[1] Check length after keeping chars";
|
|
|
|
skipChars.SkipChars(50);
|
|
|
|
EXPECT_TRUE(skipChars.GetOriginalCharCount() == 150) <<
|
|
"[2] Check length after skipping chars";
|
|
|
|
skipChars.SkipChars(50);
|
|
|
|
EXPECT_TRUE(skipChars.GetOriginalCharCount() == 200) <<
|
|
"[3] Check length after skipping more chars";
|
|
|
|
skipChars.KeepChar();
|
|
|
|
EXPECT_TRUE(skipChars.GetOriginalCharCount() == 201) <<
|
|
"[4] Check length after keeping a final char";
|
|
|
|
return true;
|
|
}
|
|
|
|
static bool
|
|
TestIterator()
|
|
{
|
|
// Test a gfxSkipChars that starts with kept chars
|
|
gfxSkipChars skipChars1;
|
|
|
|
skipChars1.KeepChars(9);
|
|
skipChars1.SkipChar();
|
|
skipChars1.KeepChars(9);
|
|
skipChars1.SkipChar();
|
|
skipChars1.KeepChars(9);
|
|
|
|
EXPECT_TRUE(skipChars1.GetOriginalCharCount() == 29) <<
|
|
"[1] Check length";
|
|
|
|
gfxSkipCharsIterator iter1(skipChars1);
|
|
|
|
EXPECT_TRUE(iter1.GetOriginalOffset() == 0) <<
|
|
"[2] Check initial original offset";
|
|
EXPECT_TRUE(iter1.GetSkippedOffset() == 0) <<
|
|
"[3] Check initial skipped offset";
|
|
|
|
EXPECT_TRUE(iter1.IsOriginalCharSkipped() == false) <<
|
|
"[3a] Check IsOriginalCharSkipped for initial position";
|
|
|
|
uint32_t expectSkipped1[] =
|
|
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
|
|
9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
|
|
18, 19, 20, 21, 22, 23, 24, 25, 26, 27 };
|
|
|
|
for (uint32_t i = 0; i < mozilla::ArrayLength(expectSkipped1); i++) {
|
|
EXPECT_TRUE(iter1.ConvertOriginalToSkipped(i) == expectSkipped1[i]) <<
|
|
"[4] Check mapping of original to skipped for " << i;
|
|
}
|
|
|
|
int32_t expectOriginal1[] =
|
|
{ 0, 1, 2, 3, 4, 5, 6, 7, 8,
|
|
10, 11, 12, 13, 14, 15, 16, 17, 18,
|
|
20, 21, 22, 23, 24, 25, 26, 27, 28 };
|
|
|
|
for (uint32_t i = 0; i < mozilla::ArrayLength(expectOriginal1); i++) {
|
|
EXPECT_TRUE(iter1.ConvertSkippedToOriginal(i) == expectOriginal1[i]) <<
|
|
"[5] Check mapping of skipped to original for " << i;
|
|
}
|
|
|
|
bool expectIsOriginalSkipped1[] =
|
|
{ false, false, false, false, false, false, false, false, false, true,
|
|
false, false, false, false, false, false, false, false, false, true,
|
|
false, false, false, false, false, false, false, false, false
|
|
};
|
|
|
|
for (uint32_t i = 0; i < mozilla::ArrayLength(expectIsOriginalSkipped1); i++) {
|
|
iter1.SetOriginalOffset(i);
|
|
EXPECT_TRUE(iter1.IsOriginalCharSkipped() == expectIsOriginalSkipped1[i]) <<
|
|
"[5.a] Check IsOriginalCharSkipped for " << i;
|
|
}
|
|
|
|
// Test a gfxSkipChars that starts with skipped chars
|
|
gfxSkipChars skipChars2;
|
|
|
|
skipChars2.SkipChars(9);
|
|
skipChars2.KeepChar();
|
|
skipChars2.SkipChars(9);
|
|
skipChars2.KeepChar();
|
|
skipChars2.SkipChars(9);
|
|
|
|
EXPECT_TRUE(skipChars2.GetOriginalCharCount() == 29) <<
|
|
"[6] Check length";
|
|
|
|
gfxSkipCharsIterator iter2(skipChars2);
|
|
|
|
EXPECT_TRUE(iter2.GetOriginalOffset() == 0) <<
|
|
"[7] Check initial original offset";
|
|
EXPECT_TRUE(iter2.GetSkippedOffset() == 0) <<
|
|
"[8] Check initial skipped offset";
|
|
|
|
EXPECT_TRUE(iter2.IsOriginalCharSkipped() == true) <<
|
|
"[8a] Check IsOriginalCharSkipped for initial position";
|
|
|
|
uint32_t expectSkipped2[] =
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
2, 2, 2, 2, 2, 2, 2, 2, 2, 2 };
|
|
|
|
for (uint32_t i = 0; i < mozilla::ArrayLength(expectSkipped2); i++) {
|
|
EXPECT_TRUE(iter2.ConvertOriginalToSkipped(i) == expectSkipped2[i]) <<
|
|
"[9] Check mapping of original to skipped for " << i;
|
|
}
|
|
|
|
int32_t expectOriginal2[] = { 9, 19, 29 };
|
|
|
|
for (uint32_t i = 0; i < mozilla::ArrayLength(expectOriginal2); i++) {
|
|
EXPECT_TRUE(iter2.ConvertSkippedToOriginal(i) == expectOriginal2[i]) <<
|
|
"[10] Check mapping of skipped to original for " << i;
|
|
}
|
|
|
|
bool expectIsOriginalSkipped2[] =
|
|
{ true, true, true, true, true, true, true, true, true, false,
|
|
true, true, true, true, true, true, true, true, true, false,
|
|
true, true, true, true, true, true, true, true, true
|
|
};
|
|
|
|
for (uint32_t i = 0; i < mozilla::ArrayLength(expectIsOriginalSkipped2); i++) {
|
|
iter2.SetOriginalOffset(i);
|
|
EXPECT_TRUE(iter2.IsOriginalCharSkipped() == expectIsOriginalSkipped2[i]) <<
|
|
"[10.a] Check IsOriginalCharSkipped for " << i;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
TEST(Gfx, gfxSkipChars) {
|
|
TestConstructor();
|
|
TestLength();
|
|
TestIterator();
|
|
}
|