@@ -109,3 +109,36 @@ TEST_F(URLTest, ToFilePath) {
109109
110110#undef T
111111}
112+
113+ TEST_F (URLTest, FromFilePath) {
114+ URL file_url;
115+ #ifdef _WIN32
116+ file_url = URL::FromFilePath (" C:\\ Program Files\\ " );
117+ EXPECT_EQ (" file:" , file_url.protocol ());
118+ EXPECT_EQ (" /C:/Program%20Files/" , file_url.path ());
119+
120+ file_url = URL::FromFilePath (" C:\\ a\\ b\\ c" );
121+ EXPECT_EQ (" file:" , file_url.protocol ());
122+ EXPECT_EQ (" /C:/a/b/c" , file_url.path ());
123+
124+ file_url = URL::FromFilePath (" b:\\ a\\ %%.js" );
125+ EXPECT_EQ (" file:" , file_url.protocol ());
126+ EXPECT_EQ (" /b:/a/%25%25.js" , file_url.path ());
127+
128+ file_url = URL::FromFilePath (" \\\\ host\\ a\\ b\\ c" );
129+ EXPECT_EQ (" file:" , file_url.protocol ());
130+ EXPECT_EQ (" host/a/b/c" , file_url.path ());
131+ #else
132+ file_url = URL::FromFilePath (" /" );
133+ EXPECT_EQ (" file:" , file_url.protocol ());
134+ EXPECT_EQ (" /" , file_url.path ());
135+
136+ file_url = URL::FromFilePath (" /a/b/c" );
137+ EXPECT_EQ (" file:" , file_url.protocol ());
138+ EXPECT_EQ (" /a/b/c" , file_url.path ());
139+
140+ file_url = URL::FromFilePath (" /a/%%.js" );
141+ EXPECT_EQ (" file:" , file_url.protocol ());
142+ EXPECT_EQ (" /a/%25%25.js" , file_url.path ());
143+ #endif
144+ }
0 commit comments