|
constexpr | MockInitiator (span< Transaction > transaction_list) |
|
Status | Finalize () const |
|
| ~MockInitiator () override |
|
constexpr | Initiator () |
|
constexpr | Initiator (Feature supported_features) |
|
Status | WriteReadFor (Address device_address, ConstByteSpan tx_buffer, ByteSpan rx_buffer, chrono::SystemClock::duration timeout) |
|
Status | TransferFor (span< const Message > messages, chrono::SystemClock::duration timeout) |
|
Status | WriteReadFor (Address device_address, const void *tx_buffer, size_t tx_size_bytes, void *rx_buffer, size_t rx_size_bytes, chrono::SystemClock::duration timeout) |
|
Status | WriteFor (Address device_address, ConstByteSpan tx_buffer, chrono::SystemClock::duration timeout) |
|
Status | WriteFor (Address device_address, const void *tx_buffer, size_t tx_size_bytes, chrono::SystemClock::duration timeout) |
|
Status | ReadFor (Address device_address, ByteSpan rx_buffer, chrono::SystemClock::duration timeout) |
|
Status | ReadFor (Address device_address, void *rx_buffer, size_t rx_size_bytes, chrono::SystemClock::duration timeout) |
|
Status | ProbeDeviceFor (Address device_address, chrono::SystemClock::duration timeout) |
|
A generic mocked backend for pw::i2c::Initiator
that's specifically designed to make it easier to develop I2C device drivers. pw::i2c::MockInitiator
compares actual I2C transactions against expected transactions. The expected transactions are represented as a list of pw::i2c::Transaction
instances that are passed as arguments in the pw::i2c::MockInitiator
constructor. Each consecutive call to pw::i2c::MockInitiator
iterates to the next expected transaction. pw::i2c::MockInitiator::Finalize()
indicates whether the actual transactions matched the expected transactions.
pw::i2c::MockInitiator
is intended to be used within GoogleTest tests. See
embed:rst:inline :ref:`module-pw_unit_test`
.
#include <chrono>
#include "pw_bytes/array.h"
#include "pw_i2c/address.h"
#include "pw_i2c/initiator_mock.h"
#include "pw_result/result.h"
#include "pw_unit_test/framework.h"
using namespace std::chrono_literals;
namespace {
TEST(I2CTestSuite, I2CWriteTestCase) {
pw::i2c::Address::SevenBit<0x01>(); constexpr auto kExpectedWrite =
pw::bytes::Array<1, 2, 3>(); auto expected_transactions =
pw::i2c::MakeExpectedTransactionArray(
{pw::i2c::WriteTransaction(
pw::OkStatus(), kAddress, kExpectedWrite,
1ms)}
);
pw::ConstByteSpan kActualWrite = pw::bytes::Array<1, 2, 3>();
pw::Status status = initiator.WriteFor(kAddress, kActualWrite, 1ms);
}
}
Definition: initiator_mock.h:172
constexpr Status OkStatus()
Definition: status.h:234