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

Unified Diff: src/platform/update_engine/zip_unittest.cc

Issue 855002: AU: Bzip2 utility functions that mirror Gzip utility functions. (Closed)
Patch Set: revert utils.* Created 10 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: src/platform/update_engine/zip_unittest.cc
diff --git a/src/platform/update_engine/zip_unittest.cc b/src/platform/update_engine/zip_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..72bd7f3b2929cffb0bd0fddcabfcdaddc42a5d8b
--- /dev/null
+++ b/src/platform/update_engine/zip_unittest.cc
@@ -0,0 +1,132 @@
+// Copyright (c) 2009 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <string.h>
+#include <unistd.h>
+#include <string>
+#include <vector>
+#include <gtest/gtest.h>
+#include "update_engine/bzip.h"
+#include "update_engine/gzip.h"
+#include "update_engine/test_utils.h"
+#include "update_engine/utils.h"
+
+using std::string;
+using std::vector;
+
+namespace chromeos_update_engine {
+
+template <typename T>
+class ZipTest : public ::testing::Test {
+ public:
+ bool ZipDecompress(const std::vector<char>& in,
+ std::vector<char>* out) const = 0;
+ bool ZipCompress(const std::vector<char>& in,
+ std::vector<char>* out) const = 0;
+ bool ZipCompressString(const std::string& str,
+ std::vector<char>* out) const = 0;
+ bool ZipDecompressString(const std::string& str,
+ std::vector<char>* out) const = 0;
+};
+
+class GzipTest {};
+
+template <>
+class ZipTest<GzipTest> : public ::testing::Test {
+ public:
+ bool ZipDecompress(const std::vector<char>& in,
+ std::vector<char>* out) const {
+ return GzipDecompress(in, out);
+ }
+ bool ZipCompress(const std::vector<char>& in,
+ std::vector<char>* out) const {
+ return GzipCompress(in, out);
+ }
+ bool ZipCompressString(const std::string& str,
+ std::vector<char>* out) const {
+ return GzipCompressString(str, out);
+ }
+ bool ZipDecompressString(const std::string& str,
+ std::vector<char>* out) const {
+ return GzipDecompressString(str, out);
+ }
+};
+
+class BzipTest {};
+
+template <>
+class ZipTest<BzipTest> : public ::testing::Test {
+ public:
+ bool ZipDecompress(const std::vector<char>& in,
+ std::vector<char>* out) const {
+ return BzipDecompress(in, out);
+ }
+ bool ZipCompress(const std::vector<char>& in,
+ std::vector<char>* out) const {
+ return BzipCompress(in, out);
+ }
+ bool ZipCompressString(const std::string& str,
+ std::vector<char>* out) const {
+ return BzipCompressString(str, out);
+ }
+ bool ZipDecompressString(const std::string& str,
+ std::vector<char>* out) const {
+ return BzipDecompressString(str, out);
+ }
+};
+
+typedef ::testing::Types<GzipTest, BzipTest>
+ ZipTestTypes;
+TYPED_TEST_CASE(ZipTest, ZipTestTypes);
+
+
+
+TYPED_TEST(ZipTest, SimpleTest) {
+ string in("this should compress well xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
+ vector<char> out;
+ EXPECT_TRUE(this->ZipCompressString(in, &out));
+ EXPECT_LT(out.size(), in.size());
+ EXPECT_GT(out.size(), 0);
+ vector<char> decompressed;
+ EXPECT_TRUE(this->ZipDecompress(out, &decompressed));
+ EXPECT_EQ(in.size(), decompressed.size());
+ EXPECT_TRUE(!memcmp(in.data(), &decompressed[0], in.size()));
+}
+
+TYPED_TEST(ZipTest, PoorCompressionTest) {
+ string in(reinterpret_cast<const char*>(kRandomString),
+ sizeof(kRandomString));
+ vector<char> out;
+ EXPECT_TRUE(this->ZipCompressString(in, &out));
+ EXPECT_GT(out.size(), in.size());
+ string out_string(&out[0], out.size());
+ vector<char> decompressed;
+ EXPECT_TRUE(this->ZipDecompressString(out_string, &decompressed));
+ EXPECT_EQ(in.size(), decompressed.size());
+ EXPECT_TRUE(!memcmp(in.data(), &decompressed[0], in.size()));
+}
+
+TYPED_TEST(ZipTest, MalformedZipTest) {
+ string in(reinterpret_cast<const char*>(kRandomString),
+ sizeof(kRandomString));
+ vector<char> out;
+ EXPECT_FALSE(this->ZipDecompressString(in, &out));
+}
+
+TYPED_TEST(ZipTest, EmptyInputsTest) {
+ string in;
+ vector<char> out;
+ EXPECT_TRUE(this->ZipDecompressString(in, &out));
+ EXPECT_EQ(0, out.size());
+
+ EXPECT_TRUE(this->ZipCompressString(in, &out));
+ EXPECT_EQ(0, out.size());
+}
+
+} // namespace chromeos_update_engine
« src/platform/update_engine/bzip.h ('K') | « src/platform/update_engine/gzip_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698