1a2056e9cSWilly Tu // Copyright 2021 Google LLC
2a2056e9cSWilly Tu //
3a2056e9cSWilly Tu // Licensed under the Apache License, Version 2.0 (the "License");
4a2056e9cSWilly Tu // you may not use this file except in compliance with the License.
5a2056e9cSWilly Tu // You may obtain a copy of the License at
6a2056e9cSWilly Tu //
7a2056e9cSWilly Tu //      http://www.apache.org/licenses/LICENSE-2.0
8a2056e9cSWilly Tu //
9a2056e9cSWilly Tu // Unless required by applicable law or agreed to in writing, software
10a2056e9cSWilly Tu // distributed under the License is distributed on an "AS IS" BASIS,
11a2056e9cSWilly Tu // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12a2056e9cSWilly Tu // See the License for the specific language governing permissions and
13a2056e9cSWilly Tu // limitations under the License.
14a2056e9cSWilly Tu 
153b1b427cSWilly Tu #include "commands.hpp"
163b1b427cSWilly Tu #include "flash_size.hpp"
173b1b427cSWilly Tu #include "handler_mock.hpp"
18*ff3cd8e9SWilly Tu #include "helper.hpp"
193b1b427cSWilly Tu 
203b1b427cSWilly Tu #include <cstdint>
213b1b427cSWilly Tu #include <cstring>
223b1b427cSWilly Tu #include <string>
233b1b427cSWilly Tu #include <vector>
243b1b427cSWilly Tu 
253b1b427cSWilly Tu #include <gtest/gtest.h>
263b1b427cSWilly Tu 
273b1b427cSWilly Tu using ::testing::Return;
283b1b427cSWilly Tu 
293b1b427cSWilly Tu namespace google
303b1b427cSWilly Tu {
313b1b427cSWilly Tu namespace ipmi
323b1b427cSWilly Tu {
333b1b427cSWilly Tu 
TEST(FlashSizeCommandTest,ValidRequest)343b1b427cSWilly Tu TEST(FlashSizeCommandTest, ValidRequest)
353b1b427cSWilly Tu {
36*ff3cd8e9SWilly Tu     std::vector<std::uint8_t> request = {};
373b1b427cSWilly Tu     uint32_t flashSize = 5422312; // 0x52BCE8
383b1b427cSWilly Tu 
393b1b427cSWilly Tu     HandlerMock hMock;
403b1b427cSWilly Tu     EXPECT_CALL(hMock, getFlashSize()).WillOnce(Return(flashSize));
41*ff3cd8e9SWilly Tu 
42*ff3cd8e9SWilly Tu     auto reply = getFlashSize(request, &hMock);
43*ff3cd8e9SWilly Tu     auto result = ValidateReply(reply);
44*ff3cd8e9SWilly Tu     auto& data = result.second;
45*ff3cd8e9SWilly Tu 
46*ff3cd8e9SWilly Tu     EXPECT_EQ(sizeof(struct GetFlashSizeReply), data.size());
47*ff3cd8e9SWilly Tu     EXPECT_EQ(SysOEMCommands::SysGetFlashSize, result.first);
48*ff3cd8e9SWilly Tu     EXPECT_EQ(0, data[3]);
49*ff3cd8e9SWilly Tu     EXPECT_EQ(0x52, data[2]);
50*ff3cd8e9SWilly Tu     EXPECT_EQ(0xBC, data[1]);
51*ff3cd8e9SWilly Tu     EXPECT_EQ(0xE8, data[0]);
523b1b427cSWilly Tu }
533b1b427cSWilly Tu 
543b1b427cSWilly Tu } // namespace ipmi
553b1b427cSWilly Tu } // namespace google
56