Chromium Code Reviews| Index: third_party/zlib/google/zip_reader_unittest.cc |
| diff --git a/third_party/zlib/google/zip_reader_unittest.cc b/third_party/zlib/google/zip_reader_unittest.cc |
| index df20e6fe3367a93cb810dd8c5008b821bf2ad444..f37ac283e1b9c27c60f3608edff5d6736626bd66 100644 |
| --- a/third_party/zlib/google/zip_reader_unittest.cc |
| +++ b/third_party/zlib/google/zip_reader_unittest.cc |
| @@ -15,6 +15,7 @@ |
| #include "base/md5.h" |
| #include "base/path_service.h" |
| #include "base/run_loop.h" |
| +#include "base/strings/stringprintf.h" |
| #include "base/strings/utf_string_conversions.h" |
| #include "base/time/time.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| @@ -534,4 +535,42 @@ TEST_F(ZipReaderTest, ExtractToFileAsync_Directory) { |
| ASSERT_TRUE(base::DirectoryExists(target_file)); |
| } |
| +TEST_F(ZipReaderTest, ExtractCurrentEntryToString) { |
| + // test_mismatch_size.zip contains files with names from 0.txt to 7.txt with |
| + // sizes from 0 to 7 bytes respectively, being the contents of each file a |
| + // substring of "0123456" starting at '0'. |
| + base::FilePath test_zip_file = |
| + test_data_dir_.AppendASCII("test_mismatch_size.zip"); |
| + |
| + ZipReader reader; |
| + std::string contents; |
| + ASSERT_TRUE(reader.Open(test_zip_file)); |
| + |
| + for (size_t i = 0; i < 8; i++) { |
| + SCOPED_TRACE(base::StringPrintf("Processing %d.txt", static_cast<int>(i))); |
| + |
| + base::FilePath file_name = base::FilePath( |
| + base::StringPrintf(FILE_PATH_LITERAL("%d.txt"), static_cast<int>(i))); |
|
satorux1
2014/06/03 08:17:40
This looks tricky. FILE_PATH_LITERAL() returns a w
João Eiras
2014/06/03 14:39:02
There is an overload for string and wstring. Works
satorux1
2014/06/03 21:30:15
i think relying on the overload is not obvious hen
João Eiras
2014/06/19 14:00:43
OK, changed.
|
| + ASSERT_TRUE(reader.LocateAndOpenEntry(file_name)); |
| + |
| + if (i > 1) { |
| + // Off by one byte read limit: must fail. |
| + EXPECT_FALSE(reader.ExtractCurrentEntryToString(i - 1, &contents)); |
| + } |
| + |
| + if (i > 0) { |
| + // Exact byte read limit: must pass. |
| + EXPECT_TRUE(reader.ExtractCurrentEntryToString(i, &contents)); |
| + EXPECT_EQ(i, contents.size()); |
| + EXPECT_EQ(0, memcmp(contents.c_str(), "0123456", i)); |
| + } |
| + |
| + // More than necessary byte read limit: must pass. |
| + EXPECT_TRUE(reader.ExtractCurrentEntryToString(16, &contents)); |
| + EXPECT_EQ(i, contents.size()); |
| + EXPECT_EQ(0, memcmp(contents.c_str(), "0123456", i)); |
| + } |
| + reader.Close(); |
| +} |
| + |
| } // namespace zip |