C/C++ API Reference
Loading...
Searching...
No Matches
initiator_mock.h
1// Copyright 2022 The Pigweed Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License"); you may not
4// use this file except in compliance with the License. You may obtain a copy of
5// the License at
6//
7// https://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12// License for the specific language governing permissions and limitations under
13// the License.
14
15#pragma once
16
17#include <array>
18#include <cstddef>
19#include <optional>
20
21#include "pw_bytes/span.h"
22#include "pw_containers/to_array.h"
23#include "pw_spi/initiator.h"
24
25namespace pw::spi {
26
28
37 public:
39 constexpr MockTransaction(Status expected_return_value,
42 : return_value_(expected_return_value),
43 read_buffer_(read_buffer),
44 write_buffer_(write_buffer) {}
45
47 ConstByteSpan read_buffer() const { return read_buffer_; }
48
50 ConstByteSpan write_buffer() const { return write_buffer_; }
51
53 Status return_value() const { return return_value_; }
54
55 private:
56 const Status return_value_;
57 const ConstByteSpan read_buffer_;
58 const ConstByteSpan write_buffer_;
59};
60
62constexpr MockTransaction MockReadTransaction(Status expected_return_value,
63 ConstByteSpan read_buffer) {
64 return MockTransaction(expected_return_value, ConstByteSpan(), read_buffer);
65}
66
68constexpr MockTransaction MockWriteTransaction(Status expected_return_value,
69 ConstByteSpan write_buffer) {
70 return MockTransaction(expected_return_value, write_buffer, ConstByteSpan());
71}
72
80 public:
81 explicit constexpr MockInitiator(span<MockTransaction> transaction_list)
82 : expected_transactions_(transaction_list),
83 expected_transaction_index_(0) {}
84
90 Status Finalize() const {
91 if (expected_transaction_index_ != expected_transactions_.size()) {
92 return Status::OutOfRange();
93 }
94 return Status();
95 }
96
98 ~MockInitiator() override;
99
100 private:
101 span<MockTransaction> expected_transactions_;
102 size_t expected_transaction_index_;
103
118
119 pw::Status DoConfigure(const pw::spi::Config& /*config */) override {
120 return pw::OkStatus();
121 }
122};
123
125template <size_t kSize>
126constexpr std::array<MockTransaction, kSize> MakeExpectedTransactionArray(
127 const MockTransaction (&transactions)[kSize]) {
128 return containers::to_array(transactions);
129}
130
131} // namespace pw::spi
Definition: status.h:109
static constexpr Status OutOfRange()
Operation attempted out of range; e.g. seeking past end of file.
Definition: status.h:172
Definition: initiator.h:106
Definition: initiator_mock.h:79
Definition: initiator_mock.h:36
constexpr std::array< std::remove_cv_t< T >, kSize > to_array(T(&values)[kSize])
Definition: to_array.h:55
constexpr std::array< MockTransaction, kSize > MakeExpectedTransactionArray(const MockTransaction(&transactions)[kSize])
Makes a new SPI transactions list.
Definition: initiator_mock.h:126
pw::Status DoWriteRead(pw::ConstByteSpan, pw::ByteSpan) override
constexpr MockTransaction(Status expected_return_value, ConstByteSpan write_buffer, ConstByteSpan read_buffer)
Same set of parameters as Initiator::WriteRead().
Definition: initiator_mock.h:39
ConstByteSpan write_buffer() const
Gets the buffer that should be written by the driver.
Definition: initiator_mock.h:50
Status return_value() const
Gets the expected return value.
Definition: initiator_mock.h:53
Status Finalize() const
Definition: initiator_mock.h:90
~MockInitiator() override
Runs Finalize() regardless of whether it was already optionally finalized.
constexpr MockTransaction MockReadTransaction(Status expected_return_value, ConstByteSpan read_buffer)
A helper that constructs a read only transaction.
Definition: initiator_mock.h:62
ConstByteSpan read_buffer() const
Gets the buffer that is virtually read.
Definition: initiator_mock.h:47
constexpr MockTransaction MockWriteTransaction(Status expected_return_value, ConstByteSpan write_buffer)
A helper that constructs a write only transaction.
Definition: initiator_mock.h:68
constexpr Status OkStatus()
Definition: status.h:297
Definition: initiator.h:67