From 77cc74f6d7775606a71505f1e54bdd2ffbb696e2 Mon Sep 17 00:00:00 2001 From: Ehsan Akhgari Date: Mon, 15 Dec 2014 15:42:41 -0500 Subject: [PATCH] Bug 1111152 - Move TestEncoding.cpp to gtest and enable it; r=froydnj --HG-- rename : xpcom/tests/TestEncoding.cpp => xpcom/glue/tests/gtest/TestEncoding.cpp extra : rebase_source : 4beccae061390e7b4dd6ba45113daea43865c63d --- .../tests/gtest}/TestEncoding.cpp | 141 +++--------------- xpcom/glue/tests/gtest/moz.build | 1 + xpcom/tests/moz.build | 1 - 3 files changed, 24 insertions(+), 119 deletions(-) rename xpcom/{tests => glue/tests/gtest}/TestEncoding.cpp (50%) diff --git a/xpcom/tests/TestEncoding.cpp b/xpcom/glue/tests/gtest/TestEncoding.cpp similarity index 50% rename from xpcom/tests/TestEncoding.cpp rename to xpcom/glue/tests/gtest/TestEncoding.cpp index 4fef0dfdab9d..24757a54ce28 100644 --- a/xpcom/tests/TestEncoding.cpp +++ b/xpcom/glue/tests/gtest/TestEncoding.cpp @@ -3,9 +3,11 @@ * 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 "TestHarness.h" +#include +#include "nsString.h" +#include "gtest/gtest.h" -nsresult TestGoodSurrogatePair() +TEST(Encoding, GoodSurrogatePair) { // When this string is decoded, the surrogate pair is U+10302 and the rest of // the string is specified by indexes 2 onward. @@ -14,42 +16,23 @@ nsresult TestGoodSurrogatePair() uint32_t byteCount = 0; char* goodPair8 = ToNewUTF8String(goodPair16, &byteCount); - if (!goodPair8) - { - fail("out of memory creating goodPair8"); - return NS_ERROR_OUT_OF_MEMORY; - } + EXPECT_TRUE(!!goodPair8); - if (byteCount != 6) - { - fail("wrong number of bytes; expected 6, got %lu", byteCount); - return NS_ERROR_FAILURE; - } + EXPECT_EQ(byteCount, 6u); const unsigned char expected8[] = { 0xF0, 0x90, 0x8C, 0x82, 0x65, 0x78, 0x0 }; - if (0 != memcmp(expected8, goodPair8, sizeof(expected8))) - { - fail("wrong translation to UTF8"); - return NS_ERROR_FAILURE; - } + EXPECT_EQ(0, memcmp(expected8, goodPair8, sizeof(expected8))); // This takes a different code path from the above, so test it to make sure // the UTF-16 enumeration remains in sync with the UTF-8 enumeration. nsDependentCString expected((const char*)expected8); - if (0 != CompareUTF8toUTF16(expected, goodPair16)) - { - fail("bad comparison between UTF-8 and equivalent UTF-16"); - return NS_ERROR_FAILURE; - } + EXPECT_EQ(0, CompareUTF8toUTF16(expected, goodPair16)); NS_Free(goodPair8); - - passed("TestGoodSurrogatePair"); - return NS_OK; } -nsresult TestBackwardsSurrogatePair() +TEST(Encoding, BackwardsSurrogatePair) { // When this string is decoded, the two surrogates are wrongly ordered and // must each be interpreted as U+FFFD. @@ -58,42 +41,23 @@ nsresult TestBackwardsSurrogatePair() uint32_t byteCount = 0; char* backwardsPair8 = ToNewUTF8String(backwardsPair16, &byteCount); - if (!backwardsPair8) - { - fail("out of memory creating backwardsPair8"); - return NS_ERROR_OUT_OF_MEMORY; - } + EXPECT_TRUE(!!backwardsPair8); - if (byteCount != 8) - { - fail("wrong number of bytes; expected 8, got %lu", byteCount); - return NS_ERROR_FAILURE; - } + EXPECT_EQ(byteCount, 8u); const unsigned char expected8[] = { 0xEF, 0xBF, 0xBD, 0xEF, 0xBF, 0xBD, 0x65, 0x78, 0x0 }; - if (0 != memcmp(expected8, backwardsPair8, sizeof(expected8))) - { - fail("wrong translation to UTF8"); - return NS_ERROR_FAILURE; - } + EXPECT_EQ(0, memcmp(expected8, backwardsPair8, sizeof(expected8))); // This takes a different code path from the above, so test it to make sure // the UTF-16 enumeration remains in sync with the UTF-8 enumeration. nsDependentCString expected((const char*)expected8); - if (0 != CompareUTF8toUTF16(expected, backwardsPair16)) - { - fail("bad comparison between UTF-8 and malformed but equivalent UTF-16"); - return NS_ERROR_FAILURE; - } + EXPECT_EQ(0, CompareUTF8toUTF16(expected, backwardsPair16)); NS_Free(backwardsPair8); - - passed("TestBackwardsSurrogatePair"); - return NS_OK; } -nsresult TestMalformedUTF16OrphanHighSurrogate() +TEST(Encoding, MalformedUTF16OrphanHighSurrogate) { // When this string is decoded, the high surrogate should be replaced and the // rest of the string is specified by indexes 1 onward. @@ -102,42 +66,23 @@ nsresult TestMalformedUTF16OrphanHighSurrogate() uint32_t byteCount = 0; char* highSurrogate8 = ToNewUTF8String(highSurrogate16, &byteCount); - if (!highSurrogate8) - { - fail("out of memory creating highSurrogate8"); - return NS_ERROR_OUT_OF_MEMORY; - } + EXPECT_TRUE(!!highSurrogate8); - if (byteCount != 7) - { - fail("wrong number of bytes; expected 7, got %lu", byteCount); - return NS_ERROR_FAILURE; - } + EXPECT_EQ(byteCount, 7u); const unsigned char expected8[] = { 0xEF, 0xBF, 0xBD, 0x74, 0x65, 0x78, 0x74, 0x0 }; - if (0 != memcmp(expected8, highSurrogate8, sizeof(expected8))) - { - fail("wrong translation to UTF8"); - return NS_ERROR_FAILURE; - } + EXPECT_EQ(0, memcmp(expected8, highSurrogate8, sizeof(expected8))); // This takes a different code path from the above, so test it to make sure // the UTF-16 enumeration remains in sync with the UTF-8 enumeration. nsDependentCString expected((const char*)expected8); - if (0 != CompareUTF8toUTF16(expected, highSurrogate16)) - { - fail("bad comparison between UTF-8 and malformed but equivalent UTF-16"); - return NS_ERROR_FAILURE; - } + EXPECT_EQ(0, CompareUTF8toUTF16(expected, highSurrogate16)); NS_Free(highSurrogate8); - - passed("TestMalformedUTF16OrphanHighSurrogate"); - return NS_OK; } -nsresult TestMalformedUTF16OrphanLowSurrogate() +TEST(Encoding, MalformedUTF16OrphanLowSurrogate) { // When this string is decoded, the low surrogate should be replaced and the // rest of the string is specified by indexes 1 onward. @@ -146,58 +91,18 @@ nsresult TestMalformedUTF16OrphanLowSurrogate() uint32_t byteCount = 0; char* lowSurrogate8 = ToNewUTF8String(lowSurrogate16, &byteCount); - if (!lowSurrogate8) - { - fail("out of memory creating lowSurrogate8"); - return NS_ERROR_OUT_OF_MEMORY; - } + EXPECT_TRUE(!!lowSurrogate8); - if (byteCount != 7) - { - fail("wrong number of bytes; expected 7, got %lu", byteCount); - return NS_ERROR_FAILURE; - } + EXPECT_EQ(byteCount, 7u); const unsigned char expected8[] = { 0xEF, 0xBF, 0xBD, 0x74, 0x65, 0x78, 0x74, 0x0 }; - if (0 != memcmp(expected8, lowSurrogate8, sizeof(expected8))) - { - fail("wrong translation to UTF8"); - return NS_ERROR_FAILURE; - } + EXPECT_EQ(0, memcmp(expected8, lowSurrogate8, sizeof(expected8))); // This takes a different code path from the above, so test it to make sure // the UTF-16 enumeration remains in sync with the UTF-8 enumeration. nsDependentCString expected((const char*)expected8); - if (0 != CompareUTF8toUTF16(expected, lowSurrogate16)) - { - fail("bad comparison between UTF-8 and malformed but equivalent UTF-16"); - return NS_ERROR_FAILURE; - } + EXPECT_EQ(0, CompareUTF8toUTF16(expected, lowSurrogate16)); NS_Free(lowSurrogate8); - - passed("TestMalformedUTF16OrphanLowSurrogate"); - return NS_OK; -} - - -int main(int argc, char** argv) -{ - ScopedXPCOM xpcom("TestEncoding"); - if (xpcom.failed()) - return 1; - - int rv = 0; - - if (NS_FAILED(TestGoodSurrogatePair())) - rv = 1; - if (NS_FAILED(TestBackwardsSurrogatePair())) - rv = 1; - if (NS_FAILED(TestMalformedUTF16OrphanHighSurrogate())) - rv = 1; - if (NS_FAILED(TestMalformedUTF16OrphanLowSurrogate())) - rv = 1; - - return rv; } diff --git a/xpcom/glue/tests/gtest/moz.build b/xpcom/glue/tests/gtest/moz.build index 46c2ae568193..6b7b2fa88539 100644 --- a/xpcom/glue/tests/gtest/moz.build +++ b/xpcom/glue/tests/gtest/moz.build @@ -7,6 +7,7 @@ UNIFIED_SOURCES += [ 'TestArray.cpp', 'TestCRT.cpp', + 'TestEncoding.cpp', 'TestFileUtils.cpp', 'TestGCPostBarriers.cpp', 'TestStrings.cpp', diff --git a/xpcom/tests/moz.build b/xpcom/tests/moz.build index d215bf4f5fff..8f214147bcd4 100644 --- a/xpcom/tests/moz.build +++ b/xpcom/tests/moz.build @@ -80,7 +80,6 @@ if CONFIG['MOZ_MEMORY']: # XXX Make these tests work in libxul builds. #CPP_UNIT_TESTS += [ -# 'TestEncoding', # 'TestExpirationTracker', # 'TestPipes', # 'TestPriorityQueue',