From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- intl/gtest/TestEncoding.cpp | 64 +++++++++++++++++++++++++++++++++++++++++++++ intl/gtest/moz.build | 13 +++++++++ 2 files changed, 77 insertions(+) create mode 100644 intl/gtest/TestEncoding.cpp create mode 100644 intl/gtest/moz.build (limited to 'intl/gtest') diff --git a/intl/gtest/TestEncoding.cpp b/intl/gtest/TestEncoding.cpp new file mode 100644 index 0000000000..24ffa24390 --- /dev/null +++ b/intl/gtest/TestEncoding.cpp @@ -0,0 +1,64 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +#include "gtest/gtest.h" + +#include "mozilla/Encoding.h" +#include + +#define ENCODING_TEST(name) TEST(EncodingTest, name) + +using namespace mozilla; + +static_assert(std::is_standard_layout>::value, + "NotNull must be a standard layout type."); + +// These tests mainly test that the C++ interface seems to +// reach the Rust code. More thorough testing of the back +// end is done in Rust. + +ENCODING_TEST(ForLabel) { + nsAutoCString label(" uTf-8 "); + ASSERT_EQ(Encoding::ForLabel(label), UTF_8_ENCODING); + label.AssignLiteral(" cseucpkdfmTjapanese "); + ASSERT_EQ(Encoding::ForLabel(label), EUC_JP_ENCODING); +} + +ENCODING_TEST(ForBOM) { + nsAutoCString data("\xEF\xBB\xBF\x61"); + const Encoding* encoding; + size_t bomLength; + std::tie(encoding, bomLength) = Encoding::ForBOM(data); + ASSERT_EQ(encoding, UTF_8_ENCODING); + ASSERT_EQ(bomLength, 3U); + data.AssignLiteral("\xFF\xFE"); + std::tie(encoding, bomLength) = Encoding::ForBOM(data); + ASSERT_EQ(encoding, UTF_16LE_ENCODING); + ASSERT_EQ(bomLength, 2U); + data.AssignLiteral("\xFE\xFF"); + std::tie(encoding, bomLength) = Encoding::ForBOM(data); + ASSERT_EQ(encoding, UTF_16BE_ENCODING); + ASSERT_EQ(bomLength, 2U); + data.AssignLiteral("\xEF\xBB"); + std::tie(encoding, bomLength) = Encoding::ForBOM(data); + ASSERT_EQ(encoding, nullptr); + ASSERT_EQ(bomLength, 0U); +} + +ENCODING_TEST(Name) { + nsAutoCString name; + UTF_8_ENCODING->Name(name); + ASSERT_TRUE(name.EqualsLiteral("UTF-8")); + GBK_ENCODING->Name(name); + ASSERT_TRUE(name.EqualsLiteral("GBK")); +} + +ENCODING_TEST(CanEncodeEverything) { + ASSERT_TRUE(UTF_8_ENCODING->CanEncodeEverything()); + ASSERT_FALSE(GB18030_ENCODING->CanEncodeEverything()); +} + +ENCODING_TEST(IsAsciiCompatible) { + ASSERT_TRUE(UTF_8_ENCODING->IsAsciiCompatible()); + ASSERT_FALSE(ISO_2022_JP_ENCODING->IsAsciiCompatible()); +} diff --git a/intl/gtest/moz.build b/intl/gtest/moz.build new file mode 100644 index 0000000000..80d897ad03 --- /dev/null +++ b/intl/gtest/moz.build @@ -0,0 +1,13 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# 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/. + +UNIFIED_SOURCES += [] + +# skip the test on windows10-aarch64 due to perma-crash - bug 1544961 +if not (CONFIG["OS_TARGET"] == "WINNT" and CONFIG["CPU_ARCH"] == "aarch64"): + UNIFIED_SOURCES += ["TestEncoding.cpp"] + +FINAL_LIBRARY = "xul-gtest" -- cgit v1.2.3