Software APIs
boot_svc_next_boot_bl0_slot_unittest.cc
1 // Copyright lowRISC contributors (OpenTitan project).
2 // Licensed under the Apache License, Version 2.0, see LICENSE for details.
3 // SPDX-License-Identifier: Apache-2.0
4 
5 #include "sw/device/silicon_creator/lib/boot_svc/boot_svc_next_boot_bl0_slot.h"
6 
7 #include "gtest/gtest.h"
8 #include "sw/device/silicon_creator/lib/boot_data.h"
9 #include "sw/device/silicon_creator/lib/boot_svc/mock_boot_svc_header.h"
10 #include "sw/device/silicon_creator/testing/rom_test.h"
11 
12 namespace boot_svc_next_boot_bl0_slot_unittest {
13 namespace {
14 
16  protected:
17  rom_test::MockBootSvcHeader boot_svc_header_;
18 };
19 
20 TEST_F(BootSvcNextBootBl0SlotTest, ReqInit) {
22  constexpr uint32_t kPrimarySlot = kBootSlotA;
23  constexpr uint32_t kNextSlot = kBootSlotB;
24  EXPECT_CALL(boot_svc_header_,
25  Finalize(kBootSvcNextBl0SlotReqType, sizeof(msg), &msg.header));
26 
27  boot_svc_next_boot_bl0_slot_req_init(kPrimarySlot, kNextSlot, &msg);
28 
29  EXPECT_EQ(msg.next_bl0_slot, kNextSlot);
30  EXPECT_EQ(msg.primary_bl0_slot, kPrimarySlot);
31 }
32 
33 TEST_F(BootSvcNextBootBl0SlotTest, ResInit) {
35  constexpr rom_error_t kStatus = kErrorOk;
36  constexpr uint32_t kPrimarySlot = kBootSlotA;
37  EXPECT_CALL(boot_svc_header_,
38  Finalize(kBootSvcNextBl0SlotResType, sizeof(msg), &msg.header));
39 
40  boot_svc_next_boot_bl0_slot_res_init(kStatus, kPrimarySlot, &msg);
41 
42  EXPECT_EQ(msg.status, kStatus);
43  EXPECT_EQ(msg.primary_bl0_slot, kPrimarySlot);
44 }
45 
46 } // namespace
47 } // namespace boot_svc_next_boot_bl0_slot_unittest