All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Support mocked SPI transaction errors (#131)
- Drop fixed MSRV policy (#124)
- Breaking: the
eh0feature is no longer part of the default features. it still exists as an optional feature and has to be explicitly added when needed. - Breaking: Switch to
embedded_hal::digital::ErrorKind(replaces previous typeeh1::MockError) foreh1::digital::Transactions. (#132)
This release only includes a documentation fix (with regards to default-enabled Cargo features), but no code changes.
This release adds support for various async APIs as defined in
embedded-hal-async. To use these features, you need to enable the
embedded-hal-async Cargo feature.
If you're upgrading from an earlier version, please note that the pin module
was renamed to digital to match embedded-hal.
- Add
ToggleableOutputPinsupport foreh0::digital::Mock(#89) - Add
StatefulOutputPinsupport foreh1::digital::Mock(#89) - Async support for
eh1::i2c::Mock(#119) - Async support for
eh1::digital::Mock(#91) - Async delay for
NoopDelay/StdSleep(#104) - New
CheckedDelaymock that supports both sync and async delays (#104)
- Rename
pinmodule todigitalto match embedded-hal (#113) - Improve top level usage docs (#117)
This release contains a big change: embedded-hal-mock now supports both
embedded-hal 0.x and 1.x! The two variants are accessible through
embedded_hal_mock::eh0::* and embedded_hal_mock::eh1::*. If there are any
issues, leave feedback in the GitHub issue tracker.
Additionally, tests now fail if you forgot to call .done(). This should
reduce the chance of accidentally writing a broken test.
This release contains commits by 12 different people, thanks a lot for the contributions!
- Update your imports: Change
use embedded_hal_mock::*touse embedded_hal_mock::eh0::* - Rename all
.expect(...)calls on mocks to.update_expectations(...) - Rename all
eh0::delay::MockNoopusages toeh0::delay::NoopDelay - Run your tests to ensure that you don't have any missing
.done()calls in your code - Look through the rest of the changes below and check if they might affect your code
- Support for both
embedded-hal0.x and 1.x in the same crate (#75) - Print a warning to stderr and fail test if a mock is dropped without having
calling
.done()on it, or if.done()is called twice (#59, #61) - Implement mock for
eh1::pwm::SetDutyCycle
Genericmock: Fix a bug that caused the call to.done()to fail if.next()was called on the mock after all expectations have already been consumed (#58)- Fix assertion error message for SPI
transferandtransfer_in_place(#90)
- Renamed
.expect(...)method to.update_expectations(...)to avoid confusion with the expect method inOptionandResult(#63) - When updating expectations on a mock by calling
.expect(...)/.update_expectations(...)on it, assert that previous expectations have been consumed (#63) - Rename
delay::MockNooptodelay::NoopDelay. - Changed the eh1 SPI implementation to be generic over word size
- Updated
nbdependency from 0.1 to 1.1 (#107) - Bump minimal supported Rust version (MSRV) to 1.63 (or 1.75 if you use embedded-hal 1.0)
- The minimal supported Rust version (MSRV) is specified in the
Cargo.tomlto offer clearer error messages to consumers with outdated Rust versions
- Implement
WriteIterandWriteIterReadfor i2c mock (#44) - Implement
PwmPinfor pin mock (#52) - Add mock for timers using embedded-time with nanosecond precision (#40)
- Bump minimal supported Rust version (MSRV) to 1.60
- Switch to Rust 2021 edition (#55)
- Switch from CircleCI to GitHub Actions (#50)
- Add one-shot ADC mock (#38)
- Implement
std::Errortrait forMockError(#31) - serial: Implement error expectations (#32)
- i2c: Implement error expectations (#29)
- Fix link to digital pin docs (#28)
- The serial transaction API now has two new constructor methods:
read_manyandwrite_many.
- The serial transaction API changed: The
Transaction::writefunction now expects a single word, not a collection of words. To add a transaction for many writes, useTransaction::write_manyinstead.
- Make the serial mock actually cloneable
- Add serial device mock (#21)
- Add InputPin and OutputPin mocks (#18)
MockError::Ionow wraps anio::ErrorKindinstance instead ofio::Error.
- SPI: Add support for non-blocking
FullDuplexmode (#14)
- Require Rust 1.31+
- Apply and enforce rustfmt
- Add
StdSleepdelay implementation based onstd::thread::sleep(#8) - Add
new()methods toMockNoopandStdSleep
- Fix error messages for unfulfilled I²C expectations (#12)
- I²C mock has a new transaction based API, matching the SPI mock (#4)
- SPI mock implementation (#2)
- Set up CI (#3)
- Restructure crate:
I2cMockis now ati2c::MockDelayMockNoopis now atdelay::MockNoop
- Move all docs into crate docs (so it can be tested)
- Upgrade to
embedded-hal0.2.
Initial release on crates.io.