blob: 7389b03badb21f1ed542633415e9b1121fe9663c [file] [log] [blame]
// Copyright 2023 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "load-tests.h"
namespace ld::testing {
namespace {
TYPED_TEST(LdLoadTests, LoadWithNeeded) {
constexpr int64_t kReturnValue = 17;
ASSERT_NO_FATAL_FAILURE(this->Init());
// There is only a reference to ld.so which doesn't need to be loaded to
// satisfy.
ASSERT_NO_FATAL_FAILURE(this->Needed(std::initializer_list<std::string_view>{}));
ASSERT_NO_FATAL_FAILURE(this->Load("ld-dep"));
EXPECT_EQ(this->Run(), kReturnValue);
this->ExpectLog("");
}
TYPED_TEST(LdLoadTests, BasicDep) {
constexpr int64_t kReturnValue = 17;
ASSERT_NO_FATAL_FAILURE(this->Init());
ASSERT_NO_FATAL_FAILURE(this->Needed({"libld-dep-a.so"}));
ASSERT_NO_FATAL_FAILURE(this->Load("basic-dep"));
EXPECT_EQ(this->Run(), kReturnValue);
this->ExpectLog("");
}
TYPED_TEST(LdLoadTests, IndirectDeps) {
constexpr int64_t kReturnValue = 17;
ASSERT_NO_FATAL_FAILURE(this->Init());
ASSERT_NO_FATAL_FAILURE(this->Needed({
"libindirect-deps-a.so",
"libindirect-deps-b.so",
"libindirect-deps-c.so",
}));
ASSERT_NO_FATAL_FAILURE(this->Load("indirect-deps"));
EXPECT_EQ(this->Run(), kReturnValue);
this->ExpectLog("");
}
TYPED_TEST(LdLoadTests, ManyDeps) {
constexpr int64_t kReturnValue = 17;
ASSERT_NO_FATAL_FAILURE(this->Init());
ASSERT_NO_FATAL_FAILURE(this->Needed({
"libld-dep-a.so",
"libld-dep-b.so",
"libld-dep-f.so",
"libld-dep-c.so",
"libld-dep-d.so",
"libld-dep-e.so",
}));
ASSERT_NO_FATAL_FAILURE(this->Load("many-deps"));
EXPECT_EQ(this->Run(), kReturnValue);
this->ExpectLog("");
}
} // namespace
} // namespace ld::testing