| Index: net/base/directory_lister_unittest.cc
|
| ===================================================================
|
| --- net/base/directory_lister_unittest.cc (revision 56913)
|
| +++ net/base/directory_lister_unittest.cc (working copy)
|
| @@ -5,6 +5,7 @@
|
| #include "base/file_path.h"
|
| #include "base/file_util.h"
|
| #include "base/i18n/file_util_icu.h"
|
| +#include "base/logging.h"
|
| #include "base/message_loop.h"
|
| #include "base/path_service.h"
|
| #include "net/base/directory_lister.h"
|
| @@ -17,19 +18,37 @@
|
|
|
| class ListerDelegate : public net::DirectoryLister::DirectoryListerDelegate {
|
| public:
|
| - ListerDelegate() : error_(-1) {
|
| + explicit ListerDelegate(bool recursive) : error_(-1), recursive_(recursive) {
|
| }
|
| - void OnListFile(const file_util::FileEnumerator::FindInfo& data) {
|
| - file_list_.push_back(data);
|
| + void OnListFile(const net::DirectoryLister::DirectoryListerData& data) {
|
| + file_list_.push_back(data.info);
|
| + paths_.push_back(data.path);
|
| }
|
| void OnListDone(int error) {
|
| error_ = error;
|
| MessageLoop::current()->Quit();
|
| + if (recursive_)
|
| + CheckRecursiveSort();
|
| + else
|
| + CheckSort();
|
| + }
|
| + void CheckRecursiveSort() {
|
| // Check that we got files in the right order.
|
| if (!file_list_.empty()) {
|
| for (size_t previous = 0, current = 1;
|
| current < file_list_.size();
|
| previous++, current++) {
|
| + EXPECT_TRUE(file_util::LocaleAwareCompareFilenames(
|
| + paths_[previous], paths_[current]));
|
| + }
|
| + }
|
| + }
|
| + void CheckSort() {
|
| + // Check that we got files in the right order.
|
| + if (!file_list_.empty()) {
|
| + for (size_t previous = 0, current = 1;
|
| + current < file_list_.size();
|
| + previous++, current++) {
|
| // Directories should come before files.
|
| if (file_util::FileEnumerator::IsDirectory(file_list_[previous]) &&
|
| !file_util::FileEnumerator::IsDirectory(file_list_[current])) {
|
| @@ -48,14 +67,16 @@
|
| int error() const { return error_; }
|
| private:
|
| int error_;
|
| + bool recursive_;
|
| std::vector<file_util::FileEnumerator::FindInfo> file_list_;
|
| + std::vector<FilePath> paths_;
|
| };
|
|
|
| TEST(DirectoryListerTest, BigDirTest) {
|
| FilePath path;
|
| ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &path));
|
|
|
| - ListerDelegate delegate;
|
| + ListerDelegate delegate(false);
|
| scoped_refptr<net::DirectoryLister> lister =
|
| new net::DirectoryLister(path, &delegate);
|
|
|
| @@ -66,11 +87,29 @@
|
| EXPECT_EQ(delegate.error(), net::OK);
|
| }
|
|
|
| +TEST(DirectoryListerTest, BigDirRecursiveTest) {
|
| + FilePath path;
|
| + ASSERT_TRUE(PathService::Get(base::DIR_EXE, &path));
|
| +
|
| + ListerDelegate delegate(true);
|
| + scoped_refptr<net::DirectoryLister> lister =
|
| + new net::DirectoryLister(path,
|
| + true,
|
| + net::DirectoryLister::FULL_PATH,
|
| + &delegate);
|
| +
|
| + lister->Start();
|
| +
|
| + MessageLoop::current()->Run();
|
| +
|
| + EXPECT_EQ(delegate.error(), net::OK);
|
| +}
|
| +
|
| TEST(DirectoryListerTest, CancelTest) {
|
| FilePath path;
|
| ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &path));
|
|
|
| - ListerDelegate delegate;
|
| + ListerDelegate delegate(false);
|
| scoped_refptr<net::DirectoryLister> lister =
|
| new net::DirectoryLister(path, &delegate);
|
|
|
|
|