dex_file_test.cc revision 7e49dca262933bc30cbc8b9f07cfc8cce2343389
11fb8620309a4e94d11879aabc33364acfa733904Carl Shapiro// Copyright 2011 Google Inc. All Rights Reserved.
21fb8620309a4e94d11879aabc33364acfa733904Carl Shapiro
3578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom#include "common_test.h"
4578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom#include "dex_file.h"
5578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom#include "scoped_ptr.h"
61fb8620309a4e94d11879aabc33364acfa733904Carl Shapiro
71fb8620309a4e94d11879aabc33364acfa733904Carl Shapiro#include <stdio.h>
81fb8620309a4e94d11879aabc33364acfa733904Carl Shapiro#include "gtest/gtest.h"
91fb8620309a4e94d11879aabc33364acfa733904Carl Shapiro
101fb8620309a4e94d11879aabc33364acfa733904Carl Shapironamespace art {
111fb8620309a4e94d11879aabc33364acfa733904Carl Shapiro
127e49dca262933bc30cbc8b9f07cfc8cce2343389Brian CarlstromTEST(RawDexFileTest, Open) {
137e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  scoped_ptr<RawDexFile> raw(OpenRawDexFileBase64(kNestedDex));
147e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  ASSERT_TRUE(raw != NULL);
157e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom}
167e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom
177e49dca262933bc30cbc8b9f07cfc8cce2343389Brian CarlstromTEST(RawDexFileTest, Header) {
187e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  scoped_ptr<RawDexFile> raw(OpenRawDexFileBase64(kNestedDex));
197e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  ASSERT_TRUE(raw != NULL);
207e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom
217e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  const RawDexFile::Header& header = raw->GetHeader();
227e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  // TODO: header.magic_
237e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  EXPECT_EQ(0x00d87910U, header.checksum_);
247e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  // TODO: header.signature_
257e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  EXPECT_EQ(904U, header.file_size_);
267e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  EXPECT_EQ(112U, header.header_size_);
277e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  EXPECT_EQ(0U, header.link_size_);
287e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  EXPECT_EQ(0U, header.link_off_);
297e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  EXPECT_EQ(15U, header.string_ids_size_);
307e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  EXPECT_EQ(112U, header.string_ids_off_);
317e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  EXPECT_EQ(7U, header.type_ids_size_);
327e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  EXPECT_EQ(172U, header.type_ids_off_);
337e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  EXPECT_EQ(2U, header.proto_ids_size_);
347e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  EXPECT_EQ(200U, header.proto_ids_off_);
357e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  EXPECT_EQ(1U, header.field_ids_size_);
367e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  EXPECT_EQ(224U, header.field_ids_off_);
377e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  EXPECT_EQ(3U, header.method_ids_size_);
387e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  EXPECT_EQ(232U, header.method_ids_off_);
397e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  EXPECT_EQ(2U, header.class_defs_size_);
407e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  EXPECT_EQ(256U, header.class_defs_off_);
417e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  EXPECT_EQ(584U, header.data_size_);
427e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  EXPECT_EQ(320U, header.data_off_);
437e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom}
447e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom
457e49dca262933bc30cbc8b9f07cfc8cce2343389Brian CarlstromTEST(RawDexFileTest, ClassDefs) {
467e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  scoped_ptr<RawDexFile> raw(OpenRawDexFileBase64(kNestedDex));
477e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  ASSERT_TRUE(raw != NULL);
487e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  EXPECT_EQ(2U, raw->NumClassDefs());
49578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom
507e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  const RawDexFile::ClassDef& c0 = raw->GetClassDef(0);
517e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  EXPECT_STREQ("LNested$Inner;", raw->GetClassDescriptor(c0));
52578bbdc684db8ed68e9fedbc678669d27fa68b6eBrian Carlstrom
537e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  const RawDexFile::ClassDef& c1 = raw->GetClassDef(1);
547e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom  EXPECT_STREQ("LNested;", raw->GetClassDescriptor(c1));
551fb8620309a4e94d11879aabc33364acfa733904Carl Shapiro}
561fb8620309a4e94d11879aabc33364acfa733904Carl Shapiro
571fb8620309a4e94d11879aabc33364acfa733904Carl Shapiro}  // namespace art
58