1// Copyright 2013 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 <string> 6 7#include "base/files/file_path.h" 8#include "base/memory/ref_counted.h" 9#include "base/strings/string_number_conversions.h" 10#include "base/time/time.h" 11#include "chrome/browser/upload_list.h" 12#include "testing/gtest/include/gtest/gtest.h" 13 14// Test that UploadList can parse a vector of log entry strings to a vector of 15// UploadInfo objects. See the UploadList declaration for a description of the 16// log entry string format. 17TEST(UploadListTest, ParseLogEntries) { 18 const char kTestTime[] = "1234567890"; 19 const char kTestID[] = "0123456789abcdef"; 20 std::string test_entry = kTestTime; 21 test_entry += ","; 22 test_entry.append(kTestID, sizeof(kTestID)); 23 24 scoped_refptr<UploadList> upload_list = 25 new UploadList(NULL, base::FilePath()); 26 27 // 1 entry. 28 std::vector<std::string> log_entries; 29 log_entries.push_back(test_entry); 30 upload_list->ParseLogEntries(log_entries); 31 EXPECT_EQ(1u, upload_list->uploads_.size()); 32 double time_double = upload_list->uploads_[0].time.ToDoubleT(); 33 EXPECT_STREQ(kTestTime, base::DoubleToString(time_double).c_str()); 34 EXPECT_STREQ(kTestID, upload_list->uploads_[0].id.c_str()); 35 EXPECT_STREQ("", upload_list->uploads_[0].local_id.c_str()); 36 37 // Add 3 more entries. 38 log_entries.push_back(test_entry); 39 log_entries.push_back(test_entry); 40 upload_list->ParseLogEntries(log_entries); 41 EXPECT_EQ(4u, upload_list->uploads_.size()); 42 time_double = upload_list->uploads_[3].time.ToDoubleT(); 43 EXPECT_STREQ(kTestTime, base::DoubleToString(time_double).c_str()); 44 EXPECT_STREQ(kTestID, upload_list->uploads_[3].id.c_str()); 45 EXPECT_STREQ("", upload_list->uploads_[3].local_id.c_str()); 46} 47 48TEST(UploadListTest, ParseLogEntriesWithLocalId) { 49 const char kTestTime[] = "1234567890"; 50 const char kTestID[] = "0123456789abcdef"; 51 const char kTestLocalID[] = "fedcba9876543210"; 52 std::string test_entry = kTestTime; 53 test_entry += ","; 54 test_entry.append(kTestID, sizeof(kTestID)); 55 test_entry += ","; 56 test_entry.append(kTestLocalID, sizeof(kTestLocalID)); 57 58 scoped_refptr<UploadList> upload_list = 59 new UploadList(NULL, base::FilePath()); 60 61 // 1 entry. 62 std::vector<std::string> log_entries; 63 log_entries.push_back(test_entry); 64 upload_list->ParseLogEntries(log_entries); 65 EXPECT_EQ(1u, upload_list->uploads_.size()); 66 double time_double = upload_list->uploads_[0].time.ToDoubleT(); 67 EXPECT_STREQ(kTestTime, base::DoubleToString(time_double).c_str()); 68 EXPECT_STREQ(kTestID, upload_list->uploads_[0].id.c_str()); 69 EXPECT_STREQ(kTestLocalID, upload_list->uploads_[0].local_id.c_str()); 70 71 // Add 3 more entries. 72 log_entries.push_back(test_entry); 73 log_entries.push_back(test_entry); 74 upload_list->ParseLogEntries(log_entries); 75 EXPECT_EQ(4u, upload_list->uploads_.size()); 76 time_double = upload_list->uploads_[3].time.ToDoubleT(); 77 EXPECT_STREQ(kTestTime, base::DoubleToString(time_double).c_str()); 78 EXPECT_STREQ(kTestID, upload_list->uploads_[3].id.c_str()); 79 EXPECT_STREQ(kTestLocalID, upload_list->uploads_[3].local_id.c_str()); 80} 81