xref: /openbmc/phosphor-ipmi-blobs/test/helper.cpp (revision e0c41de4cc07a3e72046c658a9b8da9410f9a8fa)
1067ece15SWilly Tu #include "helper.hpp"
2067ece15SWilly Tu 
3067ece15SWilly Tu #include <ipmid/api-types.hpp>
452509572SPatrick Williams 
5067ece15SWilly Tu #include <optional>
6067ece15SWilly Tu #include <span>
7067ece15SWilly Tu #include <tuple>
8067ece15SWilly Tu #include <utility>
9067ece15SWilly Tu #include <vector>
10067ece15SWilly Tu 
11067ece15SWilly Tu #include <gtest/gtest.h>
12067ece15SWilly Tu 
13067ece15SWilly Tu namespace blobs
14067ece15SWilly Tu {
validateReply(ipmi::RspType<std::vector<uint8_t>> reply,bool hasData)15*e0c41de4SPatrick Williams std::vector<std::uint8_t> validateReply(
16*e0c41de4SPatrick Williams     ipmi::RspType<std::vector<uint8_t>> reply, bool hasData)
17067ece15SWilly Tu {
18067ece15SWilly Tu     // Reply is in the form of
19067ece15SWilly Tu     // std::tuple<ipmi::Cc, std::optional<std::tuple<RetTypes...>>>
20067ece15SWilly Tu     EXPECT_EQ(::ipmi::ccSuccess, std::get<0>(reply));
21067ece15SWilly Tu 
22067ece15SWilly Tu     auto actualReply = std::get<1>(reply);
23067ece15SWilly Tu     EXPECT_TRUE(actualReply.has_value());
247509f4e1SWilly Tu     if (!actualReply.has_value())
257509f4e1SWilly Tu         return std::vector<uint8_t>{};
26067ece15SWilly Tu 
27067ece15SWilly Tu     auto data = std::get<0>(*actualReply);
28067ece15SWilly Tu     EXPECT_EQ(hasData, !data.empty());
29067ece15SWilly Tu 
30067ece15SWilly Tu     return hasData ? data : std::vector<uint8_t>{};
31067ece15SWilly Tu }
32067ece15SWilly Tu 
33067ece15SWilly Tu } // namespace blobs
34