aboutsummaryrefslogtreecommitdiffstats
path: root/strutil_test.cc
diff options
context:
space:
mode:
authorShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-08-10 20:06:50 +0900
committerShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-08-11 14:03:43 +0900
commitb3591eda330af9688f9fe4c1b1f59ccbcd9696c5 (patch)
tree85a72658cf1b2ffab53513e34dda019ffbd14d73 /strutil_test.cc
parent680139718cb041860c3c88aab7d516ab842869f7 (diff)
downloadandroid_build_kati-b3591eda330af9688f9fe4c1b1f59ccbcd9696c5.tar.gz
android_build_kati-b3591eda330af9688f9fe4c1b1f59ccbcd9696c5.tar.bz2
android_build_kati-b3591eda330af9688f9fe4c1b1f59ccbcd9696c5.zip
[C++] Improve NormalizePath
So now NormalizePath("../foo") will be "../foo" and "/../foo" will be "/foo".
Diffstat (limited to 'strutil_test.cc')
-rw-r--r--strutil_test.cc53
1 files changed, 42 insertions, 11 deletions
diff --git a/strutil_test.cc b/strutil_test.cc
index b9c5580..048a974 100644
--- a/strutil_test.cc
+++ b/strutil_test.cc
@@ -22,18 +22,21 @@
#include <vector>
#include "string_piece.h"
+#include "testutil.h"
using namespace std;
+namespace {
+
void TestWordScanner() {
vector<StringPiece> ss;
for (StringPiece tok : WordScanner("foo bar baz")) {
ss.push_back(tok);
}
assert(ss.size() == 3LU);
- assert(ss[0] == "foo");
- assert(ss[1] == "bar");
- assert(ss[2] == "baz");
+ ASSERT_EQ(ss[0], "foo");
+ ASSERT_EQ(ss[1], "bar");
+ ASSERT_EQ(ss[2], "baz");
}
void TestHasPrefix() {
@@ -57,14 +60,14 @@ string SubstPattern(StringPiece str, StringPiece pat, StringPiece subst) {
}
void TestSubstPattern() {
- assert(SubstPattern("x.c", "%.c", "%.o") == "x.o");
- assert(SubstPattern("c.x", "c.%", "o.%") == "o.x");
- assert(SubstPattern("x.c.c", "%.c", "%.o") == "x.c.o");
- assert(SubstPattern("x.x y.c", "%.c", "%.o") == "x.x y.o");
- assert(SubstPattern("x.%.c", "%.%.c", "OK") == "OK");
- assert(SubstPattern("x.c", "x.c", "OK") == "OK");
- assert(SubstPattern("x.c.c", "x.c", "XX") == "x.c.c");
- assert(SubstPattern("x.x.c", "x.c", "XX") == "x.x.c");
+ ASSERT_EQ(SubstPattern("x.c", "%.c", "%.o"), "x.o");
+ ASSERT_EQ(SubstPattern("c.x", "c.%", "o.%"), "o.x");
+ ASSERT_EQ(SubstPattern("x.c.c", "%.c", "%.o"), "x.c.o");
+ ASSERT_EQ(SubstPattern("x.x y.c", "%.c", "%.o"), "x.x y.o");
+ ASSERT_EQ(SubstPattern("x.%.c", "%.%.c", "OK"), "OK");
+ ASSERT_EQ(SubstPattern("x.c", "x.c", "OK"), "OK");
+ ASSERT_EQ(SubstPattern("x.c.c", "x.c", "XX"), "x.c.c");
+ ASSERT_EQ(SubstPattern("x.x.c", "x.c", "XX"), "x.x.c");
}
void TestNoLineBreak() {
@@ -84,6 +87,32 @@ void TestHasWord() {
assert(!HasWord("foo bar baz", "fo"));
}
+static string NormalizePath(string s) {
+ ::NormalizePath(&s);
+ return s;
+}
+
+void TestNormalizePath() {
+ ASSERT_EQ(NormalizePath(""), "");
+ ASSERT_EQ(NormalizePath("."), "");
+ ASSERT_EQ(NormalizePath("/"), "/");
+ ASSERT_EQ(NormalizePath("/tmp"), "/tmp");
+ ASSERT_EQ(NormalizePath("////tmp////"), "/tmp");
+ ASSERT_EQ(NormalizePath("a////b"), "a/b");
+ ASSERT_EQ(NormalizePath("a//.//b"), "a/b");
+ ASSERT_EQ(NormalizePath("a////b//../c/////"), "a/c");
+ ASSERT_EQ(NormalizePath("../foo"), "../foo");
+ ASSERT_EQ(NormalizePath("./foo"), "foo");
+ ASSERT_EQ(NormalizePath("x/y/..//../foo"), "foo");
+ ASSERT_EQ(NormalizePath("x/../../foo"), "../foo");
+ ASSERT_EQ(NormalizePath("/../foo"), "/foo");
+ ASSERT_EQ(NormalizePath("/../../foo"), "/foo");
+ ASSERT_EQ(NormalizePath("/a/../../foo"), "/foo");
+ ASSERT_EQ(NormalizePath("/a/b/.."), "/a");
+}
+
+} // namespace
+
int main() {
TestWordScanner();
TestHasPrefix();
@@ -91,4 +120,6 @@ int main() {
TestSubstPattern();
TestNoLineBreak();
TestHasWord();
+ TestNormalizePath();
+ assert(!g_failed);
}