| // Copyright 2016 PDFium Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "core/fxcrt/fx_string.h" | |
| #include "testing/gtest/include/gtest/gtest.h" | |
| TEST(fxstring, FX_UTF8Encode) { | |
| EXPECT_EQ("", FX_UTF8Encode(WideStringView())); | |
| EXPECT_EQ( | |
| "x" | |
| "\xc2\x80" | |
| "\xc3\xbf" | |
| "\xef\xbc\xac" | |
| "y", | |
| FX_UTF8Encode(L"x" | |
| L"\u0080" | |
| L"\u00ff" | |
| L"\uff2c" | |
| L"y")); | |
| } | |
| TEST(fxstring, FX_UTF8Decode) { | |
| EXPECT_EQ(L"", FX_UTF8Decode(ByteStringView())); | |
| EXPECT_EQ( | |
| L"x" | |
| L"\u0080" | |
| L"\u00ff" | |
| L"\uff2c" | |
| L"y", | |
| FX_UTF8Decode("x" | |
| "\xc2\x80" | |
| "\xc3\xbf" | |
| "\xef\xbc\xac" | |
| "y")); | |
| EXPECT_EQ(L"a(A) b() c() d() e().", | |
| FX_UTF8Decode("a(\xc2\x41) " // Invalid continuation. | |
| "b(\xc2\xc2) " // Invalid continuation. | |
| "c(\xc2\xff\x80) " // Invalid continuation. | |
| "d(\x80\x80) " // Invalid leading. | |
| "e(\xff\x80\x80)" // Invalid leading. | |
| ".")); | |
| } | |
| TEST(fxstring, FX_UTF8EncodeDecodeConsistency) { | |
| WideString wstr; | |
| wstr.Reserve(0x10000); | |
| for (int w = 0; w < 0x10000; ++w) | |
| wstr += static_cast<wchar_t>(w); | |
| ByteString bstr = FX_UTF8Encode(wstr.AsStringView()); | |
| WideString wstr2 = FX_UTF8Decode(bstr.AsStringView()); | |
| EXPECT_EQ(0x10000u, wstr2.GetLength()); | |
| EXPECT_EQ(wstr, wstr2); | |
| } | |
| TEST(fxstring, StringToFloat) { | |
| EXPECT_FLOAT_EQ(0.0f, StringToFloat("")); | |
| EXPECT_FLOAT_EQ(0.0f, StringToFloat("0")); | |
| EXPECT_FLOAT_EQ(0.0f, StringToFloat("0.0")); | |
| EXPECT_FLOAT_EQ(0.0f, StringToFloat("-0.0")); | |
| EXPECT_FLOAT_EQ(0.25f, StringToFloat("0.25")); | |
| EXPECT_FLOAT_EQ(-0.25f, StringToFloat("-0.25")); | |
| EXPECT_FLOAT_EQ(100.0f, StringToFloat("100")); | |
| EXPECT_FLOAT_EQ(100.0f, StringToFloat("100.0")); | |
| EXPECT_FLOAT_EQ(100.0f, StringToFloat(" 100.0")); | |
| EXPECT_FLOAT_EQ(-100.0f, StringToFloat("-100.0000")); | |
| EXPECT_FLOAT_EQ(3.402823e+38f, | |
| StringToFloat("340282300000000000000000000000000000000")); | |
| EXPECT_FLOAT_EQ(-3.402823e+38f, | |
| StringToFloat("-340282300000000000000000000000000000000")); | |
| EXPECT_FLOAT_EQ(1.000000119f, StringToFloat("1.000000119")); | |
| EXPECT_FLOAT_EQ(1.999999881f, StringToFloat("1.999999881")); | |
| } |