ftp_directory_listing_parser_unittest.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
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#ifndef NET_FTP_FTP_DIRECTORY_LISTING_PARSER_UNITTEST_H_ 6#define NET_FTP_FTP_DIRECTORY_LISTING_PARSER_UNITTEST_H_ 7 8#include <vector> 9 10#include "base/strings/utf_string_conversions.h" 11#include "net/ftp/ftp_directory_listing_parser.h" 12#include "testing/gtest/include/gtest/gtest.h" 13 14namespace net { 15 16class FtpDirectoryListingParserTest : public testing::Test { 17 public: 18 struct SingleLineTestData { 19 const char* input; 20 FtpDirectoryListingEntry::Type type; 21 const char* filename; 22 int64 size; 23 int year; 24 int month; 25 int day_of_month; 26 int hour; 27 int minute; 28 }; 29 30 protected: 31 FtpDirectoryListingParserTest() {} 32 33 std::vector<base::string16> GetSingleLineTestCase(const std::string& text) { 34 std::vector<base::string16> lines; 35 lines.push_back(base::UTF8ToUTF16(text)); 36 return lines; 37 } 38 39 void VerifySingleLineTestCase( 40 const SingleLineTestData& test_case, 41 const std::vector<FtpDirectoryListingEntry>& entries) { 42 ASSERT_FALSE(entries.empty()); 43 44 FtpDirectoryListingEntry entry = entries[0]; 45 EXPECT_EQ(test_case.type, entry.type); 46 EXPECT_EQ(base::UTF8ToUTF16(test_case.filename), entry.name); 47 EXPECT_EQ(test_case.size, entry.size); 48 49 base::Time::Exploded time_exploded; 50 entry.last_modified.LocalExplode(&time_exploded); 51 52 // Only test members displayed on the directory listing. 53 EXPECT_EQ(test_case.year, time_exploded.year); 54 EXPECT_EQ(test_case.month, time_exploded.month); 55 EXPECT_EQ(test_case.day_of_month, time_exploded.day_of_month); 56 EXPECT_EQ(test_case.hour, time_exploded.hour); 57 EXPECT_EQ(test_case.minute, time_exploded.minute); 58 59 EXPECT_EQ(1U, entries.size()); 60 } 61 62 base::Time GetMockCurrentTime() { 63 base::Time::Exploded mock_current_time_exploded = { 0 }; 64 mock_current_time_exploded.year = 1994; 65 mock_current_time_exploded.month = 11; 66 mock_current_time_exploded.day_of_month = 15; 67 mock_current_time_exploded.hour = 12; 68 mock_current_time_exploded.minute = 45; 69 return base::Time::FromLocalExploded(mock_current_time_exploded); 70 } 71}; 72 73} // namespace net 74 75#endif // NET_FTP_FTP_DIRECTORY_LISTING_PARSER_UNITTEST_H_ 76 77