mbed-os/features/frameworks/unity
Jamie Smith 5b28f5bc96
Rethink STM32 I2C v2 HAL (#78)
* Initial attempt at rethinking the STM32 I2C v2 HAL.  Makes single-byte work properly and adds a new 'state' variable to track what the hardware is doing.

* Fix some initial test failures

* Fix incorrect logic

* Fix more incorrect logic

* Tabs to spaces

* Fix repeated starts with single-byte API

* Fix race condition causing stop() after nacked address to sometimes break things

* Fix missed i2c structs that should have been removed

* Fix doing a repeated start from single-byte to transaction API causing I2C peripheral to lock up

* Fix xferOperation being set wrong for repeated starts, causing the peripheral to hang

* Fix race condition with repeated start after single-byte operation

* Fix compilation for targets that use I2C IP v1

* Fix initialization of XferOperation for API v1, optimize stop()

* Remove unneeded line

* Add docs for I2C events
2022-11-20 17:46:30 -08:00
..
source Rethink STM32 I2C v2 HAL (#78) 2022-11-20 17:46:30 -08:00
unity Tests: Remove support for ARM Compiler 5 2020-03-25 18:22:00 +00:00
CHANGELOG.md Adding test frameworks and test sources 2016-07-20 12:41:26 -05:00
CMakeLists.txt - Split mbed-core and mbed-rtos into -sources and -flags targets 2022-09-14 00:25:25 -07:00
README.md Remove outdated text and fix spelling in README.md 2019-01-24 15:29:09 -06:00
license.txt Adding test frameworks and test sources 2016-07-20 12:41:26 -05:00
mbed_lib.json Add placeholder libraries for things we probably refer to as libraries 2019-01-16 14:58:58 -06:00

README.md

UNITY: Unit Testing for C

This module is a fork of the UNITY test framework with minor modifications to be able to use it with the utest harness for Mbed OS.

Please note that this module only contains the unity test macros, and no additions such as the unity fixtures. Furthermore the failure macros have been modified to integrate with utest failure handlers, as setjmp and longjmp are not supported by utest.

Specifically

  • UNITY_FAIL_AND_BAIL calls utest_unity_assert_failure(), and
  • UNITY_IGNORE_AND_BAIL calls utest_unity_ignore_failure()

which then invoke the appropriate action in utest.

To use these macros you need to depend on both unity and utest!

For the original documentation of UNITY, please visit the project's homepage.

Macros

UNITY provides a lot of test macros.

Be aware of the macro argument order: (EXPECTED VALUE, ACTUAL VALUE).
So TEST_ASSERT_EQUAL(4, value); is the right way around.

Note, that you can provide a custom failure message by appending _MESSAGE to any macro and passing the message string as the last argument.

Generic:

  • TEST_FAIL()
  • TEST_IGNORE()
  • TEST_ONLY()

Boolean:

  • TEST_ASSERT(condition)
  • TEST_ASSERT_TRUE(condition)
  • TEST_ASSERT_UNLESS(condition)
  • TEST_ASSERT_FALSE(condition)

Pointer:

  • TEST_ASSERT_NULL(pointer)
  • TEST_ASSERT_NOT_NULL(pointer)

Equality:

  • TEST_ASSERT_EQUAL(expected, actual)
  • TEST_ASSERT_NOT_EQUAL(expected, actual)
  • TEST_ASSERT_EQUAL_INT(expected, actual)
  • TEST_ASSERT_EQUAL_INT8(expected, actual)
  • TEST_ASSERT_EQUAL_INT16(expected, actual)
  • TEST_ASSERT_EQUAL_INT32(expected, actual)
  • TEST_ASSERT_EQUAL_INT64(expected, actual)
  • TEST_ASSERT_EQUAL_UINT(expected, actual)
  • TEST_ASSERT_EQUAL_UINT8(expected, actual)
  • TEST_ASSERT_EQUAL_UINT16(expected, actual)
  • TEST_ASSERT_EQUAL_UINT32(expected, actual)
  • TEST_ASSERT_EQUAL_UINT64(expected, actual)
  • TEST_ASSERT_EQUAL_HEX(expected, actual)
  • TEST_ASSERT_EQUAL_HEX8(expected, actual)
  • TEST_ASSERT_EQUAL_HEX16(expected, actual)
  • TEST_ASSERT_EQUAL_HEX32(expected, actual)
  • TEST_ASSERT_EQUAL_HEX64(expected, actual)

Bit Masks:

  • TEST_ASSERT_BITS(mask, expected, actual)
  • TEST_ASSERT_BITS_HIGH(mask, actual)
  • TEST_ASSERT_BITS_LOW(mask, actual)
  • TEST_ASSERT_BIT_HIGH(bit, actual)
  • TEST_ASSERT_BIT_LOW(bit, actual)

Deltas:

  • TEST_ASSERT_INT_WITHIN(delta, expected, actual)
  • TEST_ASSERT_INT8_WITHIN(delta, expected, actual)
  • TEST_ASSERT_INT16_WITHIN(delta, expected, actual)
  • TEST_ASSERT_INT32_WITHIN(delta, expected, actual)
  • TEST_ASSERT_INT64_WITHIN(delta, expected, actual)
  • TEST_ASSERT_UINT_WITHIN(delta, expected, actual)
  • TEST_ASSERT_UINT8_WITHIN(delta, expected, actual)
  • TEST_ASSERT_UINT16_WITHIN(delta, expected, actual)
  • TEST_ASSERT_UINT32_WITHIN(delta, expected, actual)
  • TEST_ASSERT_UINT64_WITHIN(delta, expected, actual)
  • TEST_ASSERT_HEX_WITHIN(delta, expected, actual)
  • TEST_ASSERT_HEX8_WITHIN(delta, expected, actual)
  • TEST_ASSERT_HEX16_WITHIN(delta, expected, actual)
  • TEST_ASSERT_HEX32_WITHIN(delta, expected, actual)
  • TEST_ASSERT_HEX64_WITHIN(delta, expected, actual)

Memory:

  • TEST_ASSERT_EQUAL_PTR(expected, actual)
  • TEST_ASSERT_EQUAL_STRING(expected, actual)
  • TEST_ASSERT_EQUAL_STRING_LEN(expected, actual, len)
  • TEST_ASSERT_EQUAL_MEMORY(expected, actual, len)

Array:

  • TEST_ASSERT_EQUAL_INT_ARRAY(expected, actual, num_elements)
  • TEST_ASSERT_EQUAL_INT8_ARRAY(expected, actual, num_elements)
  • TEST_ASSERT_EQUAL_INT16_ARRAY(expected, actual, num_elements)
  • TEST_ASSERT_EQUAL_INT32_ARRAY(expected, actual, num_elements)
  • TEST_ASSERT_EQUAL_INT64_ARRAY(expected, actual, num_elements)
  • TEST_ASSERT_EQUAL_UINT_ARRAY(expected, actual, num_elements)
  • TEST_ASSERT_EQUAL_UINT8_ARRAY(expected, actual, num_elements)
  • TEST_ASSERT_EQUAL_UINT16_ARRAY(expected, actual, num_elements)
  • TEST_ASSERT_EQUAL_UINT32_ARRAY(expected, actual, num_elements)
  • TEST_ASSERT_EQUAL_UINT64_ARRAY(expected, actual, num_elements)
  • TEST_ASSERT_EQUAL_HEX_ARRAY(expected, actual, num_elements)
  • TEST_ASSERT_EQUAL_HEX8_ARRAY(expected, actual, num_elements)
  • TEST_ASSERT_EQUAL_HEX16_ARRAY(expected, actual, num_elements)
  • TEST_ASSERT_EQUAL_HEX32_ARRAY(expected, actual, num_elements)
  • TEST_ASSERT_EQUAL_HEX64_ARRAY(expected, actual, num_elements)
  • TEST_ASSERT_EQUAL_PTR_ARRAY(expected, actual, num_elements)
  • TEST_ASSERT_EQUAL_STRING_ARRAY(expected, actual, num_elements)
  • TEST_ASSERT_EQUAL_MEMORY_ARRAY(expected, actual, len, num_elements)

Single Precision Floating Point:

  • TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual)
  • TEST_ASSERT_EQUAL_FLOAT(expected, actual)
  • TEST_ASSERT_EQUAL_FLOAT_ARRAY(expected, actual, num_elements)
  • TEST_ASSERT_FLOAT_IS_INF(actual)
  • TEST_ASSERT_FLOAT_IS_NEG_INF(actual)
  • TEST_ASSERT_FLOAT_IS_NAN(actual)
  • TEST_ASSERT_FLOAT_IS_DETERMINATE(actual)
  • TEST_ASSERT_FLOAT_IS_NOT_INF(actual)
  • TEST_ASSERT_FLOAT_IS_NOT_NEG_INF(actual)
  • TEST_ASSERT_FLOAT_IS_NOT_NAN(actual)
  • TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(actual)

Double Precision Floating Point:

  • TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual)
  • TEST_ASSERT_EQUAL_DOUBLE(expected, actual)
  • TEST_ASSERT_EQUAL_DOUBLE_ARRAY(expected, actual, num_elements)
  • TEST_ASSERT_DOUBLE_IS_INF(actual)
  • TEST_ASSERT_DOUBLE_IS_NEG_INF(actual)
  • TEST_ASSERT_DOUBLE_IS_NAN(actual)
  • TEST_ASSERT_DOUBLE_IS_DETERMINATE(actual)
  • TEST_ASSERT_DOUBLE_IS_NOT_INF(actual)
  • TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF(actual)
  • TEST_ASSERT_DOUBLE_IS_NOT_NAN(actual)
  • TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE(actual)