Other tokenizer states and the serializer are potential follow-ups. The code movement from nsHtml5Tokenizer.cpp to nsHtml5Tokeniner.h is for enabling the eventual non-unified build of nsHtml5TokenizerSIMD.cpp once the LLVM bug has been fixed. Differential Revision: https://phabricator.services.mozilla.com/D227317
63 lines
1.9 KiB
C++
63 lines
1.9 KiB
C++
/* 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 "mozilla/htmlaccel/htmlaccelNotInline.h"
|
|
|
|
// Match in the first half
|
|
const char16_t HTML_SIMD_TEST_INPUT_LOW[16] = {
|
|
'a',
|
|
0xD834, // Surrogate pair
|
|
0xDD65, '\n', '<', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
|
|
};
|
|
|
|
// Match in the second half
|
|
const char16_t HTML_SIMD_TEST_INPUT_HIGH[16] = {
|
|
'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'a',
|
|
0xD834, // Surrogate pair
|
|
0xDD65, '\n', '<', 'f', 'g', 'h',
|
|
};
|
|
|
|
TEST(HtmlSimd, TestTextNodeAllowSurrogatesAndLf)
|
|
{
|
|
int32_t index = mozilla::htmlaccel::AccelerateDataFastest(
|
|
HTML_SIMD_TEST_INPUT_LOW, HTML_SIMD_TEST_INPUT_LOW + 16);
|
|
ASSERT_EQ(index, 4);
|
|
}
|
|
|
|
TEST(HtmlSimd, TestTextNodeAllowSurrogatesDisallowLf)
|
|
{
|
|
int32_t index = mozilla::htmlaccel::AccelerateDataViewSource(
|
|
HTML_SIMD_TEST_INPUT_LOW, HTML_SIMD_TEST_INPUT_LOW + 16);
|
|
ASSERT_EQ(index, 3);
|
|
}
|
|
|
|
TEST(HtmlSimd, TestTextNodeDisallowSurrogatesAndLf)
|
|
{
|
|
int32_t index = mozilla::htmlaccel::AccelerateDataLineCol(
|
|
HTML_SIMD_TEST_INPUT_LOW, HTML_SIMD_TEST_INPUT_LOW + 16);
|
|
ASSERT_EQ(index, 1);
|
|
}
|
|
|
|
TEST(HtmlSimd, TestTextNodeAllowSurrogatesAndLfHigh)
|
|
{
|
|
int32_t index = mozilla::htmlaccel::AccelerateDataFastest(
|
|
HTML_SIMD_TEST_INPUT_HIGH, HTML_SIMD_TEST_INPUT_HIGH + 16);
|
|
ASSERT_EQ(index, 4 + 8);
|
|
}
|
|
|
|
TEST(HtmlSimd, TestTextNodeAllowSurrogatesDisallowLfHigh)
|
|
{
|
|
int32_t index = mozilla::htmlaccel::AccelerateDataViewSource(
|
|
HTML_SIMD_TEST_INPUT_HIGH, HTML_SIMD_TEST_INPUT_HIGH + 16);
|
|
ASSERT_EQ(index, 3 + 8);
|
|
}
|
|
|
|
TEST(HtmlSimd, TestTextNodeDisallowSurrogatesAndLfHigh)
|
|
{
|
|
int32_t index = mozilla::htmlaccel::AccelerateDataLineCol(
|
|
HTML_SIMD_TEST_INPUT_HIGH, HTML_SIMD_TEST_INPUT_HIGH + 16);
|
|
ASSERT_EQ(index, 1 + 8);
|
|
}
|