blob: 8f5d0fc3f6bb25fba524e8e5d06d1b6f716d821b [file] [log] [blame]
// Copyright 2013 The Flutter 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 "string_utils.h"
#include <cerrno>
#include <cstddef>
#include <string>
#include "base/logging.h"
#include "gtest/gtest.h"
namespace base {
TEST(StringUtilsTest, StringPrintfEmpty) {
EXPECT_EQ("", base::StringPrintf("%s", ""));
}
TEST(StringUtilsTest, StringPrintfMisc) {
EXPECT_EQ("123hello w", StringPrintf("%3d%2s %1c", 123, "hello", 'w'));
}
// Test that StringPrintf and StringAppendV do not change errno.
TEST(StringUtilsTest, StringPrintfErrno) {
errno = 1;
EXPECT_EQ("", StringPrintf("%s", ""));
EXPECT_EQ(1, errno);
}
TEST(StringUtilsTest, canASCIIToUTF16) {
std::string ascii = "abcdefg";
EXPECT_EQ(ASCIIToUTF16(ascii).compare(u"abcdefg"), 0);
}
TEST(StringUtilsTest, canUTF8ToUTF16) {
std::string utf8 = "äåè";
EXPECT_EQ(UTF8ToUTF16(utf8).compare(u"äåè"), 0);
}
TEST(StringUtilsTest, canUTF16ToUTF8) {
std::u16string utf16 = u"äåè";
EXPECT_EQ(UTF16ToUTF8(utf16).compare("äåè"), 0);
}
TEST(StringUtilsTest, canNumberToString16) {
EXPECT_EQ(NumberToString16(1.123f), std::u16string(u"1.123"));
}
TEST(StringUtilsTest, numberToStringSimplifiesOutput) {
EXPECT_STREQ(NumberToString(0.0).c_str(), "0");
EXPECT_STREQ(NumberToString(0.0f).c_str(), "0");
EXPECT_STREQ(NumberToString(1.123).c_str(), "1.123");
EXPECT_STREQ(NumberToString(1.123f).c_str(), "1.123");
EXPECT_STREQ(NumberToString(-1.123).c_str(), "-1.123");
EXPECT_STREQ(NumberToString(-1.123f).c_str(), "-1.123");
EXPECT_STREQ(NumberToString(1.00001).c_str(), "1.00001");
EXPECT_STREQ(NumberToString(1.00001f).c_str(), "1.00001");
EXPECT_STREQ(NumberToString(1000.000001).c_str(), "1000.000001");
EXPECT_STREQ(NumberToString(10.00001f).c_str(), "10.00001");
EXPECT_STREQ(NumberToString(1.0 + 1e-8).c_str(), "1.00000001");
EXPECT_STREQ(NumberToString(1.0f + 1e-8f).c_str(), "1");
EXPECT_STREQ(NumberToString(1e-6).c_str(), "0.000001");
EXPECT_STREQ(NumberToString(1e-6f).c_str(), "0.000001");
EXPECT_STREQ(NumberToString(1e-8).c_str(), "1e-8");
EXPECT_STREQ(NumberToString(1e-8f).c_str(), "1e-8");
EXPECT_STREQ(NumberToString(100.0).c_str(), "100");
EXPECT_STREQ(NumberToString(100.0f).c_str(), "100");
EXPECT_STREQ(NumberToString(-1.0 - 1e-7).c_str(), "-1.0000001");
EXPECT_STREQ(NumberToString(-1.0f - 1e-7f).c_str(), "-1.0000001");
EXPECT_STREQ(NumberToString(0.00000012345678).c_str(), "1.2345678e-7");
// Difference in output is due to differences in double and float precision.
EXPECT_STREQ(NumberToString(0.00000012345678f).c_str(), "1.2345679e-7");
EXPECT_STREQ(NumberToString(-0.00000012345678).c_str(), "-1.2345678e-7");
// Difference in output is due to differences in double and float precision.
EXPECT_STREQ(NumberToString(-0.00000012345678f).c_str(), "-1.2345679e-7");
EXPECT_STREQ(NumberToString(static_cast<unsigned int>(11)).c_str(), "11");
EXPECT_STREQ(NumberToString(static_cast<int32_t>(-23)).c_str(), "-23");
}
} // namespace base