blob: b46cbb5ecd49ac8f86c5a23f4536796be46b997b [file] [log] [blame]
Carl Shapiro1fb86202011-06-27 17:43:13 -07001// Copyright 2011 Google Inc. All Rights Reserved.
2
3#include "src/dex_file.h"
4#include "src/scoped_ptr.h"
5
6#include <stdio.h>
7#include "gtest/gtest.h"
8
9namespace art {
10
Carl Shapiro80d4dde2011-06-28 16:24:07 -070011// Nested.java
12//
13// class Nested {
14// class Inner {
15// }
16// }
17static const char kNestedDex[] =
18 "ZGV4CjAzNQAQedgAe7gM1B/WHsWJ6L7lGAISGC7yjD2IAwAAcAAAAHhWNBIAAAAAAAAAAMQCAAAP"
19 "AAAAcAAAAAcAAACsAAAAAgAAAMgAAAABAAAA4AAAAAMAAADoAAAAAgAAAAABAABIAgAAQAEAAK4B"
20 "AAC2AQAAvQEAAM0BAADXAQAA+wEAABsCAAA+AgAAUgIAAF8CAABiAgAAZgIAAHMCAAB5AgAAgQIA"
21 "AAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAkAAAAJAAAABgAAAAAAAAAKAAAABgAAAKgBAAAAAAEA"
22 "DQAAAAAAAQAAAAAAAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAIAAAAiAEAAKsCAAAA"
23 "AAAAAQAAAAAAAAAFAAAAAAAAAAgAAACYAQAAuAIAAAAAAAACAAAAlAIAAJoCAAABAAAAowIAAAIA"
24 "AgABAAAAiAIAAAYAAABbAQAAcBACAAAADgABAAEAAQAAAI4CAAAEAAAAcBACAAAADgBAAQAAAAAA"
25 "AAAAAAAAAAAATAEAAAAAAAAAAAAAAAAAAAEAAAABAAY8aW5pdD4ABUlubmVyAA5MTmVzdGVkJElu"
26 "bmVyOwAITE5lc3RlZDsAIkxkYWx2aWsvYW5ub3RhdGlvbi9FbmNsb3NpbmdDbGFzczsAHkxkYWx2"
27 "aWsvYW5ub3RhdGlvbi9Jbm5lckNsYXNzOwAhTGRhbHZpay9hbm5vdGF0aW9uL01lbWJlckNsYXNz"
28 "ZXM7ABJMamF2YS9sYW5nL09iamVjdDsAC05lc3RlZC5qYXZhAAFWAAJWTAALYWNjZXNzRmxhZ3MA"
29 "BG5hbWUABnRoaXMkMAAFdmFsdWUAAgEABw4AAQAHDjwAAgIBDhgBAgMCCwQADBcBAgQBDhwBGAAA"
30 "AQEAAJAgAICABNQCAAABAAGAgATwAgAAEAAAAAAAAAABAAAAAAAAAAEAAAAPAAAAcAAAAAIAAAAH"
31 "AAAArAAAAAMAAAACAAAAyAAAAAQAAAABAAAA4AAAAAUAAAADAAAA6AAAAAYAAAACAAAAAAEAAAMQ"
32 "AAACAAAAQAEAAAEgAAACAAAAVAEAAAYgAAACAAAAiAEAAAEQAAABAAAAqAEAAAIgAAAPAAAArgEA"
33 "AAMgAAACAAAAiAIAAAQgAAADAAAAlAIAAAAgAAACAAAAqwIAAAAQAAABAAAAxAIAAA==";
Carl Shapiro1fb86202011-06-27 17:43:13 -070034
35TEST(DexFile, Open) {
Carl Shapiro80d4dde2011-06-28 16:24:07 -070036 scoped_ptr<DexFile> dex(DexFile::OpenBase64(kNestedDex));
Carl Shapiro1fb86202011-06-27 17:43:13 -070037 ASSERT_TRUE(dex != NULL);
38}
39
40TEST(DexFile, LoadNonexistent) {
Carl Shapiro80d4dde2011-06-28 16:24:07 -070041 scoped_ptr<DexFile> dex(DexFile::OpenBase64(kNestedDex));
Carl Shapiro1fb86202011-06-27 17:43:13 -070042 ASSERT_TRUE(dex != NULL);
43
44 Class* klass = dex->LoadClass("NoSuchClass");
45 ASSERT_TRUE(klass == NULL);
46}
47
48TEST(DexFile, Load) {
Carl Shapiro80d4dde2011-06-28 16:24:07 -070049 scoped_ptr<DexFile> dex(DexFile::OpenBase64(kNestedDex));
Carl Shapiro1fb86202011-06-27 17:43:13 -070050 ASSERT_TRUE(dex != NULL);
51
52 Class* klass = dex->LoadClass("LNested;");
53 ASSERT_TRUE(klass != NULL);
Carl Shapiro3ee755d2011-06-28 12:11:04 -070054
55 uint32_t vmeth = klass->NumVirtualMethods();
56 EXPECT_EQ(vmeth, 0U);
57
58 uint32_t dmeth = klass->NumDirectMethods();
59 EXPECT_EQ(dmeth, 1U);
Carl Shapiro1fb86202011-06-27 17:43:13 -070060}
61
62} // namespace art