Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Unified Diff: third_party/zlib/google/zip_reader_unittest.cc

Issue 179963002: New Zip::ZipFromMemory API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressing comments Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 2033f9fa002c2db2de3510d39a81c5bd39ea27c5..8571d6d9026c5cac8ed21b5f0fe6d415fcd31102 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/path_service.h"
#include "base/platform_file.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"
@@ -70,7 +71,7 @@ class PlatformFileWrapper {
// Assumes that progress callbacks will be executed in-order.
class MockUnzipListener : public base::SupportsWeakPtr<MockUnzipListener> {
public:
- MockUnzipListener()
+ MockUnzipListener()
: success_calls_(0),
failure_calls_(0),
progress_calls_(0),
@@ -553,4 +554,46 @@ 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, but the metadata in the zip file says
+ // the uncompressed size is 3 bytes. The ZipReader code needs to be clever
+ // enough to get all the data out.
+ 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 k = 0; k < 8; k++) {
+ SCOPED_TRACE(base::StringPrintf("<loop:%d>", static_cast<int>(k)));
+
+ base::FilePath file_name = base::FilePath(
+ base::StringPrintf(FILE_PATH_LITERAL("%d.txt"), static_cast<int>(k)));
+ ASSERT_TRUE(reader.LocateAndOpenEntry(file_name));
+ EXPECT_EQ(3, reader.current_entry_info()->original_size());
+
+ if (k > 1) {
+ // Off by one byte read limit: must fail.
+ EXPECT_FALSE(reader.ExtractCurrentEntryToString(k - 1, &contents));
+ }
+
+ if (k > 0) {
+ // Exact byte read limit: must pass.
+ EXPECT_TRUE(reader.ExtractCurrentEntryToString(k, &contents));
+ SCOPED_TRACE(contents);
+ EXPECT_EQ(k, contents.size());
+ EXPECT_EQ(0, memcmp(contents.c_str(), "0123456", k));
+ }
+
+ // More than necessary byte read limit: must pass.
+ EXPECT_TRUE(reader.ExtractCurrentEntryToString(16, &contents));
+ SCOPED_TRACE(contents);
+ EXPECT_EQ(k, contents.size());
+ EXPECT_EQ(0, memcmp(contents.c_str(), "0123456", k));
+ }
+ reader.Close();
+}
+
} // namespace zip

Powered by Google App Engine
This is Rietveld 408576698