mirror of
https://github.com/FreeRTOS/FreeRTOS.git
synced 2026-09-21 10:33:55 +08:00
Add event_groups.c Unit Test (#536)
* Added event_groups.c Unit Test. * Formatted and more comments. * Formatted * Split some test cases and add comment and coverage tag. * Update test cases. * Remove xEventGroupDelete Invalid Input test case, since the implementation does not handle this.
This commit is contained in:
@@ -7,11 +7,12 @@ export CC ?= /usr/local/bin/gcc
|
||||
export LD ?= /usr/local/bin/ld
|
||||
|
||||
# Add units here when adding a new unit test directory with the same name
|
||||
UNITS += list
|
||||
#UNITS += list
|
||||
#UNITS += queue
|
||||
#UNITS += timers
|
||||
UNITS += stream_buffer
|
||||
UNITS += message_buffer
|
||||
#UNITS += timers
|
||||
#UNITS += stream_buffer
|
||||
#UNITS += message_buffer
|
||||
UNITS += event_groups
|
||||
|
||||
COVINFO := $(BUILD_DIR)/cmock_test.info
|
||||
LCOV_LIST := $(foreach unit,$(UNITS),$(GENERATED_DIR)/$(unit).info )
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
# indent with spaces
|
||||
.RECIPEPREFIX := $(.RECIPEPREFIX) $(.RECIPEPREFIX)
|
||||
|
||||
# Do not move this line below the include
|
||||
MAKEFILE_ABSPATH := $(abspath $(lastword $(MAKEFILE_LIST)))
|
||||
include ../makefile.in
|
||||
|
||||
# PROJECT_SRC lists the .c files under test
|
||||
PROJECT_SRC := event_groups.c
|
||||
|
||||
# PROJECT_DEPS_SRC list the .c file that are dependencies of PROJECT_SRC files
|
||||
# Files in PROJECT_DEPS_SRC are excluded from coverage measurements
|
||||
PROJECT_DEPS_SRC :=
|
||||
|
||||
# PROJECT_HEADER_DEPS: headers that should be excluded from coverage measurements.
|
||||
PROJECT_HEADER_DEPS := FreeRTOS.h
|
||||
|
||||
# SUITE_UT_SRC: .c files that contain test cases (must end in _utest.c)
|
||||
SUITE_UT_SRC := event_groups_utest.c
|
||||
|
||||
# SUITE_SUPPORT_SRC: .c files used for testing that do not contain test cases.
|
||||
# Paths are relative to PROJECT_DIR
|
||||
SUITE_SUPPORT_SRC :=
|
||||
|
||||
# List the headers used by PROJECT_SRC that you would like to mock
|
||||
MOCK_FILES_FP += $(KERNEL_DIR)/include/task.h
|
||||
MOCK_FILES_FP += $(KERNEL_DIR)/include/list.h
|
||||
MOCK_FILES_FP += $(KERNEL_DIR)/include/timers.h
|
||||
MOCK_FILES_FP += $(UT_ROOT_DIR)/config/fake_assert.h
|
||||
MOCK_FILES_FP += $(UT_ROOT_DIR)/config/fake_port.h
|
||||
MOCK_FILES_FP += $(PROJECT_DIR)/list_macros.h
|
||||
|
||||
|
||||
# List any addiitonal flags needed by the preprocessor
|
||||
CPPFLAGS += -DportUSING_MPU_WRAPPERS=0
|
||||
|
||||
# List any addiitonal flags needed by the compiler
|
||||
CFLAGS += -include list_macros.h
|
||||
|
||||
# Try not to edit beyond this line unless necessary.
|
||||
|
||||
# Project is determined based on path: $(UT_ROOT_DIR)/$(PROJECT)
|
||||
PROJECT := $(lastword $(subst /, ,$(dir $(abspath $(MAKEFILE_ABSPATH)))))
|
||||
|
||||
export
|
||||
|
||||
include ../testdir.mk
|
||||
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
:cmock:
|
||||
:mock_prefix: mock_
|
||||
:when_no_prototypes: :warn
|
||||
:treat_externs: :include
|
||||
:enforce_strict_ordering: TRUE
|
||||
:plugins:
|
||||
- :ignore
|
||||
- :ignore_arg
|
||||
- :expect_any_args
|
||||
- :array
|
||||
- :callback
|
||||
- :return_thru_ptr
|
||||
:callback_include_count: true # include a count arg when calling the callback
|
||||
:callback_after_arg_check: false # check arguments before calling the callback
|
||||
:treat_as:
|
||||
uint8: HEX8
|
||||
uint16: HEX16
|
||||
uint32: UINT32
|
||||
int8: INT8
|
||||
bool: UINT8
|
||||
:includes: # This will add these includes to each mock.
|
||||
- <stdbool.h>
|
||||
- "FreeRTOS.h"
|
||||
:treat_externs: :exclude # Now the extern-ed functions will be mocked.
|
||||
:weak: __attribute__((weak))
|
||||
:verbosity: 3
|
||||
:attributes:
|
||||
- PRIVILEGED_FUNCTION
|
||||
:strippables:
|
||||
- PRIVILEGED_FUNCTION
|
||||
- portDONT_DISCARD
|
||||
:treat_externs: :include
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
* FreeRTOS V202012.00
|
||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef LIST_MACRO_H
|
||||
#define LIST_MACRO_H
|
||||
|
||||
#include <FreeRTOS.h>
|
||||
#include <task.h>
|
||||
#include <portmacro.h>
|
||||
#include <list.h>
|
||||
|
||||
struct tskTaskControlBlock;
|
||||
typedef struct tskTaskControlBlock TCB_t;
|
||||
|
||||
#undef listLIST_IS_EMPTY
|
||||
BaseType_t listLIST_IS_EMPTY( const List_t * pxList );
|
||||
|
||||
#undef listGET_OWNER_OF_HEAD_ENTRY
|
||||
TCB_t * listGET_OWNER_OF_HEAD_ENTRY( const List_t * pxList );
|
||||
|
||||
#undef listIS_CONTAINED_WITHIN
|
||||
BaseType_t listIS_CONTAINED_WITHIN( List_t * list,
|
||||
const ListItem_t * listItem );
|
||||
|
||||
#undef listGET_LIST_ITEM_VALUE
|
||||
TickType_t listGET_LIST_ITEM_VALUE( ListItem_t * listItem );
|
||||
|
||||
#undef listSET_LIST_ITEM_VALUE
|
||||
void listSET_LIST_ITEM_VALUE( ListItem_t * listItem,
|
||||
TickType_t itemValue );
|
||||
|
||||
#undef listLIST_ITEM_CONTAINER
|
||||
List_t * listLIST_ITEM_CONTAINER( const ListItem_t * listItem );
|
||||
|
||||
#undef listCURRENT_LIST_LENGTH
|
||||
UBaseType_t listCURRENT_LIST_LENGTH( const List_t * list );
|
||||
|
||||
#undef listGET_ITEM_VALUE_OF_HEAD_ENTRY
|
||||
TickType_t listGET_ITEM_VALUE_OF_HEAD_ENTRY( List_t * list );
|
||||
|
||||
#undef listGET_LIST_ITEM_OWNER
|
||||
TCB_t * listGET_LIST_ITEM_OWNER( ListItem_t * listItem );
|
||||
|
||||
#undef listGET_END_MARKER
|
||||
ListItem_t * listGET_END_MARKER( ListItem_t * pxList );
|
||||
|
||||
#undef listGET_NEXT
|
||||
ListItem_t * listGET_NEXT( ListItem_t * pxList );
|
||||
|
||||
#endif /* ifndef LIST_MACRO_H */
|
||||
Reference in New Issue
Block a user