summaryrefslogtreecommitdiffstats
path: root/net/ftp/ftp_util_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'net/ftp/ftp_util_unittest.cc')
-rw-r--r--net/ftp/ftp_util_unittest.cc52
1 files changed, 52 insertions, 0 deletions
diff --git a/net/ftp/ftp_util_unittest.cc b/net/ftp/ftp_util_unittest.cc
index 2ccb75b..46db873d 100644
--- a/net/ftp/ftp_util_unittest.cc
+++ b/net/ftp/ftp_util_unittest.cc
@@ -5,6 +5,9 @@
#include "net/ftp/ftp_util.h"
#include "base/basictypes.h"
+#include "base/format_macros.h"
+#include "base/string_util.h"
+#include "base/time.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
@@ -98,4 +101,53 @@ TEST(FtpUtilTest, VMSPathToUnix) {
}
}
+TEST(FtpUtilTest, LsDateListingToTime) {
+ base::Time::Exploded now_exploded;
+ base::Time::Now().LocalExplode(&now_exploded);
+
+ const struct {
+ // Input.
+ const char* month;
+ const char* day;
+ const char* rest;
+
+ // Expected output.
+ int expected_year;
+ int expected_month;
+ int expected_day_of_month;
+ int expected_hour;
+ int expected_minute;
+ } kTestCases[] = {
+ { "Nov", "01", "2007", 2007, 11, 1, 0, 0 },
+ { "Jul", "25", "13:37", now_exploded.year, 7, 25, 13, 37 },
+
+ // Test date listings in German, we should support them for FTP servers
+ // giving localized listings.
+ { "M\xc3\xa4r", "13", "2009", 2009, 3, 13, 0, 0 },
+ { "Mai", "1", "10:10", now_exploded.year, 5, 1, 10, 10 },
+ { "Okt", "14", "21:18", now_exploded.year, 10, 14, 21, 18 },
+ { "Dez", "25", "2008", 2008, 12, 25, 0, 0 },
+ };
+ for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestCases); i++) {
+ SCOPED_TRACE(StringPrintf("Test[%" PRIuS "]: %s %s %s", i,
+ kTestCases[i].month, kTestCases[i].day,
+ kTestCases[i].rest));
+
+ base::Time time;
+ ASSERT_TRUE(net::FtpUtil::LsDateListingToTime(
+ UTF8ToUTF16(kTestCases[i].month), UTF8ToUTF16(kTestCases[i].day),
+ UTF8ToUTF16(kTestCases[i].rest), &time));
+
+ base::Time::Exploded time_exploded;
+ time.LocalExplode(&time_exploded);
+ EXPECT_EQ(kTestCases[i].expected_year, time_exploded.year);
+ EXPECT_EQ(kTestCases[i].expected_month, time_exploded.month);
+ EXPECT_EQ(kTestCases[i].expected_day_of_month, time_exploded.day_of_month);
+ EXPECT_EQ(kTestCases[i].expected_hour, time_exploded.hour);
+ EXPECT_EQ(kTestCases[i].expected_minute, time_exploded.minute);
+ EXPECT_EQ(0, time_exploded.second);
+ EXPECT_EQ(0, time_exploded.millisecond);
+ }
+}
+
} // namespace