blob: e9d2afe004a8fe3049c53bf9fde198a3947188fd [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
#include "sw/device/silicon_creator/lib/manifest.h"
#include "gtest/gtest.h"
namespace manifest_unittest {
namespace {
TEST(Manifest, SignedRegionGet) {
manifest_t manifest{};
manifest.image_length = 4096;
manifest_signed_region_t signed_region;
EXPECT_EQ(manifest_signed_region_get(&manifest, &signed_region), kErrorOk);
// Signed region starts at `image_length` and ends at the end of the image.
EXPECT_EQ(&manifest.image_length, signed_region.start);
EXPECT_EQ(manifest.image_length - offsetof(manifest_t, image_length),
signed_region.length);
}
TEST(Manifest, SignedRegionGetBadLength) {
manifest_t manifest{};
manifest_signed_region_t signed_region;
manifest.image_length = kManifestImageLengthMax + 1;
EXPECT_EQ(manifest_signed_region_get(&manifest, &signed_region),
kErrorManifestInternal);
manifest.image_length = kManifestImageLengthMin - 1;
EXPECT_EQ(manifest_signed_region_get(&manifest, &signed_region),
kErrorManifestInternal);
}
TEST(Manifest, EntryPointGet) {
manifest_t manifest{};
// FIXME: Update after `entry_point` field is added.
EXPECT_EQ(manifest_entry_point_address_get(&manifest),
reinterpret_cast<uintptr_t>(&manifest) + 1152);
}
} // namespace
} // namespace manifest_unittest