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.
5 #include "net/ftp/ftp_directory_listing_parser_unittest.h"
7 #include "base/format_macros.h"
8 #include "base/string_util.h"
9 #include "base/stringprintf.h"
10 #include "base/utf_string_conversions.h"
11 #include "net/ftp/ftp_directory_listing_parser_netware.h"
17 typedef FtpDirectoryListingParserTest FtpDirectoryListingParserNetwareTest
;
19 TEST_F(FtpDirectoryListingParserNetwareTest
, Good
) {
20 const struct SingleLineTestData good_cases
[] = {
21 { "d [RWCEAFMS] ftpadmin 512 Jan 29 2004 pub",
22 FtpDirectoryListingEntry::DIRECTORY
, "pub", -1,
24 { "- [RW------] ftpadmin 123 Nov 11 18:25 afile",
25 FtpDirectoryListingEntry::FILE, "afile", 123,
26 1994, 11, 11, 18, 25 },
28 for (size_t i
= 0; i
< arraysize(good_cases
); i
++) {
29 SCOPED_TRACE(base::StringPrintf("Test[%" PRIuS
"]: %s", i
,
30 good_cases
[i
].input
));
32 std::vector
<string16
> lines(GetSingleLineTestCase(good_cases
[i
].input
));
34 // The parser requires a "total n" line before accepting regular input.
35 lines
.insert(lines
.begin(), ASCIIToUTF16("total 1"));
37 std::vector
<FtpDirectoryListingEntry
> entries
;
38 EXPECT_TRUE(ParseFtpDirectoryListingNetware(lines
,
41 VerifySingleLineTestCase(good_cases
[i
], entries
);
45 TEST_F(FtpDirectoryListingParserNetwareTest
, Bad
) {
46 const char* bad_cases
[] = {
49 "d [] ftpadmin 512 Jan 29 2004 pub",
50 "d [XGARBAGE] ftpadmin 512 Jan 29 2004 pub",
51 "d [RWCEAFMS] 512 Jan 29 2004 pub",
52 "d [RWCEAFMS] ftpadmin -1 Jan 29 2004 pub",
53 "l [RW------] ftpadmin 512 Jan 29 2004 pub",
55 for (size_t i
= 0; i
< arraysize(bad_cases
); i
++) {
56 SCOPED_TRACE(base::StringPrintf("Test[%" PRIuS
"]: %s", i
,
59 std::vector
<string16
> lines(GetSingleLineTestCase(bad_cases
[i
]));
61 // The parser requires a "total n" line before accepting regular input.
62 lines
.insert(lines
.begin(), ASCIIToUTF16("total 1"));
64 std::vector
<FtpDirectoryListingEntry
> entries
;
65 EXPECT_FALSE(ParseFtpDirectoryListingNetware(lines
,