aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/singlejar
diff options
context:
space:
mode:
authorGravatar Sasha Smundak <asmundak@google.com>2016-07-26 07:56:44 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-07-26 09:31:31 +0000
commit9a289b3cd6072055b2705b951456276df2f0794a (patch)
tree643899dbf1612ae37bf85d61ee6926a22049978f /src/tools/singlejar
parent0fe34924b5e5282b5e2895761f11ad77bccebdba (diff)
Add the method to set zip64 extension attribute. Eliminate useless test case
class in zip_headers_test. -- MOS_MIGRATED_REVID=128444529
Diffstat (limited to 'src/tools/singlejar')
-rw-r--r--src/tools/singlejar/zip_headers.h1
-rw-r--r--src/tools/singlejar/zip_headers_test.cc33
2 files changed, 22 insertions, 12 deletions
diff --git a/src/tools/singlejar/zip_headers.h b/src/tools/singlejar/zip_headers.h
index f85e24f011..cf259fe7a6 100644
--- a/src/tools/singlejar/zip_headers.h
+++ b/src/tools/singlejar/zip_headers.h
@@ -104,6 +104,7 @@ class Zip64ExtraField {
// The value of i-th attribute
uint64_t attr64(int index) const { return le64toh(attr_[index]); }
+ void attr64(int index, uint64_t v) { attr_[index] = htole64(v); }
private:
uint16_t tag_;
diff --git a/src/tools/singlejar/zip_headers_test.cc b/src/tools/singlejar/zip_headers_test.cc
index 7a181c7c46..7ec18dc22d 100644
--- a/src/tools/singlejar/zip_headers_test.cc
+++ b/src/tools/singlejar/zip_headers_test.cc
@@ -18,12 +18,10 @@
namespace {
-class ZipHeadersTest : public ::testing::Test {
-};
+const uint8_t kPoison = 0xFB;
-TEST_F(ZipHeadersTest, LocalHeader) {
+TEST(ZipHeadersTest, LocalHeader) {
uint8_t bytes[256];
- const uint8_t kPoison = 0xFB;
memset(bytes, kPoison, sizeof(bytes));
LH *lh = reinterpret_cast<LH *>(bytes);
@@ -93,9 +91,8 @@ TEST_F(ZipHeadersTest, LocalHeader) {
EXPECT_EQ(kPoison, *lh->data());
}
-TEST_F(ZipHeadersTest, CentralDirectoryHeader) {
+TEST(ZipHeadersTest, CentralDirectoryHeader) {
uint8_t bytes[256];
- const uint8_t kPoison = 0xFB;
memset(bytes, kPoison, sizeof(bytes));
CDH *cdh = reinterpret_cast<CDH *>(bytes);
@@ -207,9 +204,8 @@ TEST_F(ZipHeadersTest, CentralDirectoryHeader) {
EXPECT_EQ(42, cdh->local_header_offset());
}
-TEST_F(ZipHeadersTest, ECD64Locator) {
+TEST(ZipHeadersTest, ECD64Locator) {
uint8_t bytes[256];
- const uint8_t kPoison = 0xFB;
memset(bytes, kPoison, sizeof(bytes));
ECD64Locator *ecd64loc = reinterpret_cast<ECD64Locator *>(bytes);
@@ -223,9 +219,8 @@ TEST_F(ZipHeadersTest, ECD64Locator) {
EXPECT_EQ(213456, ecd64loc->total_disks());
}
-TEST_F(ZipHeadersTest, Zip64EndOfCentralDirectory) {
+TEST(ZipHeadersTest, Zip64EndOfCentralDirectory) {
uint8_t bytes[256];
- const uint8_t kPoison = 0xFB;
memset(bytes, kPoison, sizeof(bytes));
ECD64 *ecd64 = reinterpret_cast<ECD64 *>(bytes);
@@ -251,9 +246,8 @@ TEST_F(ZipHeadersTest, Zip64EndOfCentralDirectory) {
EXPECT_EQ(11000000000, ecd64->cen_offset());
}
-TEST_F(ZipHeadersTest, EndOfCentralDirectory) {
+TEST(ZipHeadersTest, EndOfCentralDirectory) {
uint8_t bytes[256];
- const uint8_t kPoison = 0xFB;
memset(bytes, kPoison, sizeof(bytes));
ECD64Locator *ecd64loc = reinterpret_cast<ECD64Locator *>(bytes);
ECD *ecd = reinterpret_cast<ECD *>(bytes + sizeof(ECD64Locator));
@@ -287,5 +281,20 @@ TEST_F(ZipHeadersTest, EndOfCentralDirectory) {
EXPECT_EQ(9876543210, ecd->ecd64_offset());
}
+TEST(ZipHeadersTest, Zip64ExtraFieldTest) {
+ uint8_t bytes[256];
+ memset(bytes, kPoison, sizeof(bytes));
+ Zip64ExtraField *z64 = reinterpret_cast<Zip64ExtraField *>(bytes);
+
+ z64->signature();
+ EXPECT_TRUE(z64->is());
+ z64->payload_size(16);
+ z64->attr64(0, 9876543210);
+ EXPECT_EQ(9876543210, z64->attr64(0));
+ z64->attr64(1, 8976543210);
+ EXPECT_EQ(8976543210, z64->attr64(1));
+ EXPECT_EQ(kPoison, bytes[z64->size()]);
+}
+
} // namespace