diff --git a/connectivity/cellular/tests/UNITTESTS/framework/AT/at_cellulardevice/unittest.cmake b/connectivity/cellular/tests/UNITTESTS/framework/AT/at_cellulardevice/unittest.cmake index b13860c..20bc316 100644 --- a/connectivity/cellular/tests/UNITTESTS/framework/AT/at_cellulardevice/unittest.cmake +++ b/connectivity/cellular/tests/UNITTESTS/framework/AT/at_cellulardevice/unittest.cmake @@ -9,7 +9,7 @@ ../connectivity/cellular/include/cellular/framework/common ../connectivity/cellular/include/cellular/framework/AT ../connectivity/cellular/include/cellular/framework/device - ../platform/randlib/mbed-client-randlib + ../platform/randlib/include/mbed-client-randlib ../drivers ../hal ) diff --git a/connectivity/cellular/tests/UNITTESTS/framework/AT/at_cellularinformation/unittest.cmake b/connectivity/cellular/tests/UNITTESTS/framework/AT/at_cellularinformation/unittest.cmake index 4ab4102..fad6023 100644 --- a/connectivity/cellular/tests/UNITTESTS/framework/AT/at_cellularinformation/unittest.cmake +++ b/connectivity/cellular/tests/UNITTESTS/framework/AT/at_cellularinformation/unittest.cmake @@ -8,7 +8,7 @@ ../connectivity/cellular/tests/UNITTESTS/framework/common/util ../connectivity/cellular/include/cellular/framework/common ../connectivity/cellular/include/cellular/framework/AT - ../platform/randlib/mbed-client-randlib + ../platform/randlib/include/mbed-client-randlib ) # Source files diff --git a/connectivity/cellular/tests/UNITTESTS/framework/AT/at_cellularnetwork/unittest.cmake b/connectivity/cellular/tests/UNITTESTS/framework/AT/at_cellularnetwork/unittest.cmake index 4da258a..07c7b9c 100644 --- a/connectivity/cellular/tests/UNITTESTS/framework/AT/at_cellularnetwork/unittest.cmake +++ b/connectivity/cellular/tests/UNITTESTS/framework/AT/at_cellularnetwork/unittest.cmake @@ -8,7 +8,7 @@ ../connectivity/cellular/tests/UNITTESTS/framework/common/util ../connectivity/cellular/include/cellular/framework/common ../connectivity/cellular/include/cellular/framework/AT - ../platform/randlib/mbed-client-randlib + ../platform/randlib/include/mbed-client-randlib ) # Source files diff --git a/connectivity/cellular/tests/UNITTESTS/framework/AT/at_cellularsms/unittest.cmake b/connectivity/cellular/tests/UNITTESTS/framework/AT/at_cellularsms/unittest.cmake index f8497b2..dc34487 100644 --- a/connectivity/cellular/tests/UNITTESTS/framework/AT/at_cellularsms/unittest.cmake +++ b/connectivity/cellular/tests/UNITTESTS/framework/AT/at_cellularsms/unittest.cmake @@ -8,7 +8,7 @@ ../connectivity/cellular/tests/UNITTESTS/framework/common/util ../connectivity/cellular/include/cellular/framework/common ../connectivity/cellular/include/cellular/framework/AT - ../platform/randlib/mbed-client-randlib + ../platform/randlib/include/mbed-client-randlib ) # Source files diff --git a/connectivity/cellular/tests/UNITTESTS/framework/AT/at_cellularstack/unittest.cmake b/connectivity/cellular/tests/UNITTESTS/framework/AT/at_cellularstack/unittest.cmake index bffa2ec..97fe9a2 100644 --- a/connectivity/cellular/tests/UNITTESTS/framework/AT/at_cellularstack/unittest.cmake +++ b/connectivity/cellular/tests/UNITTESTS/framework/AT/at_cellularstack/unittest.cmake @@ -8,7 +8,7 @@ ../connectivity/cellular/tests/UNITTESTS/framework/common/util ../connectivity/cellular/include/cellular/framework/common ../connectivity/cellular/include/cellular/framework/AT - ../platform/randlib/mbed-client-randlib + ../platform/randlib/include/mbed-client-randlib ) # Source files diff --git a/connectivity/cellular/tests/UNITTESTS/framework/common/util/unittest.cmake b/connectivity/cellular/tests/UNITTESTS/framework/common/util/unittest.cmake index 2f814c5..556c12a 100644 --- a/connectivity/cellular/tests/UNITTESTS/framework/common/util/unittest.cmake +++ b/connectivity/cellular/tests/UNITTESTS/framework/common/util/unittest.cmake @@ -7,7 +7,7 @@ set(unittest-includes ${unittest-includes} ../connectivity/cellular/tests/UNITTESTS/framework/common/util ../connectivity/cellular/include/cellular/framework/common - ../platform/randlib/mbed-client-randlib + ../platform/randlib/include/mbed-client-randlib ) # Source files diff --git a/connectivity/cellular/tests/UNITTESTS/framework/device/athandler/unittest.cmake b/connectivity/cellular/tests/UNITTESTS/framework/device/athandler/unittest.cmake index 871fcad..8a787df 100644 --- a/connectivity/cellular/tests/UNITTESTS/framework/device/athandler/unittest.cmake +++ b/connectivity/cellular/tests/UNITTESTS/framework/device/athandler/unittest.cmake @@ -9,7 +9,7 @@ ../connectivity/cellular/tests/UNITTESTS/framework/common/util ../connectivity/cellular/include/cellular/framework/common ../connectivity/cellular/include/cellular/framework/AT - ../platform/randlib/mbed-client-randlib + ../platform/randlib/include/mbed-client-randlib ) diff --git a/platform/randlib/.mbedignore b/platform/randlib/.mbedignore index ba4eb1b..89e8a0a 100644 --- a/platform/randlib/.mbedignore +++ b/platform/randlib/.mbedignore @@ -1,2 +1,2 @@ linux/* -test/* +tests/unit/* diff --git a/platform/randlib/.yotta_ignore b/platform/randlib/.yotta_ignore index ab1cfb4..13fec05 100644 --- a/platform/randlib/.yotta_ignore +++ b/platform/randlib/.yotta_ignore @@ -1 +1 @@ -test/* +tests/unit/* diff --git a/platform/randlib/include/mbed-client-randlib/platform/arm_hal_random.h b/platform/randlib/include/mbed-client-randlib/platform/arm_hal_random.h new file mode 100644 index 0000000..337486d --- /dev/null +++ b/platform/randlib/include/mbed-client-randlib/platform/arm_hal_random.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2014-2015 ARM Limited. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ARM_HAL_RANDOM_H_ +#define ARM_HAL_RANDOM_H_ +#ifdef __cplusplus +extern "C" { +#endif +/** + * \brief This function performs Random number driver init. + */ +extern void arm_random_module_init(void); +/** + * \brief Get random library seed value. + * + * This function should return as random a value as possible, using + * hardware sources. Repeated calls should return different values if + * at all possible. + */ +extern uint32_t arm_random_seed_get(void); +#ifdef __cplusplus +} +#endif +#endif /* ARM_HAL_RANDOM_H_ */ diff --git a/platform/randlib/include/mbed-client-randlib/randLIB.h b/platform/randlib/include/mbed-client-randlib/randLIB.h new file mode 100644 index 0000000..a58af01 --- /dev/null +++ b/platform/randlib/include/mbed-client-randlib/randLIB.h @@ -0,0 +1,149 @@ +/* + * Copyright (c) 2014-2015 ARM Limited. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * \file randLIB.h + * \brief Pseudo Random Library API: + * + * + * \section net-boot Network Bootstrap Control API: + * - randLIB_seed_random(), Set seed for pseudo random + * - randLIB_get_8bit(), Generate 8-bit random number + * - randLIB_get_16bit(),Generate 16-bit random number + * - randLIB_get_32bit(),Generate 32-bit random number + * - randLIB_get_n_bytes_random(), Generate n-bytes random numbers + * + */ + +#ifndef RANDLIB_H_ +#define RANDLIB_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * This library is made for getting random numbers for Timing needs in protocols. + * + * **not safe to use for security or cryptographic operations.** + * + */ + + +/** + * \brief Init seed for Pseudo Random. + * + * Makes call(s) to the platform's arm_random_seed_get() to seed the + * pseudo-random generator. + * + * \return None + * + */ +extern void randLIB_seed_random(void); + +/** + * \brief Update seed for pseudo-random generator + * + * Adds seed information to existing generator, to perturb the + * sequence. + * \param seed 64 bits of data to add to the seed. + */ +extern void randLIB_add_seed(uint64_t seed); + +/** + * \brief Generate 8-bit random number. + * + * \param None + * \return 8-bit random number + * + */ +extern uint8_t randLIB_get_8bit(void); + +/** + * \brief Generate 16-bit random number. + * + * \param None + * \return 16-bit random number + * + */ +extern uint16_t randLIB_get_16bit(void); + +/** + * \brief Generate 32-bit random number. + * + * \param None + * \return 32-bit random number + * + */ +extern uint32_t randLIB_get_32bit(void); + +/** + * \brief Generate 64-bit random number. + * + * \param None + * \return 64-bit random number + * + */ +extern uint64_t randLIB_get_64bit(void); + +/** + * \brief Generate n-bytes random numbers. + * + * \param data_ptr pointer where random will be stored + * \param count how many bytes need random + * + * \return data_ptr + */ +extern void *randLIB_get_n_bytes_random(void *data_ptr, uint8_t count); + +/** + * \brief Generate a random number within a range. + * + * The result is linearly distributed in the range [min..max], inclusive. + * + * \param min minimum value that can be generated + * \param max maximum value that can be generated + */ +uint16_t randLIB_get_random_in_range(uint16_t min, uint16_t max); + +/** + * \brief Randomise a base 32-bit number by a jitter factor + * + * The result is linearly distributed in the jitter range, which is expressed + * as fixed-point unsigned 1.15 values. For example, to produce a number in the + * range [0.75 * base, 1.25 * base], set min_factor to 0x6000 and max_factor to + * 0xA000. + * + * Result is clamped to 0xFFFFFFFF if it overflows. + * + * \param base The base 32-bit value + * \param min_factor The minimum value for the random factor + * \param max_factor The maximum value for the random factor + */ +uint32_t randLIB_randomise_base(uint32_t base, uint16_t min_factor, uint16_t max_factor); + +#ifdef RANDLIB_PRNG +/* \internal Reset the PRNG state to zero (invalid) */ +void randLIB_reset(void); +#endif + + +#ifdef __cplusplus +} +#endif +#endif /* RANDLIB_H_ */ diff --git a/platform/randlib/mbed-client-randlib/platform/arm_hal_random.h b/platform/randlib/mbed-client-randlib/platform/arm_hal_random.h deleted file mode 100644 index 337486d..0000000 --- a/platform/randlib/mbed-client-randlib/platform/arm_hal_random.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2014-2015 ARM Limited. All rights reserved. - * SPDX-License-Identifier: Apache-2.0 - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef ARM_HAL_RANDOM_H_ -#define ARM_HAL_RANDOM_H_ -#ifdef __cplusplus -extern "C" { -#endif -/** - * \brief This function performs Random number driver init. - */ -extern void arm_random_module_init(void); -/** - * \brief Get random library seed value. - * - * This function should return as random a value as possible, using - * hardware sources. Repeated calls should return different values if - * at all possible. - */ -extern uint32_t arm_random_seed_get(void); -#ifdef __cplusplus -} -#endif -#endif /* ARM_HAL_RANDOM_H_ */ diff --git a/platform/randlib/mbed-client-randlib/randLIB.h b/platform/randlib/mbed-client-randlib/randLIB.h deleted file mode 100644 index a58af01..0000000 --- a/platform/randlib/mbed-client-randlib/randLIB.h +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright (c) 2014-2015 ARM Limited. All rights reserved. - * SPDX-License-Identifier: Apache-2.0 - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * \file randLIB.h - * \brief Pseudo Random Library API: - * - * - * \section net-boot Network Bootstrap Control API: - * - randLIB_seed_random(), Set seed for pseudo random - * - randLIB_get_8bit(), Generate 8-bit random number - * - randLIB_get_16bit(),Generate 16-bit random number - * - randLIB_get_32bit(),Generate 32-bit random number - * - randLIB_get_n_bytes_random(), Generate n-bytes random numbers - * - */ - -#ifndef RANDLIB_H_ -#define RANDLIB_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * This library is made for getting random numbers for Timing needs in protocols. - * - * **not safe to use for security or cryptographic operations.** - * - */ - - -/** - * \brief Init seed for Pseudo Random. - * - * Makes call(s) to the platform's arm_random_seed_get() to seed the - * pseudo-random generator. - * - * \return None - * - */ -extern void randLIB_seed_random(void); - -/** - * \brief Update seed for pseudo-random generator - * - * Adds seed information to existing generator, to perturb the - * sequence. - * \param seed 64 bits of data to add to the seed. - */ -extern void randLIB_add_seed(uint64_t seed); - -/** - * \brief Generate 8-bit random number. - * - * \param None - * \return 8-bit random number - * - */ -extern uint8_t randLIB_get_8bit(void); - -/** - * \brief Generate 16-bit random number. - * - * \param None - * \return 16-bit random number - * - */ -extern uint16_t randLIB_get_16bit(void); - -/** - * \brief Generate 32-bit random number. - * - * \param None - * \return 32-bit random number - * - */ -extern uint32_t randLIB_get_32bit(void); - -/** - * \brief Generate 64-bit random number. - * - * \param None - * \return 64-bit random number - * - */ -extern uint64_t randLIB_get_64bit(void); - -/** - * \brief Generate n-bytes random numbers. - * - * \param data_ptr pointer where random will be stored - * \param count how many bytes need random - * - * \return data_ptr - */ -extern void *randLIB_get_n_bytes_random(void *data_ptr, uint8_t count); - -/** - * \brief Generate a random number within a range. - * - * The result is linearly distributed in the range [min..max], inclusive. - * - * \param min minimum value that can be generated - * \param max maximum value that can be generated - */ -uint16_t randLIB_get_random_in_range(uint16_t min, uint16_t max); - -/** - * \brief Randomise a base 32-bit number by a jitter factor - * - * The result is linearly distributed in the jitter range, which is expressed - * as fixed-point unsigned 1.15 values. For example, to produce a number in the - * range [0.75 * base, 1.25 * base], set min_factor to 0x6000 and max_factor to - * 0xA000. - * - * Result is clamped to 0xFFFFFFFF if it overflows. - * - * \param base The base 32-bit value - * \param min_factor The minimum value for the random factor - * \param max_factor The maximum value for the random factor - */ -uint32_t randLIB_randomise_base(uint32_t base, uint16_t min_factor, uint16_t max_factor); - -#ifdef RANDLIB_PRNG -/* \internal Reset the PRNG state to zero (invalid) */ -void randLIB_reset(void); -#endif - - -#ifdef __cplusplus -} -#endif -#endif /* RANDLIB_H_ */ diff --git a/platform/randlib/test/mbed-client-randlib/unittest/Makefile b/platform/randlib/test/mbed-client-randlib/unittest/Makefile deleted file mode 100644 index 91cfcf9..0000000 --- a/platform/randlib/test/mbed-client-randlib/unittest/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -#scan for folders having "Makefile" in them and remove 'this' to prevent loop -ifeq ($(OS),Windows_NT) -all: -clean: -else -DIRS := $(filter-out ./, $(sort $(dir $(shell find . -name 'Makefile')))) - -all: - for dir in $(DIRS); do \ - cd $$dir; make gcov; cd ..;\ - done - -clean: - for dir in $(DIRS); do \ - cd $$dir; make clean; cd ..;\ - done - rm -rf ../source/*gcov ../source/*gcda ../source/*o - rm -rf stubs/*gcov stubs/*gcda stubs/*o - rm -rf results/* - rm -rf coverages/* - rm -rf results - rm -rf coverages -endif diff --git a/platform/randlib/test/mbed-client-randlib/unittest/MakefileWorker.mk b/platform/randlib/test/mbed-client-randlib/unittest/MakefileWorker.mk deleted file mode 100644 index 2bfbec0..0000000 --- a/platform/randlib/test/mbed-client-randlib/unittest/MakefileWorker.mk +++ /dev/null @@ -1,562 +0,0 @@ -#--------- -# -# MakefileWorker.mk -# -# Include this helper file in your makefile -# It makes -# A static library -# A test executable -# -# See this example for parameter settings -# examples/Makefile -# -#---------- -# Inputs - these variables describe what to build -# -# INCLUDE_DIRS - Directories used to search for include files. -# This generates a -I for each directory -# SRC_DIRS - Directories containing source file to built into the library -# SRC_FILES - Specific source files to build into library. Helpful when not all code -# in a directory can be built for test (hopefully a temporary situation) -# TEST_SRC_DIRS - Directories containing unit test code build into the unit test runner -# These do not go in a library. They are explicitly included in the test runner -# TEST_SRC_FILES - Specific source files to build into the unit test runner -# These do not go in a library. They are explicitly included in the test runner -# MOCKS_SRC_DIRS - Directories containing mock source files to build into the test runner -# These do not go in a library. They are explicitly included in the test runner -#---------- -# You can adjust these variables to influence how to build the test target -# and where to put and name outputs -# See below to determine defaults -# COMPONENT_NAME - the name of the thing being built -# TEST_TARGET - name the test executable. By default it is -# $(COMPONENT_NAME)_tests -# Helpful if you want 1 > make files in the same directory with different -# executables as output. -# CPPUTEST_HOME - where CppUTest home dir found -# TARGET_PLATFORM - Influences how the outputs are generated by modifying the -# CPPUTEST_OBJS_DIR and CPPUTEST_LIB_DIR to use a sub-directory under the -# normal objs and lib directories. Also modifies where to search for the -# CPPUTEST_LIB to link against. -# CPPUTEST_OBJS_DIR - a directory where o and d files go -# CPPUTEST_LIB_DIR - a directory where libs go -# CPPUTEST_ENABLE_DEBUG - build for debug -# CPPUTEST_USE_MEM_LEAK_DETECTION - Links with overridden new and delete -# CPPUTEST_USE_STD_CPP_LIB - Set to N to keep the standard C++ library out -# of the test harness -# CPPUTEST_USE_GCOV - Turn on coverage analysis -# Clean then build with this flag set to Y, then 'make gcov' -# CPPUTEST_MAPFILE - generate a map file -# CPPUTEST_WARNINGFLAGS - overly picky by default -# OTHER_MAKEFILE_TO_INCLUDE - a hook to use this makefile to make -# other targets. Like CSlim, which is part of fitnesse -# CPPUTEST_USE_VPATH - Use Make's VPATH functionality to support user -# specification of source files and directories that aren't below -# the user's Makefile in the directory tree, like: -# SRC_DIRS += ../../lib/foo -# It defaults to N, and shouldn't be necessary except in the above case. -#---------- -# -# Other flags users can initialize to sneak in their settings -# CPPUTEST_CXXFLAGS - flags for the C++ compiler -# CPPUTEST_CPPFLAGS - flags for the C++ AND C preprocessor -# CPPUTEST_CFLAGS - flags for the C complier -# CPPUTEST_LDFLAGS - Linker flags -#---------- - -# Some behavior is weird on some platforms. Need to discover the platform. - -# Platforms -UNAME_OUTPUT = "$(shell uname -a)" -MACOSX_STR = Darwin -MINGW_STR = MINGW -CYGWIN_STR = CYGWIN -LINUX_STR = Linux -SUNOS_STR = SunOS -UNKNWOWN_OS_STR = Unknown - -# Compilers -CC_VERSION_OUTPUT ="$(shell $(CXX) -v 2>&1)" -CLANG_STR = clang -SUNSTUDIO_CXX_STR = SunStudio - -UNAME_OS = $(UNKNWOWN_OS_STR) - -ifeq ($(findstring $(MINGW_STR),$(UNAME_OUTPUT)),$(MINGW_STR)) - UNAME_OS = $(MINGW_STR) -endif - -ifeq ($(findstring $(CYGWIN_STR),$(UNAME_OUTPUT)),$(CYGWIN_STR)) - UNAME_OS = $(CYGWIN_STR) -endif - -ifeq ($(findstring $(LINUX_STR),$(UNAME_OUTPUT)),$(LINUX_STR)) - UNAME_OS = $(LINUX_STR) -endif - -ifeq ($(findstring $(MACOSX_STR),$(UNAME_OUTPUT)),$(MACOSX_STR)) - UNAME_OS = $(MACOSX_STR) -#lion has a problem with the 'v' part of -a - UNAME_OUTPUT = "$(shell uname -pmnrs)" -endif - -ifeq ($(findstring $(SUNOS_STR),$(UNAME_OUTPUT)),$(SUNOS_STR)) - UNAME_OS = $(SUNOS_STR) - - SUNSTUDIO_CXX_ERR_STR = CC -flags -ifeq ($(findstring $(SUNSTUDIO_CXX_ERR_STR),$(CC_VERSION_OUTPUT)),$(SUNSTUDIO_CXX_ERR_STR)) - CC_VERSION_OUTPUT ="$(shell $(CXX) -V 2>&1)" - COMPILER_NAME = $(SUNSTUDIO_CXX_STR) -endif -endif - -ifeq ($(findstring $(CLANG_STR),$(CC_VERSION_OUTPUT)),$(CLANG_STR)) - COMPILER_NAME = $(CLANG_STR) -endif - -#Kludge for mingw, it does not have cc.exe, but gcc.exe will do -ifeq ($(UNAME_OS),$(MINGW_STR)) - CC := gcc -endif - -#And another kludge. Exception handling in gcc 4.6.2 is broken when linking the -# Standard C++ library as a shared library. Unbelievable. -ifeq ($(UNAME_OS),$(MINGW_STR)) - CPPUTEST_LDFLAGS += -static -endif -ifeq ($(UNAME_OS),$(CYGWIN_STR)) - CPPUTEST_LDFLAGS += -static -endif - - -#Kludge for MacOsX gcc compiler on Darwin9 who can't handle pendantic -ifeq ($(UNAME_OS),$(MACOSX_STR)) -ifeq ($(findstring Version 9,$(UNAME_OUTPUT)),Version 9) - CPPUTEST_PEDANTIC_ERRORS = N -endif -endif - -ifndef COMPONENT_NAME - COMPONENT_NAME = name_this_in_the_makefile -endif - -# Debug on by default -ifndef CPPUTEST_ENABLE_DEBUG - CPPUTEST_ENABLE_DEBUG = Y -endif - -# new and delete for memory leak detection on by default -ifndef CPPUTEST_USE_MEM_LEAK_DETECTION - CPPUTEST_USE_MEM_LEAK_DETECTION = Y -endif - -# Use the standard C library -ifndef CPPUTEST_USE_STD_C_LIB - CPPUTEST_USE_STD_C_LIB = Y -endif - -# Use the standard C++ library -ifndef CPPUTEST_USE_STD_CPP_LIB - CPPUTEST_USE_STD_CPP_LIB = Y -endif - -# Use gcov, off by default -ifndef CPPUTEST_USE_GCOV - CPPUTEST_USE_GCOV = N -endif - -ifndef CPPUTEST_PEDANTIC_ERRORS - CPPUTEST_PEDANTIC_ERRORS = Y -endif - -# Default warnings -ifndef CPPUTEST_WARNINGFLAGS - CPPUTEST_WARNINGFLAGS = -Wall -Wextra -Wshadow -Wswitch-default -Wswitch-enum -Wconversion -ifeq ($(CPPUTEST_PEDANTIC_ERRORS), Y) -# CPPUTEST_WARNINGFLAGS += -pedantic-errors - CPPUTEST_WARNINGFLAGS += -pedantic -endif -ifeq ($(UNAME_OS),$(LINUX_STR)) - CPPUTEST_WARNINGFLAGS += -Wsign-conversion -endif - CPPUTEST_CXX_WARNINGFLAGS = -Woverloaded-virtual - CPPUTEST_C_WARNINGFLAGS = -Wstrict-prototypes -endif - -#Wonderful extra compiler warnings with clang -ifeq ($(COMPILER_NAME),$(CLANG_STR)) -# -Wno-disabled-macro-expansion -> Have to disable the macro expansion warning as the operator new overload warns on that. -# -Wno-padded -> I sort-of like this warning but if there is a bool at the end of the class, it seems impossible to remove it! (except by making padding explicit) -# -Wno-global-constructors Wno-exit-time-destructors -> Great warnings, but in CppUTest it is impossible to avoid as the automatic test registration depends on the global ctor and dtor -# -Wno-weak-vtables -> The TEST_GROUP macro declares a class and will automatically inline its methods. Thats ok as they are only in one translation unit. Unfortunately, the warning can't detect that, so it must be disabled. - CPPUTEST_CXX_WARNINGFLAGS += -Weverything -Wno-disabled-macro-expansion -Wno-padded -Wno-global-constructors -Wno-exit-time-destructors -Wno-weak-vtables - CPPUTEST_C_WARNINGFLAGS += -Weverything -Wno-padded -endif - -# Uhm. Maybe put some warning flags for SunStudio here? -ifeq ($(COMPILER_NAME),$(SUNSTUDIO_CXX_STR)) - CPPUTEST_CXX_WARNINGFLAGS = - CPPUTEST_C_WARNINGFLAGS = -endif - -# Default dir for temporary files (d, o) -ifndef CPPUTEST_OBJS_DIR -ifndef TARGET_PLATFORM - CPPUTEST_OBJS_DIR = objs -else - CPPUTEST_OBJS_DIR = objs/$(TARGET_PLATFORM) -endif -endif - -# Default dir for the outout library -ifndef CPPUTEST_LIB_DIR -ifndef TARGET_PLATFORM - CPPUTEST_LIB_DIR = lib -else - CPPUTEST_LIB_DIR = lib/$(TARGET_PLATFORM) -endif -endif - -# No map by default -ifndef CPPUTEST_MAP_FILE - CPPUTEST_MAP_FILE = N -endif - -# No extentions is default -ifndef CPPUTEST_USE_EXTENSIONS - CPPUTEST_USE_EXTENSIONS = N -endif - -# No VPATH is default -ifndef CPPUTEST_USE_VPATH - CPPUTEST_USE_VPATH := N -endif -# Make empty, instead of 'N', for usage in $(if ) conditionals -ifneq ($(CPPUTEST_USE_VPATH), Y) - CPPUTEST_USE_VPATH := -endif - -ifndef TARGET_PLATFORM -#CPPUTEST_LIB_LINK_DIR = $(CPPUTEST_HOME)/lib -CPPUTEST_LIB_LINK_DIR = /usr/lib/x86_64-linux-gnu -else -CPPUTEST_LIB_LINK_DIR = $(CPPUTEST_HOME)/lib/$(TARGET_PLATFORM) -endif - -# -------------------------------------- -# derived flags in the following area -# -------------------------------------- - -# Without the C library, we'll need to disable the C++ library and ... -ifeq ($(CPPUTEST_USE_STD_C_LIB), N) - CPPUTEST_USE_STD_CPP_LIB = N - CPPUTEST_USE_MEM_LEAK_DETECTION = N - CPPUTEST_CPPFLAGS += -DCPPUTEST_STD_C_LIB_DISABLED - CPPUTEST_CPPFLAGS += -nostdinc -endif - -CPPUTEST_CPPFLAGS += -DCPPUTEST_COMPILATION - -ifeq ($(CPPUTEST_USE_MEM_LEAK_DETECTION), N) - CPPUTEST_CPPFLAGS += -DCPPUTEST_MEM_LEAK_DETECTION_DISABLED -else - ifndef CPPUTEST_MEMLEAK_DETECTOR_NEW_MACRO_FILE - CPPUTEST_MEMLEAK_DETECTOR_NEW_MACRO_FILE = -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorNewMacros.h - endif - ifndef CPPUTEST_MEMLEAK_DETECTOR_MALLOC_MACRO_FILE - CPPUTEST_MEMLEAK_DETECTOR_MALLOC_MACRO_FILE = -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorMallocMacros.h - endif -endif - -ifeq ($(CPPUTEST_ENABLE_DEBUG), Y) - CPPUTEST_CXXFLAGS += -g - CPPUTEST_CFLAGS += -g - CPPUTEST_LDFLAGS += -g -endif - -ifeq ($(CPPUTEST_USE_STD_CPP_LIB), N) - CPPUTEST_CPPFLAGS += -DCPPUTEST_STD_CPP_LIB_DISABLED -ifeq ($(CPPUTEST_USE_STD_C_LIB), Y) - CPPUTEST_CXXFLAGS += -nostdinc++ -endif -endif - -ifdef $(GMOCK_HOME) - GTEST_HOME = $(GMOCK_HOME)/gtest - CPPUTEST_CPPFLAGS += -I$(GMOCK_HOME)/include - GMOCK_LIBRARY = $(GMOCK_HOME)/lib/.libs/libgmock.a - LD_LIBRARIES += $(GMOCK_LIBRARY) - CPPUTEST_CPPFLAGS += -DINCLUDE_GTEST_TESTS - CPPUTEST_WARNINGFLAGS = - CPPUTEST_CPPFLAGS += -I$(GTEST_HOME)/include -I$(GTEST_HOME) - GTEST_LIBRARY = $(GTEST_HOME)/lib/.libs/libgtest.a - LD_LIBRARIES += $(GTEST_LIBRARY) -endif - - -ifeq ($(CPPUTEST_USE_GCOV), Y) - CPPUTEST_CXXFLAGS += -fprofile-arcs -ftest-coverage - CPPUTEST_CFLAGS += -fprofile-arcs -ftest-coverage -endif - -CPPUTEST_CXXFLAGS += $(CPPUTEST_WARNINGFLAGS) $(CPPUTEST_CXX_WARNINGFLAGS) -CPPUTEST_CPPFLAGS += $(CPPUTEST_WARNINGFLAGS) -CPPUTEST_CXXFLAGS += $(CPPUTEST_MEMLEAK_DETECTOR_NEW_MACRO_FILE) -CPPUTEST_CPPFLAGS += $(CPPUTEST_MEMLEAK_DETECTOR_MALLOC_MACRO_FILE) -CPPUTEST_CFLAGS += $(CPPUTEST_C_WARNINGFLAGS) - -TARGET_MAP = $(COMPONENT_NAME).map.txt -ifeq ($(CPPUTEST_MAP_FILE), Y) - CPPUTEST_LDFLAGS += -Wl,-map,$(TARGET_MAP) -endif - -# Link with CppUTest lib -CPPUTEST_LIB = $(CPPUTEST_LIB_LINK_DIR)/libCppUTest.a - -ifeq ($(CPPUTEST_USE_EXTENSIONS), Y) -CPPUTEST_LIB += $(CPPUTEST_LIB_LINK_DIR)/libCppUTestExt.a -endif - -ifdef CPPUTEST_STATIC_REALTIME - LD_LIBRARIES += -lrt -endif - -TARGET_LIB = \ - $(CPPUTEST_LIB_DIR)/lib$(COMPONENT_NAME).a - -ifndef TEST_TARGET - ifndef TARGET_PLATFORM - TEST_TARGET = $(COMPONENT_NAME)_tests - else - TEST_TARGET = $(COMPONENT_NAME)_$(TARGET_PLATFORM)_tests - endif -endif - -#Helper Functions -get_src_from_dir = $(wildcard $1/*.cpp) $(wildcard $1/*.cc) $(wildcard $1/*.c) -get_dirs_from_dirspec = $(wildcard $1) -get_src_from_dir_list = $(foreach dir, $1, $(call get_src_from_dir,$(dir))) -__src_to = $(subst .c,$1, $(subst .cc,$1, $(subst .cpp,$1,$(if $(CPPUTEST_USE_VPATH),$(notdir $2),$2)))) -src_to = $(addprefix $(CPPUTEST_OBJS_DIR)/,$(call __src_to,$1,$2)) -src_to_o = $(call src_to,.o,$1) -src_to_d = $(call src_to,.d,$1) -src_to_gcda = $(call src_to,.gcda,$1) -src_to_gcno = $(call src_to,.gcno,$1) -time = $(shell date +%s) -delta_t = $(eval minus, $1, $2) -debug_print_list = $(foreach word,$1,echo " $(word)";) echo; - -#Derived -STUFF_TO_CLEAN += $(TEST_TARGET) $(TEST_TARGET).exe $(TARGET_LIB) $(TARGET_MAP) - -SRC += $(call get_src_from_dir_list, $(SRC_DIRS)) $(SRC_FILES) -OBJ = $(call src_to_o,$(SRC)) - -STUFF_TO_CLEAN += $(OBJ) - -TEST_SRC += $(call get_src_from_dir_list, $(TEST_SRC_DIRS)) $(TEST_SRC_FILES) -TEST_OBJS = $(call src_to_o,$(TEST_SRC)) -STUFF_TO_CLEAN += $(TEST_OBJS) - - -MOCKS_SRC += $(call get_src_from_dir_list, $(MOCKS_SRC_DIRS)) -MOCKS_OBJS = $(call src_to_o,$(MOCKS_SRC)) -STUFF_TO_CLEAN += $(MOCKS_OBJS) - -ALL_SRC = $(SRC) $(TEST_SRC) $(MOCKS_SRC) - -# If we're using VPATH -ifeq ($(CPPUTEST_USE_VPATH), Y) -# gather all the source directories and add them - VPATH += $(sort $(dir $(ALL_SRC))) -# Add the component name to the objs dir path, to differentiate between same-name objects - CPPUTEST_OBJS_DIR := $(addsuffix /$(COMPONENT_NAME),$(CPPUTEST_OBJS_DIR)) -endif - -#Test coverage with gcov -GCOV_OUTPUT = gcov_output.txt -GCOV_REPORT = gcov_report.txt -GCOV_ERROR = gcov_error.txt -GCOV_GCDA_FILES = $(call src_to_gcda, $(ALL_SRC)) -GCOV_GCNO_FILES = $(call src_to_gcno, $(ALL_SRC)) -TEST_OUTPUT = $(TEST_TARGET).txt -STUFF_TO_CLEAN += \ - $(GCOV_OUTPUT)\ - $(GCOV_REPORT)\ - $(GCOV_REPORT).html\ - $(GCOV_ERROR)\ - $(GCOV_GCDA_FILES)\ - $(GCOV_GCNO_FILES)\ - $(TEST_OUTPUT) - -#The gcda files for gcov need to be deleted before each run -#To avoid annoying messages. -GCOV_CLEAN = $(SILENCE)rm -f $(GCOV_GCDA_FILES) $(GCOV_OUTPUT) $(GCOV_REPORT) $(GCOV_ERROR) -RUN_TEST_TARGET = $(SILENCE) $(GCOV_CLEAN) ; echo "Running $(TEST_TARGET)"; ./$(TEST_TARGET) $(CPPUTEST_EXE_FLAGS) -ojunit - -ifeq ($(CPPUTEST_USE_GCOV), Y) - - ifeq ($(COMPILER_NAME),$(CLANG_STR)) - LD_LIBRARIES += --coverage - else - LD_LIBRARIES += -lgcov - endif -endif - - -INCLUDES_DIRS_EXPANDED = $(call get_dirs_from_dirspec, $(INCLUDE_DIRS)) -INCLUDES += $(foreach dir, $(INCLUDES_DIRS_EXPANDED), -I$(dir)) -MOCK_DIRS_EXPANDED = $(call get_dirs_from_dirspec, $(MOCKS_SRC_DIRS)) -INCLUDES += $(foreach dir, $(MOCK_DIRS_EXPANDED), -I$(dir)) - -CPPUTEST_CPPFLAGS += $(INCLUDES) $(CPPUTESTFLAGS) - -DEP_FILES = $(call src_to_d, $(ALL_SRC)) -STUFF_TO_CLEAN += $(DEP_FILES) $(PRODUCTION_CODE_START) $(PRODUCTION_CODE_END) -STUFF_TO_CLEAN += $(STDLIB_CODE_START) $(MAP_FILE) cpputest_*.xml junit_run_output - -# We'll use the CPPUTEST_CFLAGS etc so that you can override AND add to the CppUTest flags -CFLAGS = $(CPPUTEST_CFLAGS) $(CPPUTEST_ADDITIONAL_CFLAGS) -CPPFLAGS = $(CPPUTEST_CPPFLAGS) $(CPPUTEST_ADDITIONAL_CPPFLAGS) -CXXFLAGS = $(CPPUTEST_CXXFLAGS) $(CPPUTEST_ADDITIONAL_CXXFLAGS) -LDFLAGS = $(CPPUTEST_LDFLAGS) $(CPPUTEST_ADDITIONAL_LDFLAGS) - -# Don't consider creating the archive a warning condition that does STDERR output -ARFLAGS := $(ARFLAGS)c - -DEP_FLAGS=-MMD -MP - -# Some macros for programs to be overridden. For some reason, these are not in Make defaults -RANLIB = ranlib - -# Targets - -.PHONY: all -all: start $(TEST_TARGET) - $(RUN_TEST_TARGET) - -.PHONY: start -start: $(TEST_TARGET) - $(SILENCE)START_TIME=$(call time) - -.PHONY: all_no_tests -all_no_tests: $(TEST_TARGET) - -.PHONY: flags -flags: - @echo - @echo "OS ${UNAME_OS}" - @echo "Compile C and C++ source with CPPFLAGS:" - @$(call debug_print_list,$(CPPFLAGS)) - @echo "Compile C++ source with CXXFLAGS:" - @$(call debug_print_list,$(CXXFLAGS)) - @echo "Compile C source with CFLAGS:" - @$(call debug_print_list,$(CFLAGS)) - @echo "Link with LDFLAGS:" - @$(call debug_print_list,$(LDFLAGS)) - @echo "Link with LD_LIBRARIES:" - @$(call debug_print_list,$(LD_LIBRARIES)) - @echo "Create libraries with ARFLAGS:" - @$(call debug_print_list,$(ARFLAGS)) - -TEST_DEPS = $(TEST_OBJS) $(MOCKS_OBJS) $(PRODUCTION_CODE_START) $(TARGET_LIB) $(USER_LIBS) $(PRODUCTION_CODE_END) $(CPPUTEST_LIB) $(STDLIB_CODE_START) -test-deps: $(TEST_DEPS) - -$(TEST_TARGET): $(TEST_DEPS) - @echo Linking $@ - $(SILENCE)$(CXX) -o $@ $^ $(LD_LIBRARIES) $(LDFLAGS) - -$(TARGET_LIB): $(OBJ) - @echo Building archive $@ - $(SILENCE)mkdir -p $(dir $@) - $(SILENCE)$(AR) $(ARFLAGS) $@ $^ - $(SILENCE)$(RANLIB) $@ - -test: $(TEST_TARGET) - $(RUN_TEST_TARGET) | tee $(TEST_OUTPUT) - -vtest: $(TEST_TARGET) - $(RUN_TEST_TARGET) -v | tee $(TEST_OUTPUT) - -$(CPPUTEST_OBJS_DIR)/%.o: %.cc - @echo compiling $(notdir $<) - $(SILENCE)mkdir -p $(dir $@) - $(SILENCE)$(COMPILE.cpp) $(DEP_FLAGS) $(OUTPUT_OPTION) $< - -$(CPPUTEST_OBJS_DIR)/%.o: %.cpp - @echo compiling $(notdir $<) - $(SILENCE)mkdir -p $(dir $@) - $(SILENCE)$(COMPILE.cpp) $(DEP_FLAGS) $(OUTPUT_OPTION) $< - -$(CPPUTEST_OBJS_DIR)/%.o: %.c - @echo compiling $(notdir $<) - $(SILENCE)mkdir -p $(dir $@) - $(SILENCE)$(COMPILE.c) $(DEP_FLAGS) $(OUTPUT_OPTION) $< - -ifneq "$(MAKECMDGOALS)" "clean" --include $(DEP_FILES) -endif - -.PHONY: clean -clean: - @echo Making clean - $(SILENCE)$(RM) $(STUFF_TO_CLEAN) - $(SILENCE)rm -rf gcov objs #$(CPPUTEST_OBJS_DIR) - $(SILENCE)rm -rf $(CPPUTEST_LIB_DIR) - $(SILENCE)find . -name "*.gcno" | xargs rm -f - $(SILENCE)find . -name "*.gcda" | xargs rm -f - -#realclean gets rid of all gcov, o and d files in the directory tree -#not just the ones made by this makefile -.PHONY: realclean -realclean: clean - $(SILENCE)rm -rf gcov - $(SILENCE)find . -name "*.gdcno" | xargs rm -f - $(SILENCE)find . -name "*.[do]" | xargs rm -f - -gcov: test -ifeq ($(CPPUTEST_USE_VPATH), Y) - $(SILENCE)gcov --object-directory $(CPPUTEST_OBJS_DIR) $(SRC) >> $(GCOV_OUTPUT) 2>> $(GCOV_ERROR) -else - $(SILENCE)for d in $(SRC_DIRS) ; do \ - gcov --object-directory $(CPPUTEST_OBJS_DIR)/$$d $$d/*.c $$d/*.cpp >> $(GCOV_OUTPUT) 2>>$(GCOV_ERROR) ; \ - done - $(SILENCE)for f in $(SRC_FILES) ; do \ - gcov --object-directory $(CPPUTEST_OBJS_DIR)/$$f $$f >> $(GCOV_OUTPUT) 2>>$(GCOV_ERROR) ; \ - done -endif -# $(CPPUTEST_HOME)/scripts/filterGcov.sh $(GCOV_OUTPUT) $(GCOV_ERROR) $(GCOV_REPORT) $(TEST_OUTPUT) - /usr/share/cpputest/scripts/filterGcov.sh $(GCOV_OUTPUT) $(GCOV_ERROR) $(GCOV_REPORT) $(TEST_OUTPUT) - $(SILENCE)cat $(GCOV_REPORT) - $(SILENCE)mkdir -p gcov - $(SILENCE)mv *.gcov gcov - $(SILENCE)mv gcov_* gcov - @echo "See gcov directory for details" - -.PHONEY: format -format: - $(CPPUTEST_HOME)/scripts/reformat.sh $(PROJECT_HOME_DIR) - -.PHONEY: debug -debug: - @echo - @echo "Target Source files:" - @$(call debug_print_list,$(SRC)) - @echo "Target Object files:" - @$(call debug_print_list,$(OBJ)) - @echo "Test Source files:" - @$(call debug_print_list,$(TEST_SRC)) - @echo "Test Object files:" - @$(call debug_print_list,$(TEST_OBJS)) - @echo "Mock Source files:" - @$(call debug_print_list,$(MOCKS_SRC)) - @echo "Mock Object files:" - @$(call debug_print_list,$(MOCKS_OBJS)) - @echo "All Input Dependency files:" - @$(call debug_print_list,$(DEP_FILES)) - @echo Stuff to clean: - @$(call debug_print_list,$(STUFF_TO_CLEAN)) - @echo Includes: - @$(call debug_print_list,$(INCLUDES)) - --include $(OTHER_MAKEFILE_TO_INCLUDE) diff --git a/platform/randlib/test/mbed-client-randlib/unittest/makefile_defines.txt b/platform/randlib/test/mbed-client-randlib/unittest/makefile_defines.txt deleted file mode 100644 index 0a350ee..0000000 --- a/platform/randlib/test/mbed-client-randlib/unittest/makefile_defines.txt +++ /dev/null @@ -1,19 +0,0 @@ -#--- Inputs ----# -CPPUTEST_HOME = /usr -CPPUTEST_USE_EXTENSIONS = Y -CPPUTEST_USE_VPATH = Y -CPPUTEST_USE_GCOV = Y -CPP_PLATFORM = gcc -INCLUDE_DIRS =\ - .\ - ../common\ - ../stubs\ - ../../../..\ - ../../../../source\ - ../../../../mbed-client-randlib\ - ../../../../../../../libService/libService\ - /usr/include\ - $(CPPUTEST_HOME)/include\ - -CPPUTESTFLAGS = -D__thumb2__ -w -CPPUTEST_CFLAGS += -std=gnu99 diff --git a/platform/randlib/test/mbed-client-randlib/unittest/randlib/Makefile b/platform/randlib/test/mbed-client-randlib/unittest/randlib/Makefile deleted file mode 100644 index 759be85..0000000 --- a/platform/randlib/test/mbed-client-randlib/unittest/randlib/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -include ../makefile_defines.txt - -COMPONENT_NAME = randLIB_unit - -#This must be changed manually -SRC_FILES = \ - ../../../../source/randLIB.c - -TEST_SRC_FILES = \ - main.cpp \ - randlibtest.cpp \ - test_randlib.c \ - ../stubs/random_stub.c \ - -include ../MakefileWorker.mk - -CPPUTESTFLAGS += -DFEA_TRACE_SUPPORT -DRANDLIB_PRNG diff --git a/platform/randlib/test/mbed-client-randlib/unittest/randlib/main.cpp b/platform/randlib/test/mbed-client-randlib/unittest/randlib/main.cpp deleted file mode 100644 index 2ace856..0000000 --- a/platform/randlib/test/mbed-client-randlib/unittest/randlib/main.cpp +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright (c) 2015 ARM. All rights reserved. - */ - -#include "CppUTest/CommandLineTestRunner.h" -#include "CppUTest/TestPlugin.h" -#include "CppUTest/TestRegistry.h" -#include "CppUTestExt/MockSupportPlugin.h" -int main(int ac, char **av) -{ - return CommandLineTestRunner::RunAllTests(ac, av); -} - -IMPORT_TEST_GROUP(randLIB); diff --git a/platform/randlib/test/mbed-client-randlib/unittest/randlib/randlibtest.cpp b/platform/randlib/test/mbed-client-randlib/unittest/randlib/randlibtest.cpp deleted file mode 100644 index 309896d..0000000 --- a/platform/randlib/test/mbed-client-randlib/unittest/randlib/randlibtest.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2016 ARM. All rights reserved. - */ -#include "CppUTest/TestHarness.h" -#include "test_randlib.h" - -TEST_GROUP(randLIB) -{ - void setup() { - } - - void teardown() { - } -}; - -TEST(randLIB, test_randLIB_seed_random) -{ - CHECK(test_randLIB_seed_random()); -} - -TEST(randLIB, test_randLIB_get_8bit) -{ - CHECK(test_randLIB_get_8bit()); -} - -TEST(randLIB, test_randLIB_get_16bit) -{ - CHECK(test_randLIB_get_16bit()); -} - -TEST(randLIB, test_randLIB_get_32bit) -{ - CHECK(test_randLIB_get_32bit()); -} - -TEST(randLIB, test_randLIB_get_64bit) -{ - CHECK(test_randLIB_get_64bit()); -} - -TEST(randLIB, test_randLIB_get_n_bytes_random) -{ - CHECK(test_randLIB_get_n_bytes_random()); -} - -TEST(randLIB, test_randLIB_get_random_in_range) -{ - CHECK(test_randLIB_get_random_in_range()); -} - -TEST(randLIB, test_randLIB_randomise_base) -{ - CHECK(test_randLIB_randomise_base()); -} diff --git a/platform/randlib/test/mbed-client-randlib/unittest/randlib/test_randlib.c b/platform/randlib/test/mbed-client-randlib/unittest/randlib/test_randlib.c deleted file mode 100644 index 3a9639f..0000000 --- a/platform/randlib/test/mbed-client-randlib/unittest/randlib/test_randlib.c +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright (c) 2016 ARM. All rights reserved. - */ -#include "test_randlib.h" -#include -#include -#include "randLIB.h" - -bool test_randLIB_seed_random() -{ - randLIB_reset(); - randLIB_seed_random(); - return true; -} - -bool test_randLIB_get_8bit() -{ - randLIB_reset(); - randLIB_seed_random(); - uint8_t test = randLIB_get_8bit(); - if (test == 0) { - test = randLIB_get_8bit(); - if (test == 0) { - return false; - } - } - return true; -} - -bool test_randLIB_get_16bit() -{ - randLIB_reset(); - randLIB_seed_random(); - uint16_t test = randLIB_get_16bit(); - if (test == 0) { - test = randLIB_get_16bit(); - if (test == 0) { - return false; - } - } - return true; -} - -bool test_randLIB_get_32bit() -{ - randLIB_reset(); - randLIB_seed_random(); - uint32_t test = randLIB_get_32bit(); - if (test == 0) { - test = randLIB_get_32bit(); - if (test == 0) { - return false; - } - } - return true; -} - -static bool test_output(uint32_t seed, bool seed_inc, const uint64_t expected[8]) -{ - random_stub_set_seed(seed, seed_inc); - randLIB_reset(); - randLIB_seed_random(); - for (int i = 0; i < 8; i++) { - if (randLIB_get_64bit() != expected[i]) { - return false; - } - } - - return true; -} - -bool test_randLIB_get_64bit() -{ - /* Initial 8 xoroshiro128+ values with initial seed of - * (0x0000000100000002, 0x00000003000000004). - */ - static const uint64_t expected1234[] = { - UINT64_C(0x0000000400000006), - UINT64_C(0x0100806200818026), - UINT64_C(0x2a30826271904706), - UINT64_C(0x918d7ea50109290d), - UINT64_C(0x5dcbd701c1e1c64c), - UINT64_C(0xaa129b152055f299), - UINT64_C(0x4c95c2b1e1038a4d), - UINT64_C(0x6479e7a3a75d865a) - }; - - if (!test_output(1, true, expected1234)) { - goto fail; - } - - /* If passed all zero seeds, seeding should detect this - * and use splitmix64 to create the actual seed - * (0xe220a8397b1dcdaf, 0x6e789e6aa1b965f4), - * and produce this output: - */ - static const uint64_t expected0000[] = { - UINT64_C(0x509946a41cd733a3), - UINT64_C(0x00885667b1934bfa), - UINT64_C(0x1061f9ad258fd5d5), - UINT64_C(0x3f8be44897a4317c), - UINT64_C(0x60da683bea50e6ab), - UINT64_C(0xd6b52f5379de1de0), - UINT64_C(0x2608bc9fedc5b750), - UINT64_C(0xb9fac9c7ec9de02a) - }; - - if (!test_output(0, false, expected0000)) { - goto fail; - } - - /* If passed all "4" seeds, seeding should detect this - * and use splitmix64 to create the actual seed - * (0x03910b0eab9b37e1, 0x0b309ab53d42b2a2), - * and produce this output: - */ - static const uint64_t expected4444[] = { - UINT64_C(0x0ec1a5c3e8ddea83), - UINT64_C(0x09e710b8faf5a491), - UINT64_C(0xd4102776f79448b4), - UINT64_C(0x5d61988b60091900), - UINT64_C(0xf6c8a72a9c72cb4b), - UINT64_C(0xb06923e0cf0f2fb1), - UINT64_C(0x24bbed475153f573), - UINT64_C(0xfff0b4bd08c5581f), - }; - - if (!test_output(4, false, expected4444)) { - goto fail; - } - - /* Last test used constant seed of 4, which is the default */ - return true; - -fail: - /* Put back the default seed of 4 (other tests might rely on it) */ - random_stub_set_seed(4, false); - return false; -} - -bool test_randLIB_get_n_bytes_random() -{ - randLIB_reset(); - randLIB_seed_random(); - - uint8_t dat[5]; - void *ret = randLIB_get_n_bytes_random(dat, 5); - if (ret != dat) { - return false; - } - - uint8_t dat2[5]; - randLIB_get_n_bytes_random(dat2, 5); - if (memcmp(dat, dat2, 5) == 0) { - return false; - } - - return true; -} - -bool test_randLIB_get_random_in_range() -{ - randLIB_reset(); - randLIB_seed_random(); - - uint16_t ret = randLIB_get_random_in_range(2, 2); - if (ret != 2) { - return false; - } - - ret = randLIB_get_random_in_range(2, 3); - if (ret != 2 && ret != 3) { - return false; - } - - ret = randLIB_get_random_in_range(0, 0xFFFF); - - return true; -} - -bool test_randLIB_randomise_base() -{ - randLIB_reset(); - randLIB_seed_random(); - - uint32_t ret = randLIB_randomise_base(0, 0, 0); - if (ret) { - return false; - } - ret = randLIB_randomise_base(0xffff0000, 0x8888, 0x8888); - if (ret != 0xffffffff) { - return false; - } - return true; -} diff --git a/platform/randlib/test/mbed-client-randlib/unittest/randlib/test_randlib.h b/platform/randlib/test/mbed-client-randlib/unittest/randlib/test_randlib.h deleted file mode 100644 index 54909d4..0000000 --- a/platform/randlib/test/mbed-client-randlib/unittest/randlib/test_randlib.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2016 ARM. All rights reserved. - */ -#ifndef TEST_RANDLIB_H -#define TEST_RANDLIB_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -bool test_randLIB_seed_random(); - -bool test_randLIB_get_8bit(); - -bool test_randLIB_get_16bit(); - -bool test_randLIB_get_32bit(); - -bool test_randLIB_get_64bit(); - -bool test_randLIB_get_n_bytes_random(); - -bool test_randLIB_get_random_in_range(); - -bool test_randLIB_randomise_base(); - - -#ifdef __cplusplus -} -#endif - -#endif // TEST_RANDLIB_H diff --git a/platform/randlib/test/mbed-client-randlib/unittest/run_tests b/platform/randlib/test/mbed-client-randlib/unittest/run_tests deleted file mode 100755 index 87f2f50..0000000 --- a/platform/randlib/test/mbed-client-randlib/unittest/run_tests +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash -echo -echo Build mbed client randlib unit tests -echo - -# Remember to add new test folder to Makefile -make clean -make all - -echo -echo Create results -echo -mkdir results - -find ./ -name '*.xml' | xargs cp -t ./results/ - -echo -echo Create coverage document -echo -mkdir coverages -cd coverages - -#copy the .gcda & .gcno for all test projects (no need to modify -#cp ../../../source/*.gc* . -#find ../ -name '*.gcda' | xargs cp -t . -#find ../ -name '*.gcno' | xargs cp -t . -#find . -name "test*" -type f -delete -#find . -name "*test*" -type f -delete -#find . -name "*stub*" -type f -delete -#rm -rf main.* - -lcov -q -d ../. -c -o app.info -lcov -q -r app.info "/test*" -o app.info -lcov -q -r app.info "/usr*" -o app.info -genhtml --no-branch-coverage app.info -cd .. -echo -echo -echo -echo Have a nice bug hunt! -echo -echo -echo diff --git a/platform/randlib/test/mbed-client-randlib/unittest/stubs/open_stub.c b/platform/randlib/test/mbed-client-randlib/unittest/stubs/open_stub.c deleted file mode 100644 index 6fda589..0000000 --- a/platform/randlib/test/mbed-client-randlib/unittest/stubs/open_stub.c +++ /dev/null @@ -1,24 +0,0 @@ -#include -#include -#include -#include -#include - -bool allow_open = true; -int __real_open(const char *path, int flags, ...); -int __wrap_open(const char *path, int flags, ...) -{ - if (allow_open) { - if (flags & O_CREAT) { - va_list vl; - va_start(vl, flags); - mode_t mode = va_arg(vl, mode_t); - va_end(vl); - return __real_open(path, flags, mode); - } else { - return __real_open(path, flags); - } - } else { - return -1; - } -} diff --git a/platform/randlib/test/mbed-client-randlib/unittest/stubs/random_stub.c b/platform/randlib/test/mbed-client-randlib/unittest/stubs/random_stub.c deleted file mode 100644 index c271839..0000000 --- a/platform/randlib/test/mbed-client-randlib/unittest/stubs/random_stub.c +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2016, ARM Limited, All Rights Reserved - */ - -#include "ns_types.h" - -static uint32_t seed_value = 4; -static bool seed_inc = false; - -void arm_random_module_init(void) -{ - -} - -uint32_t arm_random_seed_get(void) -{ - uint32_t result = seed_value; - if (seed_inc) { - ++seed_value; - } - return result; -} - -void random_stub_set_seed(uint32_t value, bool increment) -{ - seed_value = value; - seed_inc = increment; -} diff --git a/platform/randlib/tests/unit/Makefile b/platform/randlib/tests/unit/Makefile new file mode 100644 index 0000000..91cfcf9 --- /dev/null +++ b/platform/randlib/tests/unit/Makefile @@ -0,0 +1,23 @@ +#scan for folders having "Makefile" in them and remove 'this' to prevent loop +ifeq ($(OS),Windows_NT) +all: +clean: +else +DIRS := $(filter-out ./, $(sort $(dir $(shell find . -name 'Makefile')))) + +all: + for dir in $(DIRS); do \ + cd $$dir; make gcov; cd ..;\ + done + +clean: + for dir in $(DIRS); do \ + cd $$dir; make clean; cd ..;\ + done + rm -rf ../source/*gcov ../source/*gcda ../source/*o + rm -rf stubs/*gcov stubs/*gcda stubs/*o + rm -rf results/* + rm -rf coverages/* + rm -rf results + rm -rf coverages +endif diff --git a/platform/randlib/tests/unit/MakefileWorker.mk b/platform/randlib/tests/unit/MakefileWorker.mk new file mode 100644 index 0000000..2bfbec0 --- /dev/null +++ b/platform/randlib/tests/unit/MakefileWorker.mk @@ -0,0 +1,562 @@ +#--------- +# +# MakefileWorker.mk +# +# Include this helper file in your makefile +# It makes +# A static library +# A test executable +# +# See this example for parameter settings +# examples/Makefile +# +#---------- +# Inputs - these variables describe what to build +# +# INCLUDE_DIRS - Directories used to search for include files. +# This generates a -I for each directory +# SRC_DIRS - Directories containing source file to built into the library +# SRC_FILES - Specific source files to build into library. Helpful when not all code +# in a directory can be built for test (hopefully a temporary situation) +# TEST_SRC_DIRS - Directories containing unit test code build into the unit test runner +# These do not go in a library. They are explicitly included in the test runner +# TEST_SRC_FILES - Specific source files to build into the unit test runner +# These do not go in a library. They are explicitly included in the test runner +# MOCKS_SRC_DIRS - Directories containing mock source files to build into the test runner +# These do not go in a library. They are explicitly included in the test runner +#---------- +# You can adjust these variables to influence how to build the test target +# and where to put and name outputs +# See below to determine defaults +# COMPONENT_NAME - the name of the thing being built +# TEST_TARGET - name the test executable. By default it is +# $(COMPONENT_NAME)_tests +# Helpful if you want 1 > make files in the same directory with different +# executables as output. +# CPPUTEST_HOME - where CppUTest home dir found +# TARGET_PLATFORM - Influences how the outputs are generated by modifying the +# CPPUTEST_OBJS_DIR and CPPUTEST_LIB_DIR to use a sub-directory under the +# normal objs and lib directories. Also modifies where to search for the +# CPPUTEST_LIB to link against. +# CPPUTEST_OBJS_DIR - a directory where o and d files go +# CPPUTEST_LIB_DIR - a directory where libs go +# CPPUTEST_ENABLE_DEBUG - build for debug +# CPPUTEST_USE_MEM_LEAK_DETECTION - Links with overridden new and delete +# CPPUTEST_USE_STD_CPP_LIB - Set to N to keep the standard C++ library out +# of the test harness +# CPPUTEST_USE_GCOV - Turn on coverage analysis +# Clean then build with this flag set to Y, then 'make gcov' +# CPPUTEST_MAPFILE - generate a map file +# CPPUTEST_WARNINGFLAGS - overly picky by default +# OTHER_MAKEFILE_TO_INCLUDE - a hook to use this makefile to make +# other targets. Like CSlim, which is part of fitnesse +# CPPUTEST_USE_VPATH - Use Make's VPATH functionality to support user +# specification of source files and directories that aren't below +# the user's Makefile in the directory tree, like: +# SRC_DIRS += ../../lib/foo +# It defaults to N, and shouldn't be necessary except in the above case. +#---------- +# +# Other flags users can initialize to sneak in their settings +# CPPUTEST_CXXFLAGS - flags for the C++ compiler +# CPPUTEST_CPPFLAGS - flags for the C++ AND C preprocessor +# CPPUTEST_CFLAGS - flags for the C complier +# CPPUTEST_LDFLAGS - Linker flags +#---------- + +# Some behavior is weird on some platforms. Need to discover the platform. + +# Platforms +UNAME_OUTPUT = "$(shell uname -a)" +MACOSX_STR = Darwin +MINGW_STR = MINGW +CYGWIN_STR = CYGWIN +LINUX_STR = Linux +SUNOS_STR = SunOS +UNKNWOWN_OS_STR = Unknown + +# Compilers +CC_VERSION_OUTPUT ="$(shell $(CXX) -v 2>&1)" +CLANG_STR = clang +SUNSTUDIO_CXX_STR = SunStudio + +UNAME_OS = $(UNKNWOWN_OS_STR) + +ifeq ($(findstring $(MINGW_STR),$(UNAME_OUTPUT)),$(MINGW_STR)) + UNAME_OS = $(MINGW_STR) +endif + +ifeq ($(findstring $(CYGWIN_STR),$(UNAME_OUTPUT)),$(CYGWIN_STR)) + UNAME_OS = $(CYGWIN_STR) +endif + +ifeq ($(findstring $(LINUX_STR),$(UNAME_OUTPUT)),$(LINUX_STR)) + UNAME_OS = $(LINUX_STR) +endif + +ifeq ($(findstring $(MACOSX_STR),$(UNAME_OUTPUT)),$(MACOSX_STR)) + UNAME_OS = $(MACOSX_STR) +#lion has a problem with the 'v' part of -a + UNAME_OUTPUT = "$(shell uname -pmnrs)" +endif + +ifeq ($(findstring $(SUNOS_STR),$(UNAME_OUTPUT)),$(SUNOS_STR)) + UNAME_OS = $(SUNOS_STR) + + SUNSTUDIO_CXX_ERR_STR = CC -flags +ifeq ($(findstring $(SUNSTUDIO_CXX_ERR_STR),$(CC_VERSION_OUTPUT)),$(SUNSTUDIO_CXX_ERR_STR)) + CC_VERSION_OUTPUT ="$(shell $(CXX) -V 2>&1)" + COMPILER_NAME = $(SUNSTUDIO_CXX_STR) +endif +endif + +ifeq ($(findstring $(CLANG_STR),$(CC_VERSION_OUTPUT)),$(CLANG_STR)) + COMPILER_NAME = $(CLANG_STR) +endif + +#Kludge for mingw, it does not have cc.exe, but gcc.exe will do +ifeq ($(UNAME_OS),$(MINGW_STR)) + CC := gcc +endif + +#And another kludge. Exception handling in gcc 4.6.2 is broken when linking the +# Standard C++ library as a shared library. Unbelievable. +ifeq ($(UNAME_OS),$(MINGW_STR)) + CPPUTEST_LDFLAGS += -static +endif +ifeq ($(UNAME_OS),$(CYGWIN_STR)) + CPPUTEST_LDFLAGS += -static +endif + + +#Kludge for MacOsX gcc compiler on Darwin9 who can't handle pendantic +ifeq ($(UNAME_OS),$(MACOSX_STR)) +ifeq ($(findstring Version 9,$(UNAME_OUTPUT)),Version 9) + CPPUTEST_PEDANTIC_ERRORS = N +endif +endif + +ifndef COMPONENT_NAME + COMPONENT_NAME = name_this_in_the_makefile +endif + +# Debug on by default +ifndef CPPUTEST_ENABLE_DEBUG + CPPUTEST_ENABLE_DEBUG = Y +endif + +# new and delete for memory leak detection on by default +ifndef CPPUTEST_USE_MEM_LEAK_DETECTION + CPPUTEST_USE_MEM_LEAK_DETECTION = Y +endif + +# Use the standard C library +ifndef CPPUTEST_USE_STD_C_LIB + CPPUTEST_USE_STD_C_LIB = Y +endif + +# Use the standard C++ library +ifndef CPPUTEST_USE_STD_CPP_LIB + CPPUTEST_USE_STD_CPP_LIB = Y +endif + +# Use gcov, off by default +ifndef CPPUTEST_USE_GCOV + CPPUTEST_USE_GCOV = N +endif + +ifndef CPPUTEST_PEDANTIC_ERRORS + CPPUTEST_PEDANTIC_ERRORS = Y +endif + +# Default warnings +ifndef CPPUTEST_WARNINGFLAGS + CPPUTEST_WARNINGFLAGS = -Wall -Wextra -Wshadow -Wswitch-default -Wswitch-enum -Wconversion +ifeq ($(CPPUTEST_PEDANTIC_ERRORS), Y) +# CPPUTEST_WARNINGFLAGS += -pedantic-errors + CPPUTEST_WARNINGFLAGS += -pedantic +endif +ifeq ($(UNAME_OS),$(LINUX_STR)) + CPPUTEST_WARNINGFLAGS += -Wsign-conversion +endif + CPPUTEST_CXX_WARNINGFLAGS = -Woverloaded-virtual + CPPUTEST_C_WARNINGFLAGS = -Wstrict-prototypes +endif + +#Wonderful extra compiler warnings with clang +ifeq ($(COMPILER_NAME),$(CLANG_STR)) +# -Wno-disabled-macro-expansion -> Have to disable the macro expansion warning as the operator new overload warns on that. +# -Wno-padded -> I sort-of like this warning but if there is a bool at the end of the class, it seems impossible to remove it! (except by making padding explicit) +# -Wno-global-constructors Wno-exit-time-destructors -> Great warnings, but in CppUTest it is impossible to avoid as the automatic test registration depends on the global ctor and dtor +# -Wno-weak-vtables -> The TEST_GROUP macro declares a class and will automatically inline its methods. Thats ok as they are only in one translation unit. Unfortunately, the warning can't detect that, so it must be disabled. + CPPUTEST_CXX_WARNINGFLAGS += -Weverything -Wno-disabled-macro-expansion -Wno-padded -Wno-global-constructors -Wno-exit-time-destructors -Wno-weak-vtables + CPPUTEST_C_WARNINGFLAGS += -Weverything -Wno-padded +endif + +# Uhm. Maybe put some warning flags for SunStudio here? +ifeq ($(COMPILER_NAME),$(SUNSTUDIO_CXX_STR)) + CPPUTEST_CXX_WARNINGFLAGS = + CPPUTEST_C_WARNINGFLAGS = +endif + +# Default dir for temporary files (d, o) +ifndef CPPUTEST_OBJS_DIR +ifndef TARGET_PLATFORM + CPPUTEST_OBJS_DIR = objs +else + CPPUTEST_OBJS_DIR = objs/$(TARGET_PLATFORM) +endif +endif + +# Default dir for the outout library +ifndef CPPUTEST_LIB_DIR +ifndef TARGET_PLATFORM + CPPUTEST_LIB_DIR = lib +else + CPPUTEST_LIB_DIR = lib/$(TARGET_PLATFORM) +endif +endif + +# No map by default +ifndef CPPUTEST_MAP_FILE + CPPUTEST_MAP_FILE = N +endif + +# No extentions is default +ifndef CPPUTEST_USE_EXTENSIONS + CPPUTEST_USE_EXTENSIONS = N +endif + +# No VPATH is default +ifndef CPPUTEST_USE_VPATH + CPPUTEST_USE_VPATH := N +endif +# Make empty, instead of 'N', for usage in $(if ) conditionals +ifneq ($(CPPUTEST_USE_VPATH), Y) + CPPUTEST_USE_VPATH := +endif + +ifndef TARGET_PLATFORM +#CPPUTEST_LIB_LINK_DIR = $(CPPUTEST_HOME)/lib +CPPUTEST_LIB_LINK_DIR = /usr/lib/x86_64-linux-gnu +else +CPPUTEST_LIB_LINK_DIR = $(CPPUTEST_HOME)/lib/$(TARGET_PLATFORM) +endif + +# -------------------------------------- +# derived flags in the following area +# -------------------------------------- + +# Without the C library, we'll need to disable the C++ library and ... +ifeq ($(CPPUTEST_USE_STD_C_LIB), N) + CPPUTEST_USE_STD_CPP_LIB = N + CPPUTEST_USE_MEM_LEAK_DETECTION = N + CPPUTEST_CPPFLAGS += -DCPPUTEST_STD_C_LIB_DISABLED + CPPUTEST_CPPFLAGS += -nostdinc +endif + +CPPUTEST_CPPFLAGS += -DCPPUTEST_COMPILATION + +ifeq ($(CPPUTEST_USE_MEM_LEAK_DETECTION), N) + CPPUTEST_CPPFLAGS += -DCPPUTEST_MEM_LEAK_DETECTION_DISABLED +else + ifndef CPPUTEST_MEMLEAK_DETECTOR_NEW_MACRO_FILE + CPPUTEST_MEMLEAK_DETECTOR_NEW_MACRO_FILE = -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorNewMacros.h + endif + ifndef CPPUTEST_MEMLEAK_DETECTOR_MALLOC_MACRO_FILE + CPPUTEST_MEMLEAK_DETECTOR_MALLOC_MACRO_FILE = -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorMallocMacros.h + endif +endif + +ifeq ($(CPPUTEST_ENABLE_DEBUG), Y) + CPPUTEST_CXXFLAGS += -g + CPPUTEST_CFLAGS += -g + CPPUTEST_LDFLAGS += -g +endif + +ifeq ($(CPPUTEST_USE_STD_CPP_LIB), N) + CPPUTEST_CPPFLAGS += -DCPPUTEST_STD_CPP_LIB_DISABLED +ifeq ($(CPPUTEST_USE_STD_C_LIB), Y) + CPPUTEST_CXXFLAGS += -nostdinc++ +endif +endif + +ifdef $(GMOCK_HOME) + GTEST_HOME = $(GMOCK_HOME)/gtest + CPPUTEST_CPPFLAGS += -I$(GMOCK_HOME)/include + GMOCK_LIBRARY = $(GMOCK_HOME)/lib/.libs/libgmock.a + LD_LIBRARIES += $(GMOCK_LIBRARY) + CPPUTEST_CPPFLAGS += -DINCLUDE_GTEST_TESTS + CPPUTEST_WARNINGFLAGS = + CPPUTEST_CPPFLAGS += -I$(GTEST_HOME)/include -I$(GTEST_HOME) + GTEST_LIBRARY = $(GTEST_HOME)/lib/.libs/libgtest.a + LD_LIBRARIES += $(GTEST_LIBRARY) +endif + + +ifeq ($(CPPUTEST_USE_GCOV), Y) + CPPUTEST_CXXFLAGS += -fprofile-arcs -ftest-coverage + CPPUTEST_CFLAGS += -fprofile-arcs -ftest-coverage +endif + +CPPUTEST_CXXFLAGS += $(CPPUTEST_WARNINGFLAGS) $(CPPUTEST_CXX_WARNINGFLAGS) +CPPUTEST_CPPFLAGS += $(CPPUTEST_WARNINGFLAGS) +CPPUTEST_CXXFLAGS += $(CPPUTEST_MEMLEAK_DETECTOR_NEW_MACRO_FILE) +CPPUTEST_CPPFLAGS += $(CPPUTEST_MEMLEAK_DETECTOR_MALLOC_MACRO_FILE) +CPPUTEST_CFLAGS += $(CPPUTEST_C_WARNINGFLAGS) + +TARGET_MAP = $(COMPONENT_NAME).map.txt +ifeq ($(CPPUTEST_MAP_FILE), Y) + CPPUTEST_LDFLAGS += -Wl,-map,$(TARGET_MAP) +endif + +# Link with CppUTest lib +CPPUTEST_LIB = $(CPPUTEST_LIB_LINK_DIR)/libCppUTest.a + +ifeq ($(CPPUTEST_USE_EXTENSIONS), Y) +CPPUTEST_LIB += $(CPPUTEST_LIB_LINK_DIR)/libCppUTestExt.a +endif + +ifdef CPPUTEST_STATIC_REALTIME + LD_LIBRARIES += -lrt +endif + +TARGET_LIB = \ + $(CPPUTEST_LIB_DIR)/lib$(COMPONENT_NAME).a + +ifndef TEST_TARGET + ifndef TARGET_PLATFORM + TEST_TARGET = $(COMPONENT_NAME)_tests + else + TEST_TARGET = $(COMPONENT_NAME)_$(TARGET_PLATFORM)_tests + endif +endif + +#Helper Functions +get_src_from_dir = $(wildcard $1/*.cpp) $(wildcard $1/*.cc) $(wildcard $1/*.c) +get_dirs_from_dirspec = $(wildcard $1) +get_src_from_dir_list = $(foreach dir, $1, $(call get_src_from_dir,$(dir))) +__src_to = $(subst .c,$1, $(subst .cc,$1, $(subst .cpp,$1,$(if $(CPPUTEST_USE_VPATH),$(notdir $2),$2)))) +src_to = $(addprefix $(CPPUTEST_OBJS_DIR)/,$(call __src_to,$1,$2)) +src_to_o = $(call src_to,.o,$1) +src_to_d = $(call src_to,.d,$1) +src_to_gcda = $(call src_to,.gcda,$1) +src_to_gcno = $(call src_to,.gcno,$1) +time = $(shell date +%s) +delta_t = $(eval minus, $1, $2) +debug_print_list = $(foreach word,$1,echo " $(word)";) echo; + +#Derived +STUFF_TO_CLEAN += $(TEST_TARGET) $(TEST_TARGET).exe $(TARGET_LIB) $(TARGET_MAP) + +SRC += $(call get_src_from_dir_list, $(SRC_DIRS)) $(SRC_FILES) +OBJ = $(call src_to_o,$(SRC)) + +STUFF_TO_CLEAN += $(OBJ) + +TEST_SRC += $(call get_src_from_dir_list, $(TEST_SRC_DIRS)) $(TEST_SRC_FILES) +TEST_OBJS = $(call src_to_o,$(TEST_SRC)) +STUFF_TO_CLEAN += $(TEST_OBJS) + + +MOCKS_SRC += $(call get_src_from_dir_list, $(MOCKS_SRC_DIRS)) +MOCKS_OBJS = $(call src_to_o,$(MOCKS_SRC)) +STUFF_TO_CLEAN += $(MOCKS_OBJS) + +ALL_SRC = $(SRC) $(TEST_SRC) $(MOCKS_SRC) + +# If we're using VPATH +ifeq ($(CPPUTEST_USE_VPATH), Y) +# gather all the source directories and add them + VPATH += $(sort $(dir $(ALL_SRC))) +# Add the component name to the objs dir path, to differentiate between same-name objects + CPPUTEST_OBJS_DIR := $(addsuffix /$(COMPONENT_NAME),$(CPPUTEST_OBJS_DIR)) +endif + +#Test coverage with gcov +GCOV_OUTPUT = gcov_output.txt +GCOV_REPORT = gcov_report.txt +GCOV_ERROR = gcov_error.txt +GCOV_GCDA_FILES = $(call src_to_gcda, $(ALL_SRC)) +GCOV_GCNO_FILES = $(call src_to_gcno, $(ALL_SRC)) +TEST_OUTPUT = $(TEST_TARGET).txt +STUFF_TO_CLEAN += \ + $(GCOV_OUTPUT)\ + $(GCOV_REPORT)\ + $(GCOV_REPORT).html\ + $(GCOV_ERROR)\ + $(GCOV_GCDA_FILES)\ + $(GCOV_GCNO_FILES)\ + $(TEST_OUTPUT) + +#The gcda files for gcov need to be deleted before each run +#To avoid annoying messages. +GCOV_CLEAN = $(SILENCE)rm -f $(GCOV_GCDA_FILES) $(GCOV_OUTPUT) $(GCOV_REPORT) $(GCOV_ERROR) +RUN_TEST_TARGET = $(SILENCE) $(GCOV_CLEAN) ; echo "Running $(TEST_TARGET)"; ./$(TEST_TARGET) $(CPPUTEST_EXE_FLAGS) -ojunit + +ifeq ($(CPPUTEST_USE_GCOV), Y) + + ifeq ($(COMPILER_NAME),$(CLANG_STR)) + LD_LIBRARIES += --coverage + else + LD_LIBRARIES += -lgcov + endif +endif + + +INCLUDES_DIRS_EXPANDED = $(call get_dirs_from_dirspec, $(INCLUDE_DIRS)) +INCLUDES += $(foreach dir, $(INCLUDES_DIRS_EXPANDED), -I$(dir)) +MOCK_DIRS_EXPANDED = $(call get_dirs_from_dirspec, $(MOCKS_SRC_DIRS)) +INCLUDES += $(foreach dir, $(MOCK_DIRS_EXPANDED), -I$(dir)) + +CPPUTEST_CPPFLAGS += $(INCLUDES) $(CPPUTESTFLAGS) + +DEP_FILES = $(call src_to_d, $(ALL_SRC)) +STUFF_TO_CLEAN += $(DEP_FILES) $(PRODUCTION_CODE_START) $(PRODUCTION_CODE_END) +STUFF_TO_CLEAN += $(STDLIB_CODE_START) $(MAP_FILE) cpputest_*.xml junit_run_output + +# We'll use the CPPUTEST_CFLAGS etc so that you can override AND add to the CppUTest flags +CFLAGS = $(CPPUTEST_CFLAGS) $(CPPUTEST_ADDITIONAL_CFLAGS) +CPPFLAGS = $(CPPUTEST_CPPFLAGS) $(CPPUTEST_ADDITIONAL_CPPFLAGS) +CXXFLAGS = $(CPPUTEST_CXXFLAGS) $(CPPUTEST_ADDITIONAL_CXXFLAGS) +LDFLAGS = $(CPPUTEST_LDFLAGS) $(CPPUTEST_ADDITIONAL_LDFLAGS) + +# Don't consider creating the archive a warning condition that does STDERR output +ARFLAGS := $(ARFLAGS)c + +DEP_FLAGS=-MMD -MP + +# Some macros for programs to be overridden. For some reason, these are not in Make defaults +RANLIB = ranlib + +# Targets + +.PHONY: all +all: start $(TEST_TARGET) + $(RUN_TEST_TARGET) + +.PHONY: start +start: $(TEST_TARGET) + $(SILENCE)START_TIME=$(call time) + +.PHONY: all_no_tests +all_no_tests: $(TEST_TARGET) + +.PHONY: flags +flags: + @echo + @echo "OS ${UNAME_OS}" + @echo "Compile C and C++ source with CPPFLAGS:" + @$(call debug_print_list,$(CPPFLAGS)) + @echo "Compile C++ source with CXXFLAGS:" + @$(call debug_print_list,$(CXXFLAGS)) + @echo "Compile C source with CFLAGS:" + @$(call debug_print_list,$(CFLAGS)) + @echo "Link with LDFLAGS:" + @$(call debug_print_list,$(LDFLAGS)) + @echo "Link with LD_LIBRARIES:" + @$(call debug_print_list,$(LD_LIBRARIES)) + @echo "Create libraries with ARFLAGS:" + @$(call debug_print_list,$(ARFLAGS)) + +TEST_DEPS = $(TEST_OBJS) $(MOCKS_OBJS) $(PRODUCTION_CODE_START) $(TARGET_LIB) $(USER_LIBS) $(PRODUCTION_CODE_END) $(CPPUTEST_LIB) $(STDLIB_CODE_START) +test-deps: $(TEST_DEPS) + +$(TEST_TARGET): $(TEST_DEPS) + @echo Linking $@ + $(SILENCE)$(CXX) -o $@ $^ $(LD_LIBRARIES) $(LDFLAGS) + +$(TARGET_LIB): $(OBJ) + @echo Building archive $@ + $(SILENCE)mkdir -p $(dir $@) + $(SILENCE)$(AR) $(ARFLAGS) $@ $^ + $(SILENCE)$(RANLIB) $@ + +test: $(TEST_TARGET) + $(RUN_TEST_TARGET) | tee $(TEST_OUTPUT) + +vtest: $(TEST_TARGET) + $(RUN_TEST_TARGET) -v | tee $(TEST_OUTPUT) + +$(CPPUTEST_OBJS_DIR)/%.o: %.cc + @echo compiling $(notdir $<) + $(SILENCE)mkdir -p $(dir $@) + $(SILENCE)$(COMPILE.cpp) $(DEP_FLAGS) $(OUTPUT_OPTION) $< + +$(CPPUTEST_OBJS_DIR)/%.o: %.cpp + @echo compiling $(notdir $<) + $(SILENCE)mkdir -p $(dir $@) + $(SILENCE)$(COMPILE.cpp) $(DEP_FLAGS) $(OUTPUT_OPTION) $< + +$(CPPUTEST_OBJS_DIR)/%.o: %.c + @echo compiling $(notdir $<) + $(SILENCE)mkdir -p $(dir $@) + $(SILENCE)$(COMPILE.c) $(DEP_FLAGS) $(OUTPUT_OPTION) $< + +ifneq "$(MAKECMDGOALS)" "clean" +-include $(DEP_FILES) +endif + +.PHONY: clean +clean: + @echo Making clean + $(SILENCE)$(RM) $(STUFF_TO_CLEAN) + $(SILENCE)rm -rf gcov objs #$(CPPUTEST_OBJS_DIR) + $(SILENCE)rm -rf $(CPPUTEST_LIB_DIR) + $(SILENCE)find . -name "*.gcno" | xargs rm -f + $(SILENCE)find . -name "*.gcda" | xargs rm -f + +#realclean gets rid of all gcov, o and d files in the directory tree +#not just the ones made by this makefile +.PHONY: realclean +realclean: clean + $(SILENCE)rm -rf gcov + $(SILENCE)find . -name "*.gdcno" | xargs rm -f + $(SILENCE)find . -name "*.[do]" | xargs rm -f + +gcov: test +ifeq ($(CPPUTEST_USE_VPATH), Y) + $(SILENCE)gcov --object-directory $(CPPUTEST_OBJS_DIR) $(SRC) >> $(GCOV_OUTPUT) 2>> $(GCOV_ERROR) +else + $(SILENCE)for d in $(SRC_DIRS) ; do \ + gcov --object-directory $(CPPUTEST_OBJS_DIR)/$$d $$d/*.c $$d/*.cpp >> $(GCOV_OUTPUT) 2>>$(GCOV_ERROR) ; \ + done + $(SILENCE)for f in $(SRC_FILES) ; do \ + gcov --object-directory $(CPPUTEST_OBJS_DIR)/$$f $$f >> $(GCOV_OUTPUT) 2>>$(GCOV_ERROR) ; \ + done +endif +# $(CPPUTEST_HOME)/scripts/filterGcov.sh $(GCOV_OUTPUT) $(GCOV_ERROR) $(GCOV_REPORT) $(TEST_OUTPUT) + /usr/share/cpputest/scripts/filterGcov.sh $(GCOV_OUTPUT) $(GCOV_ERROR) $(GCOV_REPORT) $(TEST_OUTPUT) + $(SILENCE)cat $(GCOV_REPORT) + $(SILENCE)mkdir -p gcov + $(SILENCE)mv *.gcov gcov + $(SILENCE)mv gcov_* gcov + @echo "See gcov directory for details" + +.PHONEY: format +format: + $(CPPUTEST_HOME)/scripts/reformat.sh $(PROJECT_HOME_DIR) + +.PHONEY: debug +debug: + @echo + @echo "Target Source files:" + @$(call debug_print_list,$(SRC)) + @echo "Target Object files:" + @$(call debug_print_list,$(OBJ)) + @echo "Test Source files:" + @$(call debug_print_list,$(TEST_SRC)) + @echo "Test Object files:" + @$(call debug_print_list,$(TEST_OBJS)) + @echo "Mock Source files:" + @$(call debug_print_list,$(MOCKS_SRC)) + @echo "Mock Object files:" + @$(call debug_print_list,$(MOCKS_OBJS)) + @echo "All Input Dependency files:" + @$(call debug_print_list,$(DEP_FILES)) + @echo Stuff to clean: + @$(call debug_print_list,$(STUFF_TO_CLEAN)) + @echo Includes: + @$(call debug_print_list,$(INCLUDES)) + +-include $(OTHER_MAKEFILE_TO_INCLUDE) diff --git a/platform/randlib/tests/unit/makefile_defines.txt b/platform/randlib/tests/unit/makefile_defines.txt new file mode 100644 index 0000000..0a350ee --- /dev/null +++ b/platform/randlib/tests/unit/makefile_defines.txt @@ -0,0 +1,19 @@ +#--- Inputs ----# +CPPUTEST_HOME = /usr +CPPUTEST_USE_EXTENSIONS = Y +CPPUTEST_USE_VPATH = Y +CPPUTEST_USE_GCOV = Y +CPP_PLATFORM = gcc +INCLUDE_DIRS =\ + .\ + ../common\ + ../stubs\ + ../../../..\ + ../../../../source\ + ../../../../mbed-client-randlib\ + ../../../../../../../libService/libService\ + /usr/include\ + $(CPPUTEST_HOME)/include\ + +CPPUTESTFLAGS = -D__thumb2__ -w +CPPUTEST_CFLAGS += -std=gnu99 diff --git a/platform/randlib/tests/unit/randlib/Makefile b/platform/randlib/tests/unit/randlib/Makefile new file mode 100644 index 0000000..759be85 --- /dev/null +++ b/platform/randlib/tests/unit/randlib/Makefile @@ -0,0 +1,17 @@ +include ../makefile_defines.txt + +COMPONENT_NAME = randLIB_unit + +#This must be changed manually +SRC_FILES = \ + ../../../../source/randLIB.c + +TEST_SRC_FILES = \ + main.cpp \ + randlibtest.cpp \ + test_randlib.c \ + ../stubs/random_stub.c \ + +include ../MakefileWorker.mk + +CPPUTESTFLAGS += -DFEA_TRACE_SUPPORT -DRANDLIB_PRNG diff --git a/platform/randlib/tests/unit/randlib/main.cpp b/platform/randlib/tests/unit/randlib/main.cpp new file mode 100644 index 0000000..2ace856 --- /dev/null +++ b/platform/randlib/tests/unit/randlib/main.cpp @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2015 ARM. All rights reserved. + */ + +#include "CppUTest/CommandLineTestRunner.h" +#include "CppUTest/TestPlugin.h" +#include "CppUTest/TestRegistry.h" +#include "CppUTestExt/MockSupportPlugin.h" +int main(int ac, char **av) +{ + return CommandLineTestRunner::RunAllTests(ac, av); +} + +IMPORT_TEST_GROUP(randLIB); diff --git a/platform/randlib/tests/unit/randlib/randlibtest.cpp b/platform/randlib/tests/unit/randlib/randlibtest.cpp new file mode 100644 index 0000000..309896d --- /dev/null +++ b/platform/randlib/tests/unit/randlib/randlibtest.cpp @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2016 ARM. All rights reserved. + */ +#include "CppUTest/TestHarness.h" +#include "test_randlib.h" + +TEST_GROUP(randLIB) +{ + void setup() { + } + + void teardown() { + } +}; + +TEST(randLIB, test_randLIB_seed_random) +{ + CHECK(test_randLIB_seed_random()); +} + +TEST(randLIB, test_randLIB_get_8bit) +{ + CHECK(test_randLIB_get_8bit()); +} + +TEST(randLIB, test_randLIB_get_16bit) +{ + CHECK(test_randLIB_get_16bit()); +} + +TEST(randLIB, test_randLIB_get_32bit) +{ + CHECK(test_randLIB_get_32bit()); +} + +TEST(randLIB, test_randLIB_get_64bit) +{ + CHECK(test_randLIB_get_64bit()); +} + +TEST(randLIB, test_randLIB_get_n_bytes_random) +{ + CHECK(test_randLIB_get_n_bytes_random()); +} + +TEST(randLIB, test_randLIB_get_random_in_range) +{ + CHECK(test_randLIB_get_random_in_range()); +} + +TEST(randLIB, test_randLIB_randomise_base) +{ + CHECK(test_randLIB_randomise_base()); +} diff --git a/platform/randlib/tests/unit/randlib/test_randlib.c b/platform/randlib/tests/unit/randlib/test_randlib.c new file mode 100644 index 0000000..3a9639f --- /dev/null +++ b/platform/randlib/tests/unit/randlib/test_randlib.c @@ -0,0 +1,195 @@ +/* + * Copyright (c) 2016 ARM. All rights reserved. + */ +#include "test_randlib.h" +#include +#include +#include "randLIB.h" + +bool test_randLIB_seed_random() +{ + randLIB_reset(); + randLIB_seed_random(); + return true; +} + +bool test_randLIB_get_8bit() +{ + randLIB_reset(); + randLIB_seed_random(); + uint8_t test = randLIB_get_8bit(); + if (test == 0) { + test = randLIB_get_8bit(); + if (test == 0) { + return false; + } + } + return true; +} + +bool test_randLIB_get_16bit() +{ + randLIB_reset(); + randLIB_seed_random(); + uint16_t test = randLIB_get_16bit(); + if (test == 0) { + test = randLIB_get_16bit(); + if (test == 0) { + return false; + } + } + return true; +} + +bool test_randLIB_get_32bit() +{ + randLIB_reset(); + randLIB_seed_random(); + uint32_t test = randLIB_get_32bit(); + if (test == 0) { + test = randLIB_get_32bit(); + if (test == 0) { + return false; + } + } + return true; +} + +static bool test_output(uint32_t seed, bool seed_inc, const uint64_t expected[8]) +{ + random_stub_set_seed(seed, seed_inc); + randLIB_reset(); + randLIB_seed_random(); + for (int i = 0; i < 8; i++) { + if (randLIB_get_64bit() != expected[i]) { + return false; + } + } + + return true; +} + +bool test_randLIB_get_64bit() +{ + /* Initial 8 xoroshiro128+ values with initial seed of + * (0x0000000100000002, 0x00000003000000004). + */ + static const uint64_t expected1234[] = { + UINT64_C(0x0000000400000006), + UINT64_C(0x0100806200818026), + UINT64_C(0x2a30826271904706), + UINT64_C(0x918d7ea50109290d), + UINT64_C(0x5dcbd701c1e1c64c), + UINT64_C(0xaa129b152055f299), + UINT64_C(0x4c95c2b1e1038a4d), + UINT64_C(0x6479e7a3a75d865a) + }; + + if (!test_output(1, true, expected1234)) { + goto fail; + } + + /* If passed all zero seeds, seeding should detect this + * and use splitmix64 to create the actual seed + * (0xe220a8397b1dcdaf, 0x6e789e6aa1b965f4), + * and produce this output: + */ + static const uint64_t expected0000[] = { + UINT64_C(0x509946a41cd733a3), + UINT64_C(0x00885667b1934bfa), + UINT64_C(0x1061f9ad258fd5d5), + UINT64_C(0x3f8be44897a4317c), + UINT64_C(0x60da683bea50e6ab), + UINT64_C(0xd6b52f5379de1de0), + UINT64_C(0x2608bc9fedc5b750), + UINT64_C(0xb9fac9c7ec9de02a) + }; + + if (!test_output(0, false, expected0000)) { + goto fail; + } + + /* If passed all "4" seeds, seeding should detect this + * and use splitmix64 to create the actual seed + * (0x03910b0eab9b37e1, 0x0b309ab53d42b2a2), + * and produce this output: + */ + static const uint64_t expected4444[] = { + UINT64_C(0x0ec1a5c3e8ddea83), + UINT64_C(0x09e710b8faf5a491), + UINT64_C(0xd4102776f79448b4), + UINT64_C(0x5d61988b60091900), + UINT64_C(0xf6c8a72a9c72cb4b), + UINT64_C(0xb06923e0cf0f2fb1), + UINT64_C(0x24bbed475153f573), + UINT64_C(0xfff0b4bd08c5581f), + }; + + if (!test_output(4, false, expected4444)) { + goto fail; + } + + /* Last test used constant seed of 4, which is the default */ + return true; + +fail: + /* Put back the default seed of 4 (other tests might rely on it) */ + random_stub_set_seed(4, false); + return false; +} + +bool test_randLIB_get_n_bytes_random() +{ + randLIB_reset(); + randLIB_seed_random(); + + uint8_t dat[5]; + void *ret = randLIB_get_n_bytes_random(dat, 5); + if (ret != dat) { + return false; + } + + uint8_t dat2[5]; + randLIB_get_n_bytes_random(dat2, 5); + if (memcmp(dat, dat2, 5) == 0) { + return false; + } + + return true; +} + +bool test_randLIB_get_random_in_range() +{ + randLIB_reset(); + randLIB_seed_random(); + + uint16_t ret = randLIB_get_random_in_range(2, 2); + if (ret != 2) { + return false; + } + + ret = randLIB_get_random_in_range(2, 3); + if (ret != 2 && ret != 3) { + return false; + } + + ret = randLIB_get_random_in_range(0, 0xFFFF); + + return true; +} + +bool test_randLIB_randomise_base() +{ + randLIB_reset(); + randLIB_seed_random(); + + uint32_t ret = randLIB_randomise_base(0, 0, 0); + if (ret) { + return false; + } + ret = randLIB_randomise_base(0xffff0000, 0x8888, 0x8888); + if (ret != 0xffffffff) { + return false; + } + return true; +} diff --git a/platform/randlib/tests/unit/randlib/test_randlib.h b/platform/randlib/tests/unit/randlib/test_randlib.h new file mode 100644 index 0000000..54909d4 --- /dev/null +++ b/platform/randlib/tests/unit/randlib/test_randlib.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2016 ARM. All rights reserved. + */ +#ifndef TEST_RANDLIB_H +#define TEST_RANDLIB_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +bool test_randLIB_seed_random(); + +bool test_randLIB_get_8bit(); + +bool test_randLIB_get_16bit(); + +bool test_randLIB_get_32bit(); + +bool test_randLIB_get_64bit(); + +bool test_randLIB_get_n_bytes_random(); + +bool test_randLIB_get_random_in_range(); + +bool test_randLIB_randomise_base(); + + +#ifdef __cplusplus +} +#endif + +#endif // TEST_RANDLIB_H diff --git a/platform/randlib/tests/unit/run_tests b/platform/randlib/tests/unit/run_tests new file mode 100755 index 0000000..87f2f50 --- /dev/null +++ b/platform/randlib/tests/unit/run_tests @@ -0,0 +1,43 @@ +#!/bin/bash +echo +echo Build mbed client randlib unit tests +echo + +# Remember to add new test folder to Makefile +make clean +make all + +echo +echo Create results +echo +mkdir results + +find ./ -name '*.xml' | xargs cp -t ./results/ + +echo +echo Create coverage document +echo +mkdir coverages +cd coverages + +#copy the .gcda & .gcno for all test projects (no need to modify +#cp ../../../source/*.gc* . +#find ../ -name '*.gcda' | xargs cp -t . +#find ../ -name '*.gcno' | xargs cp -t . +#find . -name "test*" -type f -delete +#find . -name "*test*" -type f -delete +#find . -name "*stub*" -type f -delete +#rm -rf main.* + +lcov -q -d ../. -c -o app.info +lcov -q -r app.info "/test*" -o app.info +lcov -q -r app.info "/usr*" -o app.info +genhtml --no-branch-coverage app.info +cd .. +echo +echo +echo +echo Have a nice bug hunt! +echo +echo +echo diff --git a/platform/randlib/tests/unit/stubs/open_stub.c b/platform/randlib/tests/unit/stubs/open_stub.c new file mode 100644 index 0000000..6fda589 --- /dev/null +++ b/platform/randlib/tests/unit/stubs/open_stub.c @@ -0,0 +1,24 @@ +#include +#include +#include +#include +#include + +bool allow_open = true; +int __real_open(const char *path, int flags, ...); +int __wrap_open(const char *path, int flags, ...) +{ + if (allow_open) { + if (flags & O_CREAT) { + va_list vl; + va_start(vl, flags); + mode_t mode = va_arg(vl, mode_t); + va_end(vl); + return __real_open(path, flags, mode); + } else { + return __real_open(path, flags); + } + } else { + return -1; + } +} diff --git a/platform/randlib/tests/unit/stubs/random_stub.c b/platform/randlib/tests/unit/stubs/random_stub.c new file mode 100644 index 0000000..c271839 --- /dev/null +++ b/platform/randlib/tests/unit/stubs/random_stub.c @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2016, ARM Limited, All Rights Reserved + */ + +#include "ns_types.h" + +static uint32_t seed_value = 4; +static bool seed_inc = false; + +void arm_random_module_init(void) +{ + +} + +uint32_t arm_random_seed_get(void) +{ + uint32_t result = seed_value; + if (seed_inc) { + ++seed_value; + } + return result; +} + +void random_stub_set_seed(uint32_t value, bool increment) +{ + seed_value = value; + seed_inc = increment; +}