summaryrefslogtreecommitdiff
path: root/startop/tools/view_compiler/dex_builder_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'startop/tools/view_compiler/dex_builder_test.cc')
-rw-r--r--startop/tools/view_compiler/dex_builder_test.cc82
1 files changed, 0 insertions, 82 deletions
diff --git a/startop/tools/view_compiler/dex_builder_test.cc b/startop/tools/view_compiler/dex_builder_test.cc
deleted file mode 100644
index 0d8b8541caeb..000000000000
--- a/startop/tools/view_compiler/dex_builder_test.cc
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "dex_builder.h"
-
-#include "dex/art_dex_file_loader.h"
-#include "dex/dex_file.h"
-#include "gtest/gtest.h"
-
-using namespace startop::dex;
-
-// Takes a DexBuilder, encodes it into an in-memory DEX file, verifies the resulting DEX file and
-// returns whether the verification was successful.
-bool EncodeAndVerify(DexBuilder* dex_file) {
- slicer::MemView image{dex_file->CreateImage()};
-
- art::ArtDexFileLoader loader;
- std::string error_msg;
- std::unique_ptr<const art::DexFile> loaded_dex_file{loader.Open(image.ptr<const uint8_t>(),
- image.size(),
- /*location=*/"",
- /*location_checksum=*/0,
- /*oat_dex_file=*/nullptr,
- /*verify=*/true,
- /*verify_checksum=*/false,
- &error_msg)};
- return loaded_dex_file != nullptr;
-}
-
-TEST(DexBuilderTest, VerifyDexWithClassMethod) {
- DexBuilder dex_file;
-
- auto cbuilder{dex_file.MakeClass("dextest.DexTest")};
-
- auto method{cbuilder.CreateMethod("foo", Prototype{TypeDescriptor::Void()})};
- method.BuildReturn();
- method.Encode();
-
- EXPECT_TRUE(EncodeAndVerify(&dex_file));
-}
-
-// Makes sure a bad DEX class fails to verify.
-TEST(DexBuilderTest, VerifyBadDexWithClassMethod) {
- DexBuilder dex_file;
-
- auto cbuilder{dex_file.MakeClass("dextest.DexTest")};
-
- // This method has the error, because methods cannot take Void() as a parameter.
- auto method{
- cbuilder.CreateMethod("foo", Prototype{TypeDescriptor::Void(), TypeDescriptor::Void()})};
- method.BuildReturn();
- method.Encode();
-
- EXPECT_FALSE(EncodeAndVerify(&dex_file));
-}
-
-TEST(DexBuilderTest, VerifyDexReturn5) {
- DexBuilder dex_file;
-
- auto cbuilder{dex_file.MakeClass("dextest.DexTest")};
-
- auto method{cbuilder.CreateMethod("foo", Prototype{TypeDescriptor::Int()})};
- auto r = method.MakeRegister();
- method.BuildConst4(r, 5);
- method.BuildReturn(r);
- method.Encode();
-
- EXPECT_TRUE(EncodeAndVerify(&dex_file));
-}