dex_cache_test.cc revision 2cebb24bfc3247d3e9be138a3350106737455918
12faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes/*
22faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Copyright (C) 2011 The Android Open Source Project
32faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes *
42faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Licensed under the Apache License, Version 2.0 (the "License");
52faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * you may not use this file except in compliance with the License.
62faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * You may obtain a copy of the License at
72faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes *
82faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes *      http://www.apache.org/licenses/LICENSE-2.0
92faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes *
102faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Unless required by applicable law or agreed to in writing, software
112faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS,
122faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * See the License for the specific language governing permissions and
142faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * limitations under the License.
152faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes */
167e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom
177e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom#include "dex_cache.h"
18a1ce1fef2d49d1d537776a5308ace7102a815fe5Brian Carlstrom
19a1ce1fef2d49d1d537776a5308ace7102a815fe5Brian Carlstrom#include <stdio.h>
20a1ce1fef2d49d1d537776a5308ace7102a815fe5Brian Carlstrom
21a1ce1fef2d49d1d537776a5308ace7102a815fe5Brian Carlstrom#include "class_linker.h"
22a1ce1fef2d49d1d537776a5308ace7102a815fe5Brian Carlstrom#include "common_runtime_test.h"
231d54e73444e017d3a65234e0f193846f3e27472bIan Rogers#include "gc/heap.h"
242dd0e2cea360bc9206eb88ecc40d259e796c239dIan Rogers#include "mirror/object_array-inl.h"
2504d7aa92bc5548bc4d272b9480614f06248194ccIan Rogers#include "mirror/object-inl.h"
26eb8167a4f4d27fce0530f6724ab8032610cd146bMathieu Chartier#include "handle_scope-inl.h"
27e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian Rogers#include "scoped_thread_state_change.h"
287e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom
297e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstromnamespace art {
302dd0e2cea360bc9206eb88ecc40d259e796c239dIan Rogersnamespace mirror {
317e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom
32a1ce1fef2d49d1d537776a5308ace7102a815fe5Brian Carlstromclass DexCacheTest : public CommonRuntimeTest {};
337e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom
347e49dca262933bc30cbc8b9f07cfc8cce2343389Brian CarlstromTEST_F(DexCacheTest, Open) {
3500f7d0eaa6bd93d33bf0c1429bf4ba0b3f28abacIan Rogers  ScopedObjectAccess soa(Thread::Current());
36eb8167a4f4d27fce0530f6724ab8032610cd146bMathieu Chartier  StackHandleScope<1> hs(soa.Self());
372cebb24bfc3247d3e9be138a3350106737455918Mathieu Chartier  ASSERT_TRUE(java_lang_dex_file_ != nullptr);
38eb8167a4f4d27fce0530f6724ab8032610cd146bMathieu Chartier  Handle<DexCache> dex_cache(
39eb8167a4f4d27fce0530f6724ab8032610cd146bMathieu Chartier      hs.NewHandle(class_linker_->AllocDexCache(soa.Self(), *java_lang_dex_file_)));
402cebb24bfc3247d3e9be138a3350106737455918Mathieu Chartier  ASSERT_TRUE(dex_cache.Get() != nullptr);
41c4fa2c0c6302d3d9979e8d8a4030499c10d6b68bBrian Carlstrom
42a663ea5de4c9ab6b1510fdebd6d8eca77ba699aeBrian Carlstrom  EXPECT_EQ(java_lang_dex_file_->NumStringIds(), dex_cache->NumStrings());
431caa2c205e51dda670207828f25451fb7623cea6Brian Carlstrom  EXPECT_EQ(java_lang_dex_file_->NumTypeIds(),   dex_cache->NumResolvedTypes());
441caa2c205e51dda670207828f25451fb7623cea6Brian Carlstrom  EXPECT_EQ(java_lang_dex_file_->NumMethodIds(), dex_cache->NumResolvedMethods());
451caa2c205e51dda670207828f25451fb7623cea6Brian Carlstrom  EXPECT_EQ(java_lang_dex_file_->NumFieldIds(),  dex_cache->NumResolvedFields());
46c4fa2c0c6302d3d9979e8d8a4030499c10d6b68bBrian Carlstrom
47c4fa2c0c6302d3d9979e8d8a4030499c10d6b68bBrian Carlstrom  EXPECT_LE(0, dex_cache->GetStrings()->GetLength());
481caa2c205e51dda670207828f25451fb7623cea6Brian Carlstrom  EXPECT_LE(0, dex_cache->GetResolvedTypes()->GetLength());
491caa2c205e51dda670207828f25451fb7623cea6Brian Carlstrom  EXPECT_LE(0, dex_cache->GetResolvedMethods()->GetLength());
50c785344b87221f5e4e6473e5b762e4e61fe65dcfMathieu Chartier  EXPECT_LE(0u, dex_cache->NumResolvedFields());
51c4fa2c0c6302d3d9979e8d8a4030499c10d6b68bBrian Carlstrom
52c4fa2c0c6302d3d9979e8d8a4030499c10d6b68bBrian Carlstrom  EXPECT_EQ(java_lang_dex_file_->NumStringIds(),
53c4fa2c0c6302d3d9979e8d8a4030499c10d6b68bBrian Carlstrom            static_cast<uint32_t>(dex_cache->GetStrings()->GetLength()));
54c4fa2c0c6302d3d9979e8d8a4030499c10d6b68bBrian Carlstrom  EXPECT_EQ(java_lang_dex_file_->NumTypeIds(),
551caa2c205e51dda670207828f25451fb7623cea6Brian Carlstrom            static_cast<uint32_t>(dex_cache->GetResolvedTypes()->GetLength()));
56c4fa2c0c6302d3d9979e8d8a4030499c10d6b68bBrian Carlstrom  EXPECT_EQ(java_lang_dex_file_->NumMethodIds(),
571caa2c205e51dda670207828f25451fb7623cea6Brian Carlstrom            static_cast<uint32_t>(dex_cache->GetResolvedMethods()->GetLength()));
58c785344b87221f5e4e6473e5b762e4e61fe65dcfMathieu Chartier  EXPECT_EQ(java_lang_dex_file_->NumFieldIds(), dex_cache->NumResolvedFields());
597e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom}
607e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom
612dd0e2cea360bc9206eb88ecc40d259e796c239dIan Rogers}  // namespace mirror
627e49dca262933bc30cbc8b9f07cfc8cce2343389Brian Carlstrom}  // namespace art
63