OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "net/ftp/ftp_directory_listing_parser_unittest.h" | |
6 | |
7 #include "base/format_macros.h" | |
8 #include "base/strings/string_util.h" | |
9 #include "base/strings/stringprintf.h" | |
10 #include "net/ftp/ftp_directory_listing_parser_os2.h" | |
11 | |
12 namespace net { | |
13 | |
14 namespace { | |
15 | |
16 typedef FtpDirectoryListingParserTest FtpDirectoryListingParserOS2Test; | |
17 | |
18 TEST_F(FtpDirectoryListingParserOS2Test, Good) { | |
19 const struct SingleLineTestData good_cases[] = { | |
20 { "0 DIR 11-02-09 17:32 NT", | |
21 FtpDirectoryListingEntry::DIRECTORY, "NT", -1, | |
22 2009, 11, 2, 17, 32 }, | |
23 { "458 A 01-06-09 14:42 Readme.txt", | |
24 FtpDirectoryListingEntry::FILE, "Readme.txt", 458, | |
25 2009, 1, 6, 14, 42 }, | |
26 { "1 A 01-06-09 02:42 Readme.txt", | |
27 FtpDirectoryListingEntry::FILE, "Readme.txt", 1, | |
28 2009, 1, 6, 2, 42 }, | |
29 { "458 A 01-06-01 02:42 Readme.txt", | |
30 FtpDirectoryListingEntry::FILE, "Readme.txt", 458, | |
31 2001, 1, 6, 2, 42 }, | |
32 { "458 A 01-06-00 02:42 Corner1.txt", | |
33 FtpDirectoryListingEntry::FILE, "Corner1.txt", 458, | |
34 2000, 1, 6, 2, 42 }, | |
35 { "458 A 01-06-99 02:42 Corner2.txt", | |
36 FtpDirectoryListingEntry::FILE, "Corner2.txt", 458, | |
37 1999, 1, 6, 2, 42 }, | |
38 { "458 A 01-06-80 02:42 Corner3.txt", | |
39 FtpDirectoryListingEntry::FILE, "Corner3.txt", 458, | |
40 1980, 1, 6, 2, 42 }, | |
41 { "458 A 01-06-1979 02:42 Readme.txt", | |
42 FtpDirectoryListingEntry::FILE, "Readme.txt", 458, | |
43 1979, 1, 6, 2, 42 }, | |
44 { "0 DIR 11-02-09 17:32 My Directory", | |
45 FtpDirectoryListingEntry::DIRECTORY, "My Directory", -1, | |
46 2009, 11, 2, 17, 32 }, | |
47 { "0 DIR 12-25-10 00:00 Christmas Midnight", | |
48 FtpDirectoryListingEntry::DIRECTORY, "Christmas Midnight", -1, | |
49 2010, 12, 25, 0, 0 }, | |
50 { "0 DIR 12-25-10 12:00 Christmas Midday", | |
51 FtpDirectoryListingEntry::DIRECTORY, "Christmas Midday", -1, | |
52 2010, 12, 25, 12, 0 }, | |
53 }; | |
54 for (size_t i = 0; i < arraysize(good_cases); i++) { | |
55 SCOPED_TRACE(base::StringPrintf("Test[%" PRIuS "]: %s", i, | |
56 good_cases[i].input)); | |
57 | |
58 std::vector<FtpDirectoryListingEntry> entries; | |
59 EXPECT_TRUE(ParseFtpDirectoryListingOS2( | |
60 GetSingleLineTestCase(good_cases[i].input), | |
61 &entries)); | |
62 VerifySingleLineTestCase(good_cases[i], entries); | |
63 } | |
64 } | |
65 | |
66 TEST_F(FtpDirectoryListingParserOS2Test, Ignored) { | |
67 const char* const ignored_cases[] = { | |
68 "1234 A 12-07-10 12:05", | |
69 "0 DIR 11-02-09 05:32", | |
70 }; | |
71 for (size_t i = 0; i < arraysize(ignored_cases); i++) { | |
72 SCOPED_TRACE(base::StringPrintf("Test[%" PRIuS "]: %s", i, | |
73 ignored_cases[i])); | |
74 | |
75 std::vector<FtpDirectoryListingEntry> entries; | |
76 EXPECT_TRUE(ParseFtpDirectoryListingOS2( | |
77 GetSingleLineTestCase(ignored_cases[i]), | |
78 &entries)); | |
79 EXPECT_EQ(0U, entries.size()); | |
80 } | |
81 } | |
82 | |
83 TEST_F(FtpDirectoryListingParserOS2Test, Bad) { | |
84 const char* const bad_cases[] = { | |
85 "garbage", | |
86 "0 GARBAGE 11-02-09 05:32", | |
87 "0 GARBAGE 11-02-09 05:32 NT", | |
88 "0 DIR 11-FEB-09 05:32", | |
89 "0 DIR 11-02 05:32", | |
90 "-1 A 11-02-09 05:32", | |
91 "0 DIR 11-FEB-09 05:32", | |
92 "0 DIR 11-02 05:32 NT", | |
93 "-1 A 11-02-09 05:32 NT", | |
94 "0 A 99-25-10 12:00", | |
95 "0 A 12-99-10 12:00", | |
96 "0 A 12-25-10 99:00", | |
97 "0 A 12-25-10 12:99", | |
98 "0 A 99-25-10 12:00 months out of range", | |
99 "0 A 12-99-10 12:00 days out of range", | |
100 "0 A 12-25-10 99:00 hours out of range", | |
101 "0 A 12-25-10 12:99 minutes out of range", | |
102 }; | |
103 for (size_t i = 0; i < arraysize(bad_cases); i++) { | |
104 SCOPED_TRACE(base::StringPrintf("Test[%" PRIuS "]: %s", i, | |
105 bad_cases[i])); | |
106 | |
107 std::vector<FtpDirectoryListingEntry> entries; | |
108 EXPECT_FALSE(ParseFtpDirectoryListingOS2( | |
109 GetSingleLineTestCase(bad_cases[i]), | |
110 &entries)); | |
111 } | |
112 } | |
113 | |
114 } // namespace | |
115 | |
116 } // namespace net | |
OLD | NEW |