/* 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); }