mirror of
https://github.com/hathach/tinyusb.git
synced 2025-05-09 07:11:16 +08:00
add ASSERT_INT, ASSERT_INT_EQUAL and test code for it
This commit is contained in:
parent
463b1c0294
commit
1deac98969
@ -35,6 +35,7 @@
|
|||||||
* This file is part of the tiny usb stack.
|
* This file is part of the tiny usb stack.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include "unity.h"
|
#include "unity.h"
|
||||||
@ -48,15 +49,41 @@ void tearDown(void)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_assert_true(void)
|
//--------------------------------------------------------------------+
|
||||||
|
// Logical
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
void test_assert_logical_true(void)
|
||||||
{
|
{
|
||||||
ASSERT (true , (void)0 );
|
ASSERT (true , (void)0 );
|
||||||
ASSERT_TRUE (true , (void)0 );
|
ASSERT_TRUE (true , (void)0 );
|
||||||
|
|
||||||
ASSERT_TRUE (false , (void)0 );
|
ASSERT_TRUE (false , (void)0 );
|
||||||
|
TEST_FAIL();
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_assert_false(void)
|
void test_assert_logical_false(void)
|
||||||
{
|
{
|
||||||
ASSERT_FALSE(false , (void)0 );
|
ASSERT_FALSE(false , (void)0 );
|
||||||
ASSERT_FALSE(true , (void)0 );
|
ASSERT_FALSE(true , (void)0 );
|
||||||
|
|
||||||
|
TEST_FAIL();
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// Integer
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
void test_assert_int_eqal(void)
|
||||||
|
{
|
||||||
|
ASSERT_INT (1, 1, (void) 0);
|
||||||
|
ASSERT_INT_EQUAL (1, 1, (void) 0);
|
||||||
|
|
||||||
|
uint32_t x = 0;
|
||||||
|
uint32_t y = 0;
|
||||||
|
ASSERT_INT (x++, y++, (void) 0); // test side effect
|
||||||
|
TEST_ASSERT_EQUAL(1, x);
|
||||||
|
TEST_ASSERT_EQUAL(1, y);
|
||||||
|
|
||||||
|
ASSERT_INT(0, 1, (void) 0);
|
||||||
|
|
||||||
|
TEST_FAIL();
|
||||||
}
|
}
|
||||||
|
@ -72,9 +72,10 @@ extern "C"
|
|||||||
#define ASSERT_FUNCTION __PRETTY_FUNCTION__
|
#define ASSERT_FUNCTION __PRETTY_FUNCTION__
|
||||||
//#define ASSERT_STATEMENT _PRINTF("Assert at %s line %d: %s %s\n", ASSERT_FILENAME, ASSERT_FUNCTION, __LINE__);
|
//#define ASSERT_STATEMENT _PRINTF("Assert at %s line %d: %s %s\n", ASSERT_FILENAME, ASSERT_FUNCTION, __LINE__);
|
||||||
#define ASSERT_STATEMENT _PRINTF("assert at %s: %s :%d :\n", ASSERT_FILENAME, ASSERT_FUNCTION, __LINE__)
|
#define ASSERT_STATEMENT _PRINTF("assert at %s: %s :%d :\n", ASSERT_FILENAME, ASSERT_FUNCTION, __LINE__)
|
||||||
#define ASSERT_DEFINE(ASSERT_TEST, error, format, __VA_ARGS__) \
|
#define ASSERT_DEFINE(setup_statement, condition, error, format, ...) \
|
||||||
do{\
|
do{\
|
||||||
if (!(ASSERT_TEST)) {\
|
setup_statement;\
|
||||||
|
if (!(condition)) {\
|
||||||
_PRINTF("Assert at %s: %s:%d: " format "\n", ASSERT_FILENAME, ASSERT_FUNCTION, __LINE__, __VA_ARGS__);\
|
_PRINTF("Assert at %s: %s:%d: " format "\n", ASSERT_FILENAME, ASSERT_FUNCTION, __LINE__, __VA_ARGS__);\
|
||||||
return error;\
|
return error;\
|
||||||
}\
|
}\
|
||||||
@ -97,23 +98,18 @@ extern "C"
|
|||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// Logical Assert
|
// Logical Assert
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
#define TEST_TRUE(condition) (condition)
|
#define ASSERT(...) ASSERT_TRUE(__VA_ARGS__)
|
||||||
#define TEST_FALSE(condition) (!condition)
|
#define ASSERT_TRUE(condition , error ) ASSERT_DEFINE( ,(condition), error, "%s", "evaluated to false")
|
||||||
|
#define ASSERT_FALSE(condition , error ) ASSERT_DEFINE( ,!(condition), error, "%s", "evaluated to true")
|
||||||
#define ASSERT(condition, error ) ASSERT_TRUE(condition, error)
|
|
||||||
#define ASSERT_TRUE(condition, error ) ASSERT_DEFINE(TEST_TRUE(condition), error, "%s", "evaluated to false")
|
|
||||||
#define ASSERT_FALSE(condition, error ) ASSERT_DEFINE(TEST_FALSE(condition), error, "%s", "evaluated to true")
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// Integer Assert
|
// Integer Assert
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
#define TEST_INT_EQUAL
|
#define TEST_INT_EQUAL
|
||||||
|
|
||||||
#define ASSERT_INT(expected, actual) ASSERT_INT_EQUAL(expected, actual)
|
#define ASSERT_INT(...) ASSERT_INT_EQUAL(__VA_ARGS__)
|
||||||
#define ASSERT_INT_EQUAL(expected, actual) \
|
#define ASSERT_INT_EQUAL(expected, actual, error) \
|
||||||
uint32 exp = (expected);\
|
ASSERT_DEFINE( uint32_t exp = (expected); uint32_t act = (actual), exp==act, error, "expected %d, actual %d", exp, act)
|
||||||
uint32 act = (actual);\
|
|
||||||
ASSERT_DEFINE(TEST_INT_EQUAL(condition), error, "expected %d, actual %d", exp, act)
|
|
||||||
|
|
||||||
#define ASSERT_INT_WITHIN(lower, upper, actual)
|
#define ASSERT_INT_WITHIN(lower, upper, actual)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user