ftp_directory_listing_parser_netware_unittest.cc revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
1d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis// Copyright (c) 2011 The Chromium Authors. All rights reserved. 277349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenek// Use of this source code is governed by a BSD-style license that can be 377349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenek// found in the LICENSE file. 477349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenek 577349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenek#include "net/ftp/ftp_directory_listing_parser_unittest.h" 677349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenek 777349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenek#include "base/format_macros.h" 877349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenek#include "base/string_util.h" 977349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenek#include "base/stringprintf.h" 10b387a3f23e423d62c053be86294b703da1d1a222Ted Kremenek#include "base/utf_string_conversions.h" 11d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis#include "net/ftp/ftp_directory_listing_parser_netware.h" 12b387a3f23e423d62c053be86294b703da1d1a222Ted Kremenek 1377349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremeneknamespace net { 1477349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenek 1577349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremeneknamespace { 16d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis 17d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidistypedef FtpDirectoryListingParserTest FtpDirectoryListingParserNetwareTest; 18d065d6080f0620bb80b933f3f5d52d37bb2ea770Ted Kremenek 199b663716449b618ba0390b1dbebc54fa8e971124Ted KremenekTEST_F(FtpDirectoryListingParserNetwareTest, Good) { 209b663716449b618ba0390b1dbebc54fa8e971124Ted Kremenek const struct SingleLineTestData good_cases[] = { 219b663716449b618ba0390b1dbebc54fa8e971124Ted Kremenek { "d [RWCEAFMS] ftpadmin 512 Jan 29 2004 pub", 229b663716449b618ba0390b1dbebc54fa8e971124Ted Kremenek FtpDirectoryListingEntry::DIRECTORY, "pub", -1, 239b663716449b618ba0390b1dbebc54fa8e971124Ted Kremenek 2004, 1, 29, 0, 0 }, 249b663716449b618ba0390b1dbebc54fa8e971124Ted Kremenek { "- [RW------] ftpadmin 123 Nov 11 18:25 afile", 25c0c3f5dbc9e78aa53a86c7d5e3eeda23ddad93d6Ted Kremenek FtpDirectoryListingEntry::FILE, "afile", 123, 26f494b579b22f9950f5af021f0bf9879a91bb8b41Steve Naroff 1994, 11, 11, 18, 25 }, 27bb141217871e93767aa3f2de1b9946fa6d37066aZhongxing Xu { "d [RWCEAFMS] daniel 512 May 17 2010 NVP anyagok", 284beaa9f51b2da57c64740cef2bd1c2fdb0c325d5Ted Kremenek FtpDirectoryListingEntry::DIRECTORY, "NVP anyagok", -1, 2977349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenek 2010, 5, 17, 0, 0 }, 301eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump }; 315a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidis for (size_t i = 0; i < arraysize(good_cases); i++) { 325a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidis SCOPED_TRACE(base::StringPrintf("Test[%" PRIuS "]: %s", i, 335a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidis good_cases[i].input)); 349ef6537a894c33003359b1f9b9676e9178e028b7Ted Kremenek 355a4f98ff943e6a501b0fe47ade007c9bbf96cb88Argyrios Kyrtzidis std::vector<base::string16> lines( 365e2d2c2ee3cf410643e0f9a5701708e51409d973Benjamin Kramer GetSingleLineTestCase(good_cases[i].input)); 37f494b579b22f9950f5af021f0bf9879a91bb8b41Steve Naroff 38d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis // The parser requires a "total n" line before accepting regular input. 3925e695b2d574d919cc1bbddf3a2efe073d449b1cZhongxing Xu lines.insert(lines.begin(), ASCIIToUTF16("total 1")); 4025e695b2d574d919cc1bbddf3a2efe073d449b1cZhongxing Xu 41d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis std::vector<FtpDirectoryListingEntry> entries; 421eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump EXPECT_TRUE(ParseFtpDirectoryListingNetware(lines, 43b387a3f23e423d62c053be86294b703da1d1a222Ted Kremenek GetMockCurrentTime(), 44031ccc0555a82afc2e8afe29e19dd57ff204e2deZhongxing Xu &entries)); 451eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump VerifySingleLineTestCase(good_cases[i], entries); 46d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis } 47b387a3f23e423d62c053be86294b703da1d1a222Ted Kremenek} 48d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis 491eb4433ac451dc16f4133a88af2d002ac26c58efMike StumpTEST_F(FtpDirectoryListingParserNetwareTest, Bad) { 50b387a3f23e423d62c053be86294b703da1d1a222Ted Kremenek const char* bad_cases[] = { 514adc81e540b874bafa15715fd2c5cb662463debdTed Kremenek " foo", 52cf118d41f7930a18dce97416ef7834a62642f587Ted Kremenek "garbage", 53b387a3f23e423d62c053be86294b703da1d1a222Ted Kremenek "d [] ftpadmin 512 Jan 29 2004 pub", 54b387a3f23e423d62c053be86294b703da1d1a222Ted Kremenek "d [XGARBAGE] ftpadmin 512 Jan 29 2004 pub", 551eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump "d [RWCEAFMS] 512 Jan 29 2004 pub", 56846eabd187be4bfe992e8bca131166b734d86e0dTed Kremenek "d [RWCEAFMS] ftpadmin -1 Jan 29 2004 pub", 57846eabd187be4bfe992e8bca131166b734d86e0dTed Kremenek "l [RW------] ftpadmin 512 Jan 29 2004 pub", 581eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump }; 59846d4e923bf11bcdc2816758aafa331795f29230Ted Kremenek for (size_t i = 0; i < arraysize(bad_cases); i++) { 60031ccc0555a82afc2e8afe29e19dd57ff204e2deZhongxing Xu SCOPED_TRACE(base::StringPrintf("Test[%" PRIuS "]: %s", i, 61846d4e923bf11bcdc2816758aafa331795f29230Ted Kremenek bad_cases[i])); 62846d4e923bf11bcdc2816758aafa331795f29230Ted Kremenek 630d093d3005dd583675a45a85bd688063572cc8afTed Kremenek std::vector<base::string16> lines(GetSingleLineTestCase(bad_cases[i])); 641eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 651eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump // The parser requires a "total n" line before accepting regular input. 660a3ed3143b00f237decb1288c1ff574ae09eba4eTed Kremenek lines.insert(lines.begin(), ASCIIToUTF16("total 1")); 670a3ed3143b00f237decb1288c1ff574ae09eba4eTed Kremenek 681eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump std::vector<FtpDirectoryListingEntry> entries; 69e448ab4f9dd162802f5d7cfea60f7830cc61c654Ted Kremenek EXPECT_FALSE(ParseFtpDirectoryListingNetware(lines, 70e448ab4f9dd162802f5d7cfea60f7830cc61c654Ted Kremenek GetMockCurrentTime(), 711eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump &entries)); 72e448ab4f9dd162802f5d7cfea60f7830cc61c654Ted Kremenek } 73e448ab4f9dd162802f5d7cfea60f7830cc61c654Ted Kremenek} 74e448ab4f9dd162802f5d7cfea60f7830cc61c654Ted Kremenek 751eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump} // namespace 769e9595b12e9b55586c4d50d370f429c7a3c92a90Ted Kremenek 779e9595b12e9b55586c4d50d370f429c7a3c92a90Ted Kremenek} // namespace net 78d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis