From ad8d3a38568bfbea86013900c235cecc34e2a24b Mon Sep 17 00:00:00 2001 From: caolili123 Date: Wed, 20 Aug 2025 14:05:45 +0800 Subject: [PATCH] Issue: [Bug]: add UT tests https://gitee.com/openharmony/arkcompiler_ets_runtime/issues/ICTOTT Signed-off-by: caolili123 --- common_components/base/c_string.cpp | 6 + .../base/tests/c_string_test.cpp | 139 ++++++++++++++++++ 2 files changed, 145 insertions(+) diff --git a/common_components/base/c_string.cpp b/common_components/base/c_string.cpp index 64631c39ce..bd5e5db699 100755 --- a/common_components/base/c_string.cpp +++ b/common_components/base/c_string.cpp @@ -408,6 +408,9 @@ bool CString::IsNumber(const CString& s) size_t i = 0; char it = s.Str()[i]; if (it == '-') { + if (s.Length() == 1) { + return false; + } i++; } for (; i < s.Length(); ++i) { @@ -558,6 +561,9 @@ void CString::Replace(size_t pos, CString cStr) void CString::ReplaceAll(CString replacement, CString target) { + if (replacement.Length() == 0 || target.Length() == 0) { + return; + } int index = -1; int ret = Find(target.Str()); while (ret != -1) { diff --git a/common_components/base/tests/c_string_test.cpp b/common_components/base/tests/c_string_test.cpp index 6399e6948e..785b9bfa5f 100755 --- a/common_components/base/tests/c_string_test.cpp +++ b/common_components/base/tests/c_string_test.cpp @@ -45,6 +45,18 @@ HWTEST_F_L0(CStringTest, ParseTimeFromEnvTest) env = "abcms"; EXPECT_EQ(CString::ParseTimeFromEnv(env), static_cast(0)); + + env = ""; + EXPECT_EQ(CString::ParseTimeFromEnv(env), static_cast(0)); + + env = " 10 s "; + EXPECT_EQ(CString::ParseTimeFromEnv(env), static_cast(10 * 1000UL * 1000 * 1000)); + + env = "123"; + EXPECT_EQ(CString::ParseTimeFromEnv(env), static_cast(0)); + + env = "18446744073709551615ns"; + EXPECT_EQ(CString::ParseTimeFromEnv(env), static_cast(18446744073709551615UL)); } HWTEST_F_L0(CStringTest, ParseNumFromEnvTest) @@ -65,6 +77,15 @@ HWTEST_F_L0(CStringTest, ParseNumFromEnvTest) env = "+123"; EXPECT_EQ(CString::ParseNumFromEnv(env), 0); + + env = " 123 "; + EXPECT_EQ(CString::ParseNumFromEnv(env), 123); + + env = "2147483647"; + EXPECT_EQ(CString::ParseNumFromEnv(env), 2147483647); + + env = "123abc456"; + EXPECT_EQ(CString::ParseNumFromEnv(env), 0); } HWTEST_F_L0(CStringTest, ParsePosNumFromEnvTest) @@ -88,6 +109,15 @@ HWTEST_F_L0(CStringTest, ParsePosNumFromEnvTest) env = "-123"; EXPECT_EQ(CString::ParsePosNumFromEnv(env), static_cast(0)); + + env = "007"; + EXPECT_EQ(CString::ParsePosNumFromEnv(env), static_cast(7)); + + env = " 123 "; + EXPECT_EQ(CString::ParsePosNumFromEnv(env), static_cast(123)); + + env = "18446744073709551615"; + EXPECT_EQ(CString::ParsePosNumFromEnv(env), static_cast(18446744073709551615UL)); } HWTEST_F_L0(CStringTest, ParsePosDecFromEnvTest) @@ -111,6 +141,21 @@ HWTEST_F_L0(CStringTest, ParsePosDecFromEnvTest) env = "-123.45"; EXPECT_EQ(CString::ParsePosDecFromEnv(env), 0.0); + + env = "123"; + EXPECT_EQ(CString::ParsePosDecFromEnv(env), 123); + + env = " 123.45 "; + EXPECT_EQ(CString::ParsePosDecFromEnv(env), 123.45); + + env = "abc"; + EXPECT_EQ(CString::ParsePosDecFromEnv(env), 0.0); + + env = "1.7976931348623157e+308"; + EXPECT_EQ(CString::ParsePosDecFromEnv(env), 1.7976931348623157e+308); + + env = "2.2250738585072014e-308"; + EXPECT_EQ(CString::ParsePosDecFromEnv(env), 2.2250738585072014e-308); } HWTEST_F_L0(CStringTest, WhileLoopCoverageTest) @@ -126,6 +171,36 @@ HWTEST_F_L0(CStringTest, WhileLoopCoverageTest) CString replacement1 = "replace"; str1.ReplaceAll(replacement1, target1); EXPECT_STREQ(str1.Str(), "hello world"); + + CString str2("hello world"); + CString target2(""); + CString replacement2("abc"); + str2.ReplaceAll(replacement2, target2); + EXPECT_STREQ(str2.Str(), "hello world"); + + CString str3("hello world"); + CString target3("world"); + CString replacement3(""); + str3.ReplaceAll(replacement3, target3); + EXPECT_STREQ(str3.Str(), "hello world"); + + CString str4("hello world"); + CString target4("world"); + CString replacement4("world"); + str4.ReplaceAll(replacement4, target4); + EXPECT_STREQ(str4.Str(), "hello world"); + + CString str5("aaaa"); + CString target5("aa"); + CString replacement5("b"); + str5.ReplaceAll(replacement5, target5); + EXPECT_STREQ(str5.Str(), "baba"); + + CString str6(""); + CString target6("world"); + CString replacement6("universe"); + str6.ReplaceAll(replacement6, target6); + EXPECT_STREQ(str6.Str(), ""); } HWTEST_F_L0(CStringTest, RemoveBlankSpaceTest) @@ -145,6 +220,18 @@ HWTEST_F_L0(CStringTest, RemoveBlankSpaceTest) CString allSpaceStr = " "; CString result4 = allSpaceStr.RemoveBlankSpace(); EXPECT_STREQ(result4.Str(), ""); + + CString leadingSpaceStr(" Hello"); + CString result5 = leadingSpaceStr.RemoveBlankSpace(); + EXPECT_STREQ("Hello", result5.Str()); + + CString trailingSpaceStr("World "); + CString result6 = trailingSpaceStr.RemoveBlankSpace(); + EXPECT_STREQ("World", result6.Str()); + + CString mixedStr(" Hello World "); + CString result7 = mixedStr.RemoveBlankSpace(); + EXPECT_STREQ("HelloWorld", result7.Str()); } HWTEST_F_L0(CStringTest, ParseSizeFromEnvTest) @@ -155,6 +242,13 @@ HWTEST_F_L0(CStringTest, ParseSizeFromEnvTest) EXPECT_EQ(CString::ParseSizeFromEnv("5mb"), static_cast(5 * 1024)); EXPECT_EQ(CString::ParseSizeFromEnv("2GB"), static_cast(2 * 1024 * 1024)); EXPECT_EQ(CString::ParseSizeFromEnv("10tb"), static_cast(0)); + EXPECT_EQ(CString::ParseSizeFromEnv(""), static_cast(0)); + EXPECT_EQ(CString::ParseSizeFromEnv(" "), static_cast(0)); + EXPECT_EQ(CString::ParseSizeFromEnv("1k"), static_cast(0)); + EXPECT_EQ(CString::ParseSizeFromEnv("abcKB"), static_cast(0)); + EXPECT_EQ(CString::ParseSizeFromEnv("1024TB"), static_cast(0)); + EXPECT_EQ(CString::ParseSizeFromEnv(" 2048 KB "), static_cast(2048)); + EXPECT_EQ(CString::ParseSizeFromEnv("18446744073709551615Kb"), static_cast(18446744073709551615UL)); } HWTEST_F_L0(CStringTest, IsPosDecimalTest) @@ -165,7 +259,15 @@ HWTEST_F_L0(CStringTest, IsPosDecimalTest) EXPECT_FALSE(CString::IsPosDecimal("abc")); EXPECT_FALSE(CString::IsPosDecimal("-1.5")); EXPECT_FALSE(CString::IsPosDecimal("0")); + EXPECT_FALSE(CString::IsPosDecimal("12.34.56")); + EXPECT_FALSE(CString::IsPosDecimal("123e")); + EXPECT_FALSE(CString::IsPosDecimal("0.0000000")); + EXPECT_TRUE(CString::IsPosDecimal("1e10")); EXPECT_TRUE(CString::IsPosDecimal("123.45")); + EXPECT_TRUE(CString::IsPosDecimal("+123.45")); + EXPECT_TRUE(CString::IsPosDecimal("0.0000001")); + EXPECT_TRUE(CString::IsPosDecimal("999999999999999.9")); + EXPECT_TRUE(CString::IsPosDecimal("1.79769e+308")); } HWTEST_F_L0(CStringTest, IsNumberTest) @@ -173,9 +275,16 @@ HWTEST_F_L0(CStringTest, IsNumberTest) EXPECT_FALSE(CString::IsNumber("")); EXPECT_FALSE(CString::IsNumber("abc")); EXPECT_FALSE(CString::IsNumber("12a3")); + EXPECT_FALSE(CString::IsNumber("-")); + EXPECT_FALSE(CString::IsNumber("12!3")); + EXPECT_FALSE(CString::IsNumber(" 123")); + EXPECT_FALSE(CString::IsNumber("123a")); + EXPECT_FALSE(CString::IsNumber("a")); + EXPECT_FALSE(CString::IsNumber("+123")); EXPECT_TRUE(CString::IsNumber("123")); EXPECT_TRUE(CString::IsNumber("-456")); + EXPECT_TRUE(CString::IsNumber("12345678901234567890")); } HWTEST_F_L0(CStringTest, IsPosNumberTest) @@ -185,9 +294,15 @@ HWTEST_F_L0(CStringTest, IsPosNumberTest) EXPECT_FALSE(CString::IsPosNumber("0")); EXPECT_FALSE(CString::IsPosNumber("abc")); EXPECT_FALSE(CString::IsPosNumber("-123")); + EXPECT_FALSE(CString::IsPosNumber("12a45")); + EXPECT_FALSE(CString::IsPosNumber("+12-45")); + EXPECT_FALSE(CString::IsPosNumber("12.45")); EXPECT_TRUE(CString::IsPosNumber("123")); EXPECT_TRUE(CString::IsPosNumber("+123")); + EXPECT_TRUE(CString::IsPosNumber("00123")); + EXPECT_TRUE(CString::IsPosNumber("+00123")); + EXPECT_TRUE(CString::IsPosNumber("12345678901234567890")); } HWTEST_F_L0(CStringTest, SubStrTest) @@ -198,6 +313,9 @@ HWTEST_F_L0(CStringTest, SubStrTest) EXPECT_EQ(std::string(str.SubStr(4, 3).Str()), ""); EXPECT_EQ(std::string(str.SubStr(10).Str()), ""); EXPECT_EQ(std::string(str.SubStr(2).Str()), "cdef"); + EXPECT_EQ(std::string(str.SubStr(0, str.Length()).Str()), "abcdef"); + EXPECT_EQ(std::string(str.SubStr(str.Length(), 1).Str()), ""); + EXPECT_EQ(std::string(str.SubStr(str.Length()-1, 1).Str()), "f"); } HWTEST_F_L0(CStringTest, SplitTest) @@ -212,6 +330,24 @@ HWTEST_F_L0(CStringTest, SplitTest) EXPECT_EQ(std::string(tokens[0].Str()), "a"); EXPECT_EQ(std::string(tokens[1].Str()), "b"); EXPECT_EQ(std::string(tokens[2].Str()), "c"); + + CString source("single"); + tokens = CString::Split(source, ','); + ASSERT_EQ(1, tokens.size()); + EXPECT_STREQ("single", tokens[0].Str()); + + CString source1(",hello,world"); + tokens = CString::Split(source1, ','); + ASSERT_EQ(2, tokens.size()); + EXPECT_STREQ("hello", tokens[0].Str()); + EXPECT_STREQ("world", tokens[1].Str()); + + CString source2("hello;world;test"); + tokens = CString::Split(source2, ';'); + ASSERT_EQ(3, tokens.size()); + EXPECT_STREQ("hello", tokens[0].Str()); + EXPECT_STREQ("world", tokens[1].Str()); + EXPECT_STREQ("test", tokens[2].Str()); } HWTEST_F_L0(CStringTest, FIndandRfindTest) @@ -223,6 +359,9 @@ HWTEST_F_L0(CStringTest, FIndandRfindTest) EXPECT_EQ(str.Find('h', 20), -1); EXPECT_EQ(str.Find('o', 4), 4); + EXPECT_EQ(str.Find("Hello", 0), -1); + EXPECT_EQ(str.Find("xyz", 0), -1); + EXPECT_EQ(str.Find("worlds", 6), -1); EXPECT_EQ(str.RFind("xyz"), -1); CString multiStr("abababa"); -- Gitee