Software APIs
boot_svc_empty_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_empty.h"
6 
7 #include <array>
8 #include <cstring>
9 #include <numeric>
10 
11 #include "gtest/gtest.h"
12 #include "sw/device/silicon_creator/lib/boot_svc/mock_boot_svc_header.h"
13 #include "sw/device/silicon_creator/testing/rom_test.h"
14 
15 bool operator==(boot_svc_empty_t lhs, boot_svc_empty_t rhs) {
16  return std::memcmp(&lhs, &rhs, sizeof(boot_svc_empty_t)) == 0;
17 }
18 
19 namespace boot_svc_empty_unittest {
20 namespace {
21 using ::testing::ElementsAreArray;
22 using ::testing::Return;
23 
25  protected:
26  rom_test::MockBootSvcHeader boot_svc_header_;
27 };
28 
29 TEST_F(BootSvcEmptyTest, Init) {
30  std::array<uint32_t, kBootSvcEmptyPayloadWordCount> payload{0};
31 
32  boot_svc_empty_t msg{};
33  EXPECT_CALL(boot_svc_header_,
34  Finalize(kBootSvcEmptyReqType, sizeof(msg), &msg.header));
35 
36  boot_svc_empty_req_init(&msg);
37 
38  EXPECT_THAT(msg.payload, ElementsAreArray(payload));
39 }
40 
41 } // namespace
42 } // namespace boot_svc_empty_unittest