Source code
Revision control
Copy as Markdown
Other Tools
/* 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
#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);
}