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 "base/files/scoped_temp_dir.h"
6#include "chrome/common/media_galleries/picasa_test_util.h"
7#include "chrome/common/media_galleries/pmp_constants.h"
8#include "chrome/utility/media_galleries/picasa_album_table_reader.h"
9#include "testing/gtest/include/gtest/gtest.h"
10
11namespace picasa {
12
13namespace {
14
15TEST(PicasaAlbumTableReaderTest, FoldersAndAlbums) {
16  base::ScopedTempDir temp_dir;
17  ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
18
19  int test_time_delta = 100;
20
21  std::vector<uint32> category_vector;
22  category_vector.push_back(kAlbumCategoryFolder);
23  category_vector.push_back(kAlbumCategoryInvalid);
24  category_vector.push_back(kAlbumCategoryAlbum);
25
26  std::vector<double> date_vector;
27  date_vector.push_back(0.0);
28  date_vector.push_back(0.0);
29  date_vector.push_back(0.0 + test_time_delta);
30
31  std::string test_folder_name = "Pix4dalulz";
32  std::string test_album_name = "Cats";
33
34  base::FilePath test_folder_path =
35      base::FilePath(base::FilePath::FromUTF8Unsafe("C:\\Pix4dalulz"));
36
37  // Only folders require filenames. Tests handling of different length columns.
38  std::vector<std::string> filename_vector;
39  filename_vector.push_back(test_folder_path.AsUTF8Unsafe());
40
41  std::vector<std::string> name_vector;
42  name_vector.push_back(test_folder_name);
43  name_vector.push_back("");
44  name_vector.push_back(test_album_name);
45
46  std::vector<std::string> token_vector;
47  token_vector.push_back("");
48  token_vector.push_back("");
49  token_vector.push_back(std::string(kAlbumTokenPrefix) + "uid3");
50
51  std::vector<std::string> uid_vector;
52  uid_vector.push_back("uid1");
53  uid_vector.push_back("uid2");
54  uid_vector.push_back("uid3");
55
56  WriteAlbumTable(temp_dir.path(), category_vector, date_vector,
57                  filename_vector, name_vector, token_vector, uid_vector);
58
59  AlbumTableFiles album_table_files(temp_dir.path());
60  PicasaAlbumTableReader reader(album_table_files.Pass());
61
62  ASSERT_TRUE(reader.Init());
63
64  const std::vector<AlbumInfo>& albums = reader.albums();
65  const std::vector<AlbumInfo>& folders = reader.folders();
66
67  ASSERT_EQ(1u, albums.size());
68  ASSERT_EQ(1u, folders.size());
69
70  EXPECT_EQ(test_album_name, albums[0].name);
71  EXPECT_EQ(test_folder_name, folders[0].name);
72
73  EXPECT_EQ(test_folder_path, folders[0].path);
74
75  base::TimeDelta time_delta = albums[0].timestamp - folders[0].timestamp;
76
77  EXPECT_EQ(test_time_delta, time_delta.InDays());
78}
79
80}  // namespace
81
82}  // namespace picasa
83