Files
shadPS4/tests/test_ngs2.cpp
T

42 lines
1.3 KiB
C++

// SPDX-FileCopyrightText: Copyright 2026 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include <cstring>
#include <gtest/gtest.h>
#include "core/libraries/error_codes.h"
#include "core/libraries/ngs2/ngs2.h"
#include "core/libraries/ngs2/ngs2_error.h"
namespace Libraries::Ngs2 {
namespace {
TEST(Ngs2Test, RackQueryBufferSizeInitializesSuccessfulOutput) {
OrbisNgs2ContextBufferInfo info;
std::memset(&info, 0xA5, sizeof(info));
const size_t poisoned_size = info.hostBufferSize;
const uintptr_t poisoned_user_data = info.userData;
EXPECT_EQ(RackQueryBufferSize(nullptr, &info), ORBIS_OK);
EXPECT_EQ(info.hostBuffer, nullptr);
EXPECT_GT(info.hostBufferSize, 0);
EXPECT_NE(info.hostBufferSize, poisoned_size);
for (const auto value : info.reserved) {
EXPECT_EQ(value, 0);
}
EXPECT_EQ(info.userData, poisoned_user_data);
}
TEST(Ngs2Test, RackQueryBufferSizeRejectsInvalidArguments) {
EXPECT_EQ(RackQueryBufferSize(nullptr, nullptr), ORBIS_NGS2_ERROR_INVALID_BUFFER_ADDRESS);
OrbisNgs2RackOption option{};
option.size = sizeof(option) - 1;
OrbisNgs2ContextBufferInfo info{};
EXPECT_EQ(RackQueryBufferSize(&option, &info), ORBIS_NGS2_ERROR_INVALID_OPTION_SIZE);
}
} // namespace
} // namespace Libraries::Ngs2