diff options
author | tikuta <tikuta@google.com> | 2017-04-12 05:40:40 (GMT) |
---|---|---|
committer | Takuto Ikuta <tikuta@chromium.org> | 2017-05-08 09:34:36 (GMT) |
commit | 3b320023276f98b978054c14c65d3888b989ff4a (patch) | |
tree | 7454ece5d1d4c8be8b1d2217072707d06792aec4 /src/includes_normalize_test.cc | |
parent | 08a3220bc2fe12e7f05967b317d221e0bc620be9 (diff) | |
download | Ninja-3b320023276f98b978054c14c65d3888b989ff4a.zip Ninja-3b320023276f98b978054c14c65d3888b989ff4a.tar.gz Ninja-3b320023276f98b978054c14c65d3888b989ff4a.tar.bz2 |
Make clparser faster
This patch improves perfromance of clparser.
* Reduce the number of calling GetFullPathName.
* Use StringPiece for Split and Join.
* Add EqualsCaseInsensitive for StringPiece not to generate new string
instance.
* Add some utility member in StringPiece class.
Diffstat (limited to 'src/includes_normalize_test.cc')
-rw-r--r-- | src/includes_normalize_test.cc | 43 |
1 files changed, 9 insertions, 34 deletions
diff --git a/src/includes_normalize_test.cc b/src/includes_normalize_test.cc index f18795c..0bb14ec 100644 --- a/src/includes_normalize_test.cc +++ b/src/includes_normalize_test.cc @@ -18,6 +18,7 @@ #include <direct.h> +#include "string_piece_util.h" #include "test.h" #include "util.h" @@ -26,13 +27,14 @@ namespace { string GetCurDir() { char buf[_MAX_PATH]; _getcwd(buf, sizeof(buf)); - vector<string> parts = IncludesNormalize::Split(string(buf), '\\'); - return parts[parts.size() - 1]; + vector<StringPiece> parts = SplitStringPiece(buf, '\\'); + return parts[parts.size() - 1].AsString(); } string NormalizeAndCheckNoError(const string& input) { string result, err; - EXPECT_TRUE(IncludesNormalize::Normalize(input.c_str(), NULL, &result, &err)); + IncludesNormalize normalizer("."); + EXPECT_TRUE(normalizer.Normalize(input, &result, &err)); EXPECT_EQ("", err); return result; } @@ -40,8 +42,8 @@ string NormalizeAndCheckNoError(const string& input) { string NormalizeRelativeAndCheckNoError(const string& input, const string& relative_to) { string result, err; - EXPECT_TRUE(IncludesNormalize::Normalize(input.c_str(), relative_to.c_str(), - &result, &err)); + IncludesNormalize normalizer(relative_to); + EXPECT_TRUE(normalizer.Normalize(input, &result, &err)); EXPECT_EQ("", err); return result; } @@ -76,34 +78,6 @@ TEST(IncludesNormalize, Case) { EXPECT_EQ("A/B", NormalizeAndCheckNoError("A\\./B")); } -TEST(IncludesNormalize, Join) { - vector<string> x; - EXPECT_EQ("", IncludesNormalize::Join(x, ':')); - x.push_back("alpha"); - EXPECT_EQ("alpha", IncludesNormalize::Join(x, ':')); - x.push_back("beta"); - x.push_back("gamma"); - EXPECT_EQ("alpha:beta:gamma", IncludesNormalize::Join(x, ':')); -} - -TEST(IncludesNormalize, Split) { - EXPECT_EQ("", IncludesNormalize::Join(IncludesNormalize::Split("", '/'), - ':')); - EXPECT_EQ("a", IncludesNormalize::Join(IncludesNormalize::Split("a", '/'), - ':')); - EXPECT_EQ("a:b:c", - IncludesNormalize::Join( - IncludesNormalize::Split("a/b/c", '/'), ':')); -} - -TEST(IncludesNormalize, ToLower) { - EXPECT_EQ("", IncludesNormalize::ToLower("")); - EXPECT_EQ("stuff", IncludesNormalize::ToLower("Stuff")); - EXPECT_EQ("stuff and things", IncludesNormalize::ToLower("Stuff AND thINGS")); - EXPECT_EQ("stuff 3and thin43gs", - IncludesNormalize::ToLower("Stuff 3AND thIN43GS")); -} - TEST(IncludesNormalize, DifferentDrive) { EXPECT_EQ("stuff.h", NormalizeRelativeAndCheckNoError("p:\\vs08\\stuff.h", "p:\\vs08")); @@ -129,8 +103,9 @@ TEST(IncludesNormalize, LongInvalidPath) { "instead of /Zi, but expect a similar error when you link your program."; // Too long, won't be canonicalized. Ensure doesn't crash. string result, err; + IncludesNormalize normalizer("."); EXPECT_FALSE( - IncludesNormalize::Normalize(kLongInputString, NULL, &result, &err)); + normalizer.Normalize(kLongInputString, &result, &err)); EXPECT_EQ("path too long", err); const char kExactlyMaxPath[] = |