From 2094f0e30cbdfc67dd6f5ebe4081c1346af7c0e0 Mon Sep 17 00:00:00 2001
From: Marie Brunet Carteaux <marie.brunet@insa-rennes.fr>
Date: Thu, 21 Apr 2016 16:51:44 +0200
Subject: [PATCH] Modifications du fichier ElderInternalIgnition.cbp
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- Intégration de la librairie Cmocka au dossier Libs
- Configuration du projet pour permettre d'utiliser Cmocka
---
 .../ElderInternalIgnition.cbp                 |    7 +-
 .../CMake/cmocka/cmocka-config-version.cmake  |   11 +
 .../CMake/cmocka/cmocka-config.cmake          |   11 +
 Libs/cmocka-1.0.0/bin/libcmocka.dll           |  Bin 0 -> 167599 bytes
 Libs/cmocka-1.0.0/include/cmocka.h            | 2044 +++++++++++++++++
 Libs/cmocka-1.0.0/include/cmocka_pbc.h        |   62 +
 Libs/cmocka-1.0.0/lib/cmocka.dll.a            |  Bin 0 -> 28648 bytes
 Libs/cmocka-1.0.0/lib/pkgconfig/cmocka.pc     |    6 +
 8 files changed, 2139 insertions(+), 2 deletions(-)
 create mode 100644 Libs/cmocka-1.0.0/CMake/cmocka/cmocka-config-version.cmake
 create mode 100644 Libs/cmocka-1.0.0/CMake/cmocka/cmocka-config.cmake
 create mode 100644 Libs/cmocka-1.0.0/bin/libcmocka.dll
 create mode 100644 Libs/cmocka-1.0.0/include/cmocka.h
 create mode 100644 Libs/cmocka-1.0.0/include/cmocka_pbc.h
 create mode 100644 Libs/cmocka-1.0.0/lib/cmocka.dll.a
 create mode 100644 Libs/cmocka-1.0.0/lib/pkgconfig/cmocka.pc

diff --git a/ElderInternalIgnition/ElderInternalIgnition.cbp b/ElderInternalIgnition/ElderInternalIgnition.cbp
index 8f30a66..e9f1db8 100644
--- a/ElderInternalIgnition/ElderInternalIgnition.cbp
+++ b/ElderInternalIgnition/ElderInternalIgnition.cbp
@@ -32,11 +32,14 @@
 			<Add directory="./../Libs/libroxml-2.3.0/src" />
 			<Add directory="./../src" />
 			<Add directory="./../Libs/SDL-1.2.15/include" />
+			<Add directory="../Libs/cmocka-1.0.0/include" />
 		</Compiler>
 		<Linker>
-			<Add library="..\Libs\libroxml-2.3.0\Build\libroxml.dll" />
-			<Add library=".\..\Libs\SDL-1.2.15\bin\SDL.dll" />
+			<Add library="../Libs/libroxml-2.3.0/Build/libroxml.dll" />
+			<Add library="./../Libs/SDL-1.2.15/bin/SDL.dll" />
+			<Add library="../Libs/cmocka-1.0.0/lib/cmocka.dll.a" />
 			<Add directory="./../Libs" />
+			<Add directory="../Libs/cmocka-1.0.0/lib" />
 		</Linker>
 		<Unit filename="../src/AffichageConsole.c">
 			<Option compilerVar="CC" />
diff --git a/Libs/cmocka-1.0.0/CMake/cmocka/cmocka-config-version.cmake b/Libs/cmocka-1.0.0/CMake/cmocka/cmocka-config-version.cmake
new file mode 100644
index 0000000..71fee38
--- /dev/null
+++ b/Libs/cmocka-1.0.0/CMake/cmocka/cmocka-config-version.cmake
@@ -0,0 +1,11 @@
+set(PACKAGE_VERSION 1.0.0)
+
+# Check whether the requested PACKAGE_FIND_VERSION is compatible
+if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
+    set(PACKAGE_VERSION_COMPATIBLE FALSE)
+else()
+    set(PACKAGE_VERSION_COMPATIBLE TRUE)
+    if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
+        set(PACKAGE_VERSION_EXACT TRUE)
+    endif()
+endif()
diff --git a/Libs/cmocka-1.0.0/CMake/cmocka/cmocka-config.cmake b/Libs/cmocka-1.0.0/CMake/cmocka/cmocka-config.cmake
new file mode 100644
index 0000000..607ef23
--- /dev/null
+++ b/Libs/cmocka-1.0.0/CMake/cmocka/cmocka-config.cmake
@@ -0,0 +1,11 @@
+get_filename_component(CMOCKA_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+
+if (EXISTS "${CMOCKA_CMAKE_DIR}/CMakeCache.txt")
+    # In build tree
+    include(${CMOCKA_CMAKE_DIR}/cmocka-build-tree-settings.cmake)
+else()
+    set(CMOCKA_INCLUDE_DIR include)
+endif()
+
+set(CMOCKA_LIBRARY lib/libcmocka.dll)
+set(CMOCKA_LIBRARIES lib/libcmocka.dll)
diff --git a/Libs/cmocka-1.0.0/bin/libcmocka.dll b/Libs/cmocka-1.0.0/bin/libcmocka.dll
new file mode 100644
index 0000000000000000000000000000000000000000..37ca81266625f069e6631dff0a9b9fd120f51039
GIT binary patch
literal 167599
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
Xlg(5~>S!)}d)0{b93KkYLn;3SvV4-G

literal 0
HcmV?d00001

diff --git a/Libs/cmocka-1.0.0/include/cmocka.h b/Libs/cmocka-1.0.0/include/cmocka.h
new file mode 100644
index 0000000..303d0ae
--- /dev/null
+++ b/Libs/cmocka-1.0.0/include/cmocka.h
@@ -0,0 +1,2044 @@
+/*
+ * Copyright 2008 Google Inc.
+ *
+ * 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 CMOCKA_H_
+#define CMOCKA_H_
+
+#ifdef _WIN32
+# ifdef _MSC_VER
+
+# ifndef inline
+#define inline __inline
+# endif /* inline */
+
+#  if _MSC_VER < 1500
+#   ifdef __cplusplus
+extern "C" {
+#   endif   /* __cplusplus */
+int __stdcall IsDebuggerPresent();
+#   ifdef __cplusplus
+} /* extern "C" */
+#   endif   /* __cplusplus */
+#  endif  /* _MSC_VER < 1500 */
+# endif /* _MSC_VER */
+#endif  /* _WIN32 */
+
+/**
+ * @defgroup cmocka The CMocka API
+ *
+ * These headers or their equivalents should be included prior to including
+ * this header file.
+ * @code
+ * #include <stdarg.h>
+ * #include <stddef.h>
+ * #include <setjmp.h>
+ * @endcode
+ *
+ * This allows test applications to use custom definitions of C standard
+ * library functions and types.
+ *
+ * @{
+ */
+
+/* For those who are used to __func__ from gcc. */
+#ifndef __func__
+#define __func__ __FUNCTION__
+#endif
+
+/* If __WORDSIZE is not set, try to figure it out and default to 32 bit. */
+#ifndef __WORDSIZE
+# if defined(__x86_64__) && !defined(__ILP32__)
+#  define __WORDSIZE 64
+# else
+#  define __WORDSIZE 32
+# endif
+#endif
+
+#ifdef DOXYGEN
+/**
+ * Largest integral type.  This type should be large enough to hold any
+ * pointer or integer supported by the compiler.
+ */
+typedef uintmax_t LargestIntegralType;
+#else /* DOXGEN */
+#ifndef LargestIntegralType
+# if __WORDSIZE == 64
+#  define LargestIntegralType unsigned long int
+# else
+#  define LargestIntegralType unsigned long long int
+# endif
+#endif /* LargestIntegralType */
+#endif /* DOXYGEN */
+
+/* Printf format used to display LargestIntegralType. */
+#ifndef LargestIntegralTypePrintfFormat
+# ifdef _WIN32
+#  define LargestIntegralTypePrintfFormat "0x%I64x"
+# else
+#  if __WORDSIZE == 64
+#   define LargestIntegralTypePrintfFormat "%#lx"
+#  else
+#   define LargestIntegralTypePrintfFormat "%#llx"
+#  endif
+# endif /* _WIN32 */
+#endif /* LargestIntegralTypePrintfFormat */
+
+/* Perform an unsigned cast to LargestIntegralType. */
+#define cast_to_largest_integral_type(value) \
+    ((LargestIntegralType)(value))
+
+/* Smallest integral type capable of holding a pointer. */
+#if !defined(_UINTPTR_T) && !defined(_UINTPTR_T_DEFINED)
+# if defined(_WIN32)
+    /* WIN32 is an ILP32 platform */
+    typedef unsigned int uintptr_t;
+# elif defined(_WIN64)
+    typedef unsigned long int uintptr_t
+# else /* _WIN32 */
+
+/* ILP32 and LP64 platforms */
+#  ifdef __WORDSIZE /* glibc */
+#   if __WORDSIZE == 64
+      typedef unsigned long int uintptr_t;
+#   else
+      typedef unsigned int uintptr_t;
+#   endif /* __WORDSIZE == 64 */
+#  else /* __WORDSIZE */
+#   if defined(_LP64) || defined(_I32LPx)
+      typedef unsigned long int uintptr_t;
+#   else
+      typedef unsigned int uintptr_t;
+#   endif
+#  endif /* __WORDSIZE */
+# endif /* _WIN32 */
+
+# define _UINTPTR_T
+# define _UINTPTR_T_DEFINED
+#endif /* !defined(_UINTPTR_T) || !defined(_UINTPTR_T_DEFINED) */
+
+/* Perform an unsigned cast to uintptr_t. */
+#define cast_to_pointer_integral_type(value) \
+    ((uintptr_t)((size_t)(value)))
+
+/* Perform a cast of a pointer to LargestIntegralType */
+#define cast_ptr_to_largest_integral_type(value) \
+cast_to_largest_integral_type(cast_to_pointer_integral_type(value))
+
+/* GCC have printf type attribute check.  */
+#ifdef __GNUC__
+#define CMOCKA_PRINTF_ATTRIBUTE(a,b) \
+    __attribute__ ((__format__ (__printf__, a, b)))
+#else
+#define CMOCKA_PRINTF_ATTRIBUTE(a,b)
+#endif /* __GNUC__ */
+
+#if defined(__GNUC__)
+#define CMOCKA_DEPRECATED __attribute__ ((deprecated))
+#elif defined(_MSC_VER)
+#define CMOCKA_DEPRECATED __declspec(deprecated)
+#else
+#define CMOCKA_DEPRECATED
+#endif
+
+/**
+ * @defgroup cmocka_mock Mock Objects
+ * @ingroup cmocka
+ *
+ * Mock objects mock objects are simulated objects that mimic the behavior of
+ * real objects. Instead of calling the real objects, the tested object calls a
+ * mock object that merely asserts that the correct methods were called, with
+ * the expected parameters, in the correct order.
+ *
+ * <ul>
+ * <li><strong>will_return(function, value)</strong> - The will_return() macro
+ * pushes a value onto a stack of mock values. This macro is intended to be
+ * used by the unit test itself, while programming the behaviour of the mocked
+ * object.</li>
+ *
+ * <li><strong>mock()</strong> - the mock macro pops a value from a stack of
+ * test values. The user of the mock() macro is the mocked object that uses it
+ * to learn how it should behave.</li>
+ * </ul>
+ *
+ * Because the will_return() and mock() are intended to be used in pairs, the
+ * cmocka library would fail the test if there are more values pushed onto the
+ * stack using will_return() than consumed with mock() and vice-versa.
+ *
+ * The following unit test stub illustrates how would a unit test instruct the
+ * mock object to return a particular value:
+ *
+ * @code
+ * will_return(chef_cook, "hotdog");
+ * will_return(chef_cook, 0);
+ * @endcode
+ *
+ * Now the mock object can check if the parameter it received is the parameter
+ * which is expected by the test driver. This can be done the following way:
+ *
+ * @code
+ * int chef_cook(const char *order, char **dish_out)
+ * {
+ *     check_expected(order);
+ * }
+ * @endcode
+ *
+ * For a complete example please at a look
+ * <a href="http://git.cryptomilk.org/projects/cmocka.git/tree/example/chef_wrap/waiter_test_wrap.c">here</a>.
+ *
+ * @{
+ */
+
+#ifdef DOXYGEN
+/**
+ * @brief Retrieve a return value of the current function.
+ *
+ * @return The value which was stored to return by this function.
+ *
+ * @see will_return()
+ */
+LargestIntegralType mock(void);
+#else
+#define mock() _mock(__func__, __FILE__, __LINE__)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Retrieve a typed return value of the current function.
+ *
+ * The value would be casted to type internally to avoid having the
+ * caller to do the cast manually.
+ *
+ * @param[in]  #type  The expected type of the return value
+ *
+ * @return The value which was stored to return by this function.
+ *
+ * @code
+ * int param;
+ *
+ * param = mock_type(int);
+ * @endcode
+ *
+ * @see will_return()
+ * @see mock()
+ * @see mock_ptr_type()
+ */
+#type mock_type(#type);
+#else
+#define mock_type(type) ((type) mock())
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Retrieve a typed return value of the current function.
+ *
+ * The value would be casted to type internally to avoid having the
+ * caller to do the cast manually but also casted to uintptr_t to make
+ * sure the result has a valid size to be used as a pointer.
+ *
+ * @param[in]  #type  The expected type of the return value
+ *
+ * @return The value which was stored to return by this function.
+ *
+ * @code
+ * char *param;
+ *
+ * param = mock_ptr_type(char *);
+ * @endcode
+ *
+ * @see will_return()
+ * @see mock()
+ * @see mock_type()
+ */
+type mock_ptr_type(#type);
+#else
+#define mock_ptr_type(type) ((type) (uintptr_t) mock())
+#endif
+
+
+#ifdef DOXYGEN
+/**
+ * @brief Store a value to be returned by mock() later.
+ *
+ * @param[in]  #function  The function which should return the given value.
+ *
+ * @param[in]  value The value to be returned by mock().
+ *
+ * @code
+ * int return_integer(void)
+ * {
+ *      return (int)mock();
+ * }
+ *
+ * static void test_integer_return(void **state)
+ * {
+ *      will_return(return_integer, 42);
+ *
+ *      assert_int_equal(my_function_calling_return_integer(), 42);
+ * }
+ * @endcode
+ *
+ * @see mock()
+ * @see will_return_count()
+ */
+void will_return(#function, LargestIntegralType value);
+#else
+#define will_return(function, value) \
+    _will_return(#function, __FILE__, __LINE__, \
+                 cast_to_largest_integral_type(value), 1)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Store a value to be returned by mock() later.
+ *
+ * @param[in]  #function  The function which should return the given value.
+ *
+ * @param[in]  value The value to be returned by mock().
+ *
+ * @param[in]  count The parameter returns the number of times the value should
+ *                   be returned by mock(). If count is set to -1 the value will
+ *                   always be returned.
+ *
+ * @see mock()
+ */
+void will_return_count(#function, LargestIntegralType value, int count);
+#else
+#define will_return_count(function, value, count) \
+    _will_return(#function, __FILE__, __LINE__, \
+                 cast_to_largest_integral_type(value), count)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Store a value that will be always returned by mock().
+ *
+ * @param[in]  #function  The function which should return the given value.
+ *
+ * @param[in]  #value The value to be returned by mock().
+ *
+ * This is equivalent to:
+ * @code
+ * will_return_count(function, value, -1);
+ * @endcode
+ *
+ * @see will_return_count()
+ * @see mock()
+ */
+void will_return_always(#function, LargestIntegralType value);
+#else
+#define will_return_always(function, value) \
+    will_return_count(function, (value), -1)
+#endif
+
+/** @} */
+
+/**
+ * @defgroup cmocka_param Checking Parameters
+ * @ingroup cmocka
+ *
+ * Functionality to store expected values for mock function parameters.
+ *
+ * In addition to storing the return values of mock functions, cmocka provides
+ * functionality to store expected values for mock function parameters using
+ * the expect_*() functions provided. A mock function parameter can then be
+ * validated using the check_expected() macro.
+ *
+ * Successive calls to expect_*() macros for a parameter queues values to check
+ * the specified parameter. check_expected() checks a function parameter
+ * against the next value queued using expect_*(), if the parameter check fails
+ * a test failure is signalled. In addition if check_expected() is called and
+ * no more parameter values are queued a test failure occurs.
+ *
+ * The following test stub illustrates how to do this. First is the the function
+ * we call in the test driver:
+ *
+ * @code
+ * static void test_driver(void **state)
+ * {
+ *     expect_string(chef_cook, order, "hotdog");
+ * }
+ * @endcode
+ *
+ * Now the chef_cook function can check if the parameter we got passed is the
+ * parameter which is expected by the test driver. This can be done the
+ * following way:
+ *
+ * @code
+ * int chef_cook(const char *order, char **dish_out)
+ * {
+ *     check_expected(order);
+ * }
+ * @endcode
+ *
+ * For a complete example please at a look at
+ * <a href="http://git.cryptomilk.org/projects/cmocka.git/tree/example/chef_wrap/waiter_test_wrap.c">here</a>
+ *
+ * @{
+ */
+
+/*
+ * Add a custom parameter checking function.  If the event parameter is NULL
+ * the event structure is allocated internally by this function.  If event
+ * parameter is provided it must be allocated on the heap and doesn't need to
+ * be deallocated by the caller.
+ */
+#ifdef DOXYGEN
+/**
+ * @brief Add a custom parameter checking function.
+ *
+ * If the event parameter is NULL the event structure is allocated internally
+ * by this function. If the parameter is provided it must be allocated on the
+ * heap and doesn't need to be deallocated by the caller.
+ *
+ * @param[in]  #function  The function to add a custom parameter checking
+ *                        function for.
+ *
+ * @param[in]  #parameter The parameters passed to the function.
+ *
+ * @param[in]  #check_function  The check function to call.
+ *
+ * @param[in]  check_data       The data to pass to the check function.
+ */
+void expect_check(#function, #parameter, #check_function, const void *check_data);
+#else
+#define expect_check(function, parameter, check_function, check_data) \
+    _expect_check(#function, #parameter, __FILE__, __LINE__, check_function, \
+                  cast_to_largest_integral_type(check_data), NULL, 1)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Add an event to check if the parameter value is part of the provided
+ *        array.
+ *
+ * The event is triggered by calling check_expected() in the mocked function.
+ *
+ * @param[in]  #function  The function to add the check for.
+ *
+ * @param[in]  #parameter The name of the parameter passed to the function.
+ *
+ * @param[in]  value_array[] The array to check for the value.
+ *
+ * @see check_expected().
+ */
+void expect_in_set(#function, #parameter, LargestIntegralType value_array[]);
+#else
+#define expect_in_set(function, parameter, value_array) \
+    expect_in_set_count(function, parameter, value_array, 1)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Add an event to check if the parameter value is part of the provided
+ *        array.
+ *
+ * The event is triggered by calling check_expected() in the mocked function.
+ *
+ * @param[in]  #function  The function to add the check for.
+ *
+ * @param[in]  #parameter The name of the parameter passed to the function.
+ *
+ * @param[in]  value_array[] The array to check for the value.
+ *
+ * @param[in]  count  The count parameter returns the number of times the value
+ *                    should be returned by check_expected(). If count is set
+ *                    to -1 the value will always be returned.
+ *
+ * @see check_expected().
+ */
+void expect_in_set_count(#function, #parameter, LargestIntegralType value_array[], size_t count);
+#else
+#define expect_in_set_count(function, parameter, value_array, count) \
+    _expect_in_set(#function, #parameter, __FILE__, __LINE__, value_array, \
+                   sizeof(value_array) / sizeof((value_array)[0]), count)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Add an event to check if the parameter value is not part of the
+ *        provided array.
+ *
+ * The event is triggered by calling check_expected() in the mocked function.
+ *
+ * @param[in]  #function  The function to add the check for.
+ *
+ * @param[in]  #parameter The name of the parameter passed to the function.
+ *
+ * @param[in]  value_array[] The array to check for the value.
+ *
+ * @see check_expected().
+ */
+void expect_not_in_set(#function, #parameter, LargestIntegralType value_array[]);
+#else
+#define expect_not_in_set(function, parameter, value_array) \
+    expect_not_in_set_count(function, parameter, value_array, 1)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Add an event to check if the parameter value is not part of the
+ *        provided array.
+ *
+ * The event is triggered by calling check_expected() in the mocked function.
+ *
+ * @param[in]  #function  The function to add the check for.
+ *
+ * @param[in]  #parameter The name of the parameter passed to the function.
+ *
+ * @param[in]  value_array[] The array to check for the value.
+ *
+ * @param[in]  count  The count parameter returns the number of times the value
+ *                    should be returned by check_expected(). If count is set
+ *                    to -1 the value will always be returned.
+ *
+ * @see check_expected().
+ */
+void expect_not_in_set_count(#function, #parameter, LargestIntegralType value_array[], size_t count);
+#else
+#define expect_not_in_set_count(function, parameter, value_array, count) \
+    _expect_not_in_set( \
+        #function, #parameter, __FILE__, __LINE__, value_array, \
+        sizeof(value_array) / sizeof((value_array)[0]), count)
+#endif
+
+
+#ifdef DOXYGEN
+/**
+ * @brief Add an event to check a parameter is inside a numerical range.
+ * The check would succeed if minimum <= value <= maximum.
+ *
+ * The event is triggered by calling check_expected() in the mocked function.
+ *
+ * @param[in]  #function  The function to add the check for.
+ *
+ * @param[in]  #parameter The name of the parameter passed to the function.
+ *
+ * @param[in]  minimum  The lower boundary of the interval to check against.
+ *
+ * @param[in]  maximum  The upper boundary of the interval to check against.
+ *
+ * @see check_expected().
+ */
+void expect_in_range(#function, #parameter, LargestIntegralType minimum, LargestIntegralType maximum);
+#else
+#define expect_in_range(function, parameter, minimum, maximum) \
+    expect_in_range_count(function, parameter, minimum, maximum, 1)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Add an event to repeatedly check a parameter is inside a
+ * numerical range. The check would succeed if minimum <= value <= maximum.
+ *
+ * The event is triggered by calling check_expected() in the mocked function.
+ *
+ * @param[in]  #function  The function to add the check for.
+ *
+ * @param[in]  #parameter The name of the parameter passed to the function.
+ *
+ * @param[in]  minimum  The lower boundary of the interval to check against.
+ *
+ * @param[in]  maximum  The upper boundary of the interval to check against.
+ *
+ * @param[in]  count  The count parameter returns the number of times the value
+ *                    should be returned by check_expected(). If count is set
+ *                    to -1 the value will always be returned.
+ *
+ * @see check_expected().
+ */
+void expect_in_range_count(#function, #parameter, LargestIntegralType minimum, LargestIntegralType maximum, size_t count);
+#else
+#define expect_in_range_count(function, parameter, minimum, maximum, count) \
+    _expect_in_range(#function, #parameter, __FILE__, __LINE__, minimum, \
+                     maximum, count)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Add an event to check a parameter is outside a numerical range.
+ * The check would succeed if minimum > value > maximum.
+ *
+ * The event is triggered by calling check_expected() in the mocked function.
+ *
+ * @param[in]  #function  The function to add the check for.
+ *
+ * @param[in]  #parameter The name of the parameter passed to the function.
+ *
+ * @param[in]  minimum  The lower boundary of the interval to check against.
+ *
+ * @param[in]  maximum  The upper boundary of the interval to check against.
+ *
+ * @see check_expected().
+ */
+void expect_not_in_range(#function, #parameter, LargestIntegralType minimum, LargestIntegralType maximum);
+#else
+#define expect_not_in_range(function, parameter, minimum, maximum) \
+    expect_not_in_range_count(function, parameter, minimum, maximum, 1)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Add an event to repeatedly check a parameter is outside a
+ * numerical range. The check would succeed if minimum > value > maximum.
+ *
+ * The event is triggered by calling check_expected() in the mocked function.
+ *
+ * @param[in]  #function  The function to add the check for.
+ *
+ * @param[in]  #parameter The name of the parameter passed to the function.
+ *
+ * @param[in]  minimum  The lower boundary of the interval to check against.
+ *
+ * @param[in]  maximum  The upper boundary of the interval to check against.
+ *
+ * @param[in]  count  The count parameter returns the number of times the value
+ *                    should be returned by check_expected(). If count is set
+ *                    to -1 the value will always be returned.
+ *
+ * @see check_expected().
+ */
+void expect_not_in_range_count(#function, #parameter, LargestIntegralType minimum, LargestIntegralType maximum, size_t count);
+#else
+#define expect_not_in_range_count(function, parameter, minimum, maximum, \
+                                  count) \
+    _expect_not_in_range(#function, #parameter, __FILE__, __LINE__, \
+                         minimum, maximum, count)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Add an event to check if a parameter is the given value.
+ *
+ * The event is triggered by calling check_expected() in the mocked function.
+ *
+ * @param[in]  #function  The function to add the check for.
+ *
+ * @param[in]  #parameter The name of the parameter passed to the function.
+ *
+ * @param[in]  value  The value to check.
+ *
+ * @see check_expected().
+ */
+void expect_value(#function, #parameter, LargestIntegralType value);
+#else
+#define expect_value(function, parameter, value) \
+    expect_value_count(function, parameter, value, 1)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Add an event to repeatedly check if a parameter is the given value.
+ *
+ * The event is triggered by calling check_expected() in the mocked function.
+ *
+ * @param[in]  #function  The function to add the check for.
+ *
+ * @param[in]  #parameter The name of the parameter passed to the function.
+ *
+ * @param[in]  value  The value to check.
+ *
+ * @param[in]  count  The count parameter returns the number of times the value
+ *                    should be returned by check_expected(). If count is set
+ *                    to -1 the value will always be returned.
+ *
+ * @see check_expected().
+ */
+void expect_value_count(#function, #parameter, LargestIntegralType value, size_t count);
+#else
+#define expect_value_count(function, parameter, value, count) \
+    _expect_value(#function, #parameter, __FILE__, __LINE__, \
+                  cast_to_largest_integral_type(value), count)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Add an event to check if a parameter isn't the given value.
+ *
+ * The event is triggered by calling check_expected() in the mocked function.
+ *
+ * @param[in]  #function  The function to add the check for.
+ *
+ * @param[in]  #parameter The name of the parameter passed to the function.
+ *
+ * @param[in]  value  The value to check.
+ *
+ * @see check_expected().
+ */
+void expect_not_value(#function, #parameter, LargestIntegralType value);
+#else
+#define expect_not_value(function, parameter, value) \
+    expect_not_value_count(function, parameter, value, 1)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Add an event to repeatedly check if a parameter isn't the given value.
+ *
+ * The event is triggered by calling check_expected() in the mocked function.
+ *
+ * @param[in]  #function  The function to add the check for.
+ *
+ * @param[in]  #parameter The name of the parameter passed to the function.
+ *
+ * @param[in]  value  The value to check.
+ *
+ * @param[in]  count  The count parameter returns the number of times the value
+ *                    should be returned by check_expected(). If count is set
+ *                    to -1 the value will always be returned.
+ *
+ * @see check_expected().
+ */
+void expect_not_value_count(#function, #parameter, LargestIntegralType value, size_t count);
+#else
+#define expect_not_value_count(function, parameter, value, count) \
+    _expect_not_value(#function, #parameter, __FILE__, __LINE__, \
+                      cast_to_largest_integral_type(value), count)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Add an event to check if the parameter value is equal to the
+ *        provided string.
+ *
+ * The event is triggered by calling check_expected() in the mocked function.
+ *
+ * @param[in]  #function  The function to add the check for.
+ *
+ * @param[in]  #parameter The name of the parameter passed to the function.
+ *
+ * @param[in]  string   The string value to compare.
+ *
+ * @see check_expected().
+ */
+void expect_string(#function, #parameter, const char *string);
+#else
+#define expect_string(function, parameter, string) \
+    expect_string_count(function, parameter, string, 1)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Add an event to check if the parameter value is equal to the
+ *        provided string.
+ *
+ * The event is triggered by calling check_expected() in the mocked function.
+ *
+ * @param[in]  #function  The function to add the check for.
+ *
+ * @param[in]  #parameter The name of the parameter passed to the function.
+ *
+ * @param[in]  string   The string value to compare.
+ *
+ * @param[in]  count  The count parameter returns the number of times the value
+ *                    should be returned by check_expected(). If count is set
+ *                    to -1 the value will always be returned.
+ *
+ * @see check_expected().
+ */
+void expect_string_count(#function, #parameter, const char *string, size_t count);
+#else
+#define expect_string_count(function, parameter, string, count) \
+    _expect_string(#function, #parameter, __FILE__, __LINE__, \
+                   (const char*)(string), count)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Add an event to check if the parameter value isn't equal to the
+ *        provided string.
+ *
+ * The event is triggered by calling check_expected() in the mocked function.
+ *
+ * @param[in]  #function  The function to add the check for.
+ *
+ * @param[in]  #parameter The name of the parameter passed to the function.
+ *
+ * @param[in]  string   The string value to compare.
+ *
+ * @see check_expected().
+ */
+void expect_not_string(#function, #parameter, const char *string);
+#else
+#define expect_not_string(function, parameter, string) \
+    expect_not_string_count(function, parameter, string, 1)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Add an event to check if the parameter value isn't equal to the
+ *        provided string.
+ *
+ * The event is triggered by calling check_expected() in the mocked function.
+ *
+ * @param[in]  #function  The function to add the check for.
+ *
+ * @param[in]  #parameter The name of the parameter passed to the function.
+ *
+ * @param[in]  string   The string value to compare.
+ *
+ * @param[in]  count  The count parameter returns the number of times the value
+ *                    should be returned by check_expected(). If count is set
+ *                    to -1 the value will always be returned.
+ *
+ * @see check_expected().
+ */
+void expect_not_string_count(#function, #parameter, const char *string, size_t count);
+#else
+#define expect_not_string_count(function, parameter, string, count) \
+    _expect_not_string(#function, #parameter, __FILE__, __LINE__, \
+                       (const char*)(string), count)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Add an event to check if the parameter does match an area of memory.
+ *
+ * The event is triggered by calling check_expected() in the mocked function.
+ *
+ * @param[in]  #function  The function to add the check for.
+ *
+ * @param[in]  #parameter The name of the parameter passed to the function.
+ *
+ * @param[in]  memory  The memory to compare.
+ *
+ * @param[in]  size  The size of the memory to compare.
+ *
+ * @see check_expected().
+ */
+void expect_memory(#function, #parameter, void *memory, size_t size);
+#else
+#define expect_memory(function, parameter, memory, size) \
+    expect_memory_count(function, parameter, memory, size, 1)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Add an event to repeatedly check if the parameter does match an area
+ *        of memory.
+ *
+ * The event is triggered by calling check_expected() in the mocked function.
+ *
+ * @param[in]  #function  The function to add the check for.
+ *
+ * @param[in]  #parameter The name of the parameter passed to the function.
+ *
+ * @param[in]  memory  The memory to compare.
+ *
+ * @param[in]  size  The size of the memory to compare.
+ *
+ * @param[in]  count  The count parameter returns the number of times the value
+ *                    should be returned by check_expected(). If count is set
+ *                    to -1 the value will always be returned.
+ *
+ * @see check_expected().
+ */
+void expect_memory_count(#function, #parameter, void *memory, size_t size, size_t count);
+#else
+#define expect_memory_count(function, parameter, memory, size, count) \
+    _expect_memory(#function, #parameter, __FILE__, __LINE__, \
+                   (const void*)(memory), size, count)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Add an event to check if the parameter doesn't match an area of
+ *        memory.
+ *
+ * The event is triggered by calling check_expected() in the mocked function.
+ *
+ * @param[in]  #function  The function to add the check for.
+ *
+ * @param[in]  #parameter The name of the parameter passed to the function.
+ *
+ * @param[in]  memory  The memory to compare.
+ *
+ * @param[in]  size  The size of the memory to compare.
+ *
+ * @see check_expected().
+ */
+void expect_not_memory(#function, #parameter, void *memory, size_t size);
+#else
+#define expect_not_memory(function, parameter, memory, size) \
+    expect_not_memory_count(function, parameter, memory, size, 1)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Add an event to repeatedly check if the parameter doesn't match an
+ *        area of memory.
+ *
+ * The event is triggered by calling check_expected() in the mocked function.
+ *
+ * @param[in]  #function  The function to add the check for.
+ *
+ * @param[in]  #parameter The name of the parameter passed to the function.
+ *
+ * @param[in]  memory  The memory to compare.
+ *
+ * @param[in]  size  The size of the memory to compare.
+ *
+ * @param[in]  count  The count parameter returns the number of times the value
+ *                    should be returned by check_expected(). If count is set
+ *                    to -1 the value will always be returned.
+ *
+ * @see check_expected().
+ */
+void expect_not_memory_count(#function, #parameter, void *memory, size_t size, size_t count);
+#else
+#define expect_not_memory_count(function, parameter, memory, size, count) \
+    _expect_not_memory(#function, #parameter, __FILE__, __LINE__, \
+                       (const void*)(memory), size, count)
+#endif
+
+
+#ifdef DOXYGEN
+/**
+ * @brief Add an event to check if a parameter (of any value) has been passed.
+ *
+ * The event is triggered by calling check_expected() in the mocked function.
+ *
+ * @param[in]  #function  The function to add the check for.
+ *
+ * @param[in]  #parameter The name of the parameter passed to the function.
+ *
+ * @see check_expected().
+ */
+void expect_any(#function, #parameter);
+#else
+#define expect_any(function, parameter) \
+    expect_any_count(function, parameter, 1)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Add an event to repeatedly check if a parameter (of any value) has
+ *        been passed.
+ *
+ * The event is triggered by calling check_expected() in the mocked function.
+ *
+ * @param[in]  #function  The function to add the check for.
+ *
+ * @param[in]  #parameter The name of the parameter passed to the function.
+ *
+ * @param[in]  count  The count parameter returns the number of times the value
+ *                    should be returned by check_expected(). If count is set
+ *                    to -1 the value will always be returned.
+ *
+ * @see check_expected().
+ */
+void expect_any_count(#function, #parameter, size_t count);
+#else
+#define expect_any_count(function, parameter, count) \
+    _expect_any(#function, #parameter, __FILE__, __LINE__, count)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Determine whether a function parameter is correct.
+ *
+ * This ensures the next value queued by one of the expect_*() macros matches
+ * the specified variable.
+ *
+ * This function needs to be called in the mock object.
+ *
+ * @param[in]  #parameter  The parameter to check.
+ */
+void check_expected(#parameter);
+#else
+#define check_expected(parameter) \
+    _check_expected(__func__, #parameter, __FILE__, __LINE__, \
+                    cast_to_largest_integral_type(parameter))
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Determine whether a function parameter is correct.
+ *
+ * This ensures the next value queued by one of the expect_*() macros matches
+ * the specified variable.
+ *
+ * This function needs to be called in the mock object.
+ *
+ * @param[in]  #parameter  The pointer to check.
+ */
+void check_expected_ptr(#parameter);
+#else
+#define check_expected_ptr(parameter) \
+    _check_expected(__func__, #parameter, __FILE__, __LINE__, \
+                    cast_ptr_to_largest_integral_type(parameter))
+#endif
+
+/** @} */
+
+/**
+ * @defgroup cmocka_asserts Assert Macros
+ * @ingroup cmocka
+ *
+ * This is a set of useful assert macros like the standard C libary's
+ * assert(3) macro.
+ *
+ * On an assertion failure a cmocka assert macro will write the failure to the
+ * standard error stream and signal a test failure. Due to limitations of the C
+ * language the general C standard library assert() and cmocka's assert_true()
+ * and assert_false() macros can only display the expression that caused the
+ * assert failure. cmocka's type specific assert macros, assert_{type}_equal()
+ * and assert_{type}_not_equal(), display the data that caused the assertion
+ * failure which increases data visibility aiding debugging of failing test
+ * cases.
+ *
+ * @{
+ */
+
+#ifdef DOXYGEN
+/**
+ * @brief Assert that the given expression is true.
+ *
+ * The function prints an error message to standard error and terminates the
+ * test by calling fail() if expression is false (i.e., compares equal to
+ * zero).
+ *
+ * @param[in]  expression  The expression to evaluate.
+ *
+ * @see assert_int_equal()
+ * @see assert_string_equal()
+ */
+void assert_true(scalar expression);
+#else
+#define assert_true(c) _assert_true(cast_to_largest_integral_type(c), #c, \
+                                    __FILE__, __LINE__)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Assert that the given expression is false.
+ *
+ * The function prints an error message to standard error and terminates the
+ * test by calling fail() if expression is true.
+ *
+ * @param[in]  expression  The expression to evaluate.
+ *
+ * @see assert_int_equal()
+ * @see assert_string_equal()
+ */
+void assert_false(scalar expression);
+#else
+#define assert_false(c) _assert_true(!(cast_to_largest_integral_type(c)), #c, \
+                                     __FILE__, __LINE__)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Assert that the return_code is greater than or equal to 0.
+ *
+ * The function prints an error message to standard error and terminates the
+ * test by calling fail() if the return code is smaller than 0. If the function
+ * you check sets an errno if it fails you can pass it to the function and
+ * it will be printed as part of the error message.
+ *
+ * @param[in]  rc       The return code to evaluate.
+ *
+ * @param[in]  error    Pass errno here or 0.
+ */
+void assert_return_code(int rc, int error);
+#else
+#define assert_return_code(rc, error) \
+    _assert_return_code(cast_to_largest_integral_type(rc), \
+                        sizeof(rc), \
+                        cast_to_largest_integral_type(error), \
+                        #rc, __FILE__, __LINE__)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Assert that the given pointer is non-NULL.
+ *
+ * The function prints an error message to standard error and terminates the
+ * test by calling fail() if the pointer is non-NULL.
+ *
+ * @param[in]  pointer  The pointer to evaluate.
+ *
+ * @see assert_null()
+ */
+void assert_non_null(void *pointer);
+#else
+#define assert_non_null(c) _assert_true(cast_ptr_to_largest_integral_type(c), #c, \
+                                        __FILE__, __LINE__)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Assert that the given pointer is NULL.
+ *
+ * The function prints an error message to standard error and terminates the
+ * test by calling fail() if the pointer is non-NULL.
+ *
+ * @param[in]  pointer  The pointer to evaluate.
+ *
+ * @see assert_non_null()
+ */
+void assert_null(void *pointer);
+#else
+#define assert_null(c) _assert_true(!(cast_ptr_to_largest_integral_type(c)), #c, \
+__FILE__, __LINE__)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Assert that the two given integers are equal.
+ *
+ * The function prints an error message to standard error and terminates the
+ * test by calling fail() if the integers are not equal.
+ *
+ * @param[in]  a  The first integer to compare.
+ *
+ * @param[in]  b  The integer to compare against the first one.
+ */
+void assert_int_equal(int a, int b);
+#else
+#define assert_int_equal(a, b) \
+    _assert_int_equal(cast_to_largest_integral_type(a), \
+                      cast_to_largest_integral_type(b), \
+                      __FILE__, __LINE__)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Assert that the two given integers are not equal.
+ *
+ * The function prints an error message to standard error and terminates the
+ * test by calling fail() if the integers are equal.
+ *
+ * @param[in]  a  The first integer to compare.
+ *
+ * @param[in]  b  The integer to compare against the first one.
+ *
+ * @see assert_int_equal()
+ */
+void assert_int_not_equal(int a, int b);
+#else
+#define assert_int_not_equal(a, b) \
+    _assert_int_not_equal(cast_to_largest_integral_type(a), \
+                          cast_to_largest_integral_type(b), \
+                          __FILE__, __LINE__)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Assert that the two given strings are equal.
+ *
+ * The function prints an error message to standard error and terminates the
+ * test by calling fail() if the strings are not equal.
+ *
+ * @param[in]  a  The string to check.
+ *
+ * @param[in]  b  The other string to compare.
+ */
+void assert_string_equal(const char *a, const char *b);
+#else
+#define assert_string_equal(a, b) \
+    _assert_string_equal((const char*)(a), (const char*)(b), __FILE__, \
+                         __LINE__)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Assert that the two given strings are not equal.
+ *
+ * The function prints an error message to standard error and terminates the
+ * test by calling fail() if the strings are equal.
+ *
+ * @param[in]  a  The string to check.
+ *
+ * @param[in]  b  The other string to compare.
+ */
+void assert_string_not_equal(const char *a, const char *b);
+#else
+#define assert_string_not_equal(a, b) \
+    _assert_string_not_equal((const char*)(a), (const char*)(b), __FILE__, \
+                             __LINE__)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Assert that the two given areas of memory are equal, otherwise fail.
+ *
+ * The function prints an error message to standard error and terminates the
+ * test by calling fail() if the memory is not equal.
+ *
+ * @param[in]  a  The first memory area to compare
+ *                (interpreted as unsigned char).
+ *
+ * @param[in]  b  The second memory area to compare
+ *                (interpreted as unsigned char).
+ *
+ * @param[in]  size  The first n bytes of the memory areas to compare.
+ */
+void assert_memory_equal(const void *a, const void *b, size_t size);
+#else
+#define assert_memory_equal(a, b, size) \
+    _assert_memory_equal((const void*)(a), (const void*)(b), size, __FILE__, \
+                         __LINE__)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Assert that the two given areas of memory are not equal.
+ *
+ * The function prints an error message to standard error and terminates the
+ * test by calling fail() if the memory is equal.
+ *
+ * @param[in]  a  The first memory area to compare
+ *                (interpreted as unsigned char).
+ *
+ * @param[in]  b  The second memory area to compare
+ *                (interpreted as unsigned char).
+ *
+ * @param[in]  size  The first n bytes of the memory areas to compare.
+ */
+void assert_memory_not_equal(const void *a, const void *b, size_t size);
+#else
+#define assert_memory_not_equal(a, b, size) \
+    _assert_memory_not_equal((const void*)(a), (const void*)(b), size, \
+                             __FILE__, __LINE__)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Assert that the specified value is not smaller than the minimum
+ * and and not greater than the maximum.
+ *
+ * The function prints an error message to standard error and terminates the
+ * test by calling fail() if value is not in range.
+ *
+ * @param[in]  value  The value to check.
+ *
+ * @param[in]  minimum  The minimum value allowed.
+ *
+ * @param[in]  maximum  The maximum value allowed.
+ */
+void assert_in_range(LargestIntegralType value, LargestIntegralType minimum, LargestIntegralType maximum);
+#else
+#define assert_in_range(value, minimum, maximum) \
+    _assert_in_range( \
+        cast_to_largest_integral_type(value), \
+        cast_to_largest_integral_type(minimum), \
+        cast_to_largest_integral_type(maximum), __FILE__, __LINE__)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Assert that the specified value is smaller than the minimum or
+ * greater than the maximum.
+ *
+ * The function prints an error message to standard error and terminates the
+ * test by calling fail() if value is in range.
+ *
+ * @param[in]  value  The value to check.
+ *
+ * @param[in]  minimum  The minimum value to compare.
+ *
+ * @param[in]  maximum  The maximum value to compare.
+ */
+void assert_not_in_range(LargestIntegralType value, LargestIntegralType minimum, LargestIntegralType maximum);
+#else
+#define assert_not_in_range(value, minimum, maximum) \
+    _assert_not_in_range( \
+        cast_to_largest_integral_type(value), \
+        cast_to_largest_integral_type(minimum), \
+        cast_to_largest_integral_type(maximum), __FILE__, __LINE__)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Assert that the specified value is within a set.
+ *
+ * The function prints an error message to standard error and terminates the
+ * test by calling fail() if value is not within a set.
+ *
+ * @param[in]  value  The value to look up
+ *
+ * @param[in]  values[]  The array to check for the value.
+ *
+ * @param[in]  count  The size of the values array.
+ */
+void assert_in_set(LargestIntegralType value, LargestIntegralType values[], size_t count);
+#else
+#define assert_in_set(value, values, number_of_values) \
+    _assert_in_set(value, values, number_of_values, __FILE__, __LINE__)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Assert that the specified value is not within a set.
+ *
+ * The function prints an error message to standard error and terminates the
+ * test by calling fail() if value is within a set.
+ *
+ * @param[in]  value  The value to look up
+ *
+ * @param[in]  values[]  The array to check for the value.
+ *
+ * @param[in]  count  The size of the values array.
+ */
+void assert_not_in_set(LargestIntegralType value, LargestIntegralType values[], size_t count);
+#else
+#define assert_not_in_set(value, values, number_of_values) \
+    _assert_not_in_set(value, values, number_of_values, __FILE__, __LINE__)
+#endif
+
+/** @} */
+
+/**
+ * @defgroup cmocka_exec Running Tests
+ * @ingroup cmocka
+ *
+ * This is the way tests are executed with CMocka.
+ *
+ * The following example illustrates this macro's use with the unit_test macro.
+ *
+ * @code
+ * void Test0(void **state);
+ * void Test1(void **state);
+ *
+ * int main(void)
+ * {
+ *     const struct CMUnitTest tests[] = {
+ *         cmocka_unit_test(Test0),
+ *         cmocka_unit_test(Test1),
+ *     };
+ *
+ *     return cmocka_run_group_tests(tests, NULL, NULL);
+ * }
+ * @endcode
+ *
+ * @{
+ */
+
+#ifdef DOXYGEN
+/**
+ * @brief Forces the test to fail immediately and quit.
+ */
+void fail(void);
+#else
+#define fail() _fail(__FILE__, __LINE__)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Forces the test to not be executed, but marked as skipped
+ */
+void skip(void);
+#else
+#define skip() _skip(__FILE__, __LINE__)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Forces the test to fail immediately and quit, printing the reason.
+ *
+ * @code
+ * fail_msg("This is some error message for test");
+ * @endcode
+ *
+ * or
+ *
+ * @code
+ * char *error_msg = "This is some error message for test";
+ * fail_msg("%s", error_msg);
+ * @endcode
+ */
+void fail_msg(const char *msg, ...);
+#else
+#define fail_msg(msg, ...) do { \
+    print_error("ERROR: " msg "\n", ##__VA_ARGS__); \
+    fail(); \
+} while (0)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Generic method to run a single test.
+ *
+ * @deprecated This function was deprecated in favor of cmocka_run_group_tests
+ *
+ * @param[in]  #function The function to test.
+ *
+ * @return 0 on success, 1 if an error occured.
+ *
+ * @code
+ * // A test case that does nothing and succeeds.
+ * void null_test_success(void **state) {
+ * }
+ *
+ * int main(void) {
+ *      return run_test(null_test_success);
+ * }
+ * @endcode
+ */
+int run_test(#function);
+#else
+#define run_test(f) _run_test(#f, f, NULL, UNIT_TEST_FUNCTION_TYPE_TEST, NULL)
+#endif
+
+static inline void _unit_test_dummy(void **state) {
+    (void)state;
+}
+
+/** Initializes a UnitTest structure.
+ *
+ * @deprecated This function was deprecated in favor of cmocka_unit_test
+ */
+#define unit_test(f) { #f, f, UNIT_TEST_FUNCTION_TYPE_TEST }
+
+#define _unit_test_setup(test, setup) \
+    { #test "_" #setup, setup, UNIT_TEST_FUNCTION_TYPE_SETUP }
+
+/** Initializes a UnitTest structure with a setup function.
+ *
+ * @deprecated This function was deprecated in favor of cmocka_unit_test_setup
+ */
+#define unit_test_setup(test, setup) \
+    _unit_test_setup(test, setup), \
+    unit_test(test), \
+    _unit_test_teardown(test, _unit_test_dummy)
+
+#define _unit_test_teardown(test, teardown) \
+    { #test "_" #teardown, teardown, UNIT_TEST_FUNCTION_TYPE_TEARDOWN }
+
+/** Initializes a UnitTest structure with a teardown function.
+ *
+ * @deprecated This function was deprecated in favor of cmocka_unit_test_teardown
+ */
+#define unit_test_teardown(test, teardown) \
+    _unit_test_setup(test, _unit_test_dummy), \
+    unit_test(test), \
+    _unit_test_teardown(test, teardown)
+
+/** Initializes a UnitTest structure for a group setup function.
+ *
+ * @deprecated This function was deprecated in favor of cmocka_run_group_tests
+ */
+#define group_test_setup(setup) \
+    { "group_" #setup, setup, UNIT_TEST_FUNCTION_TYPE_GROUP_SETUP }
+
+/** Initializes a UnitTest structure for a group teardown function.
+ *
+ * @deprecated This function was deprecated in favor of cmocka_run_group_tests
+ */
+#define group_test_teardown(teardown) \
+    { "group_" #teardown, teardown, UNIT_TEST_FUNCTION_TYPE_GROUP_TEARDOWN }
+
+/**
+ * Initialize an array of UnitTest structures with a setup function for a test
+ * and a teardown function.  Either setup or teardown can be NULL.
+ *
+ * @deprecated This function was deprecated in favor of
+ * cmocka_unit_test_setup_teardown
+ */
+#define unit_test_setup_teardown(test, setup, teardown) \
+    _unit_test_setup(test, setup), \
+    unit_test(test), \
+    _unit_test_teardown(test, teardown)
+
+
+/** Initializes a CMUnitTest structure. */
+#define cmocka_unit_test(f) { #f, f, NULL, NULL }
+
+/** Initializes a CMUnitTest structure with a setup function. */
+#define cmocka_unit_test_setup(f, setup) { #f, f, setup, NULL }
+
+/** Initializes a CMUnitTest structure with a teardown function. */
+#define cmocka_unit_test_teardown(f, teardown) { #f, f, NULL, teardown }
+
+/**
+ * Initialize an array of CMUnitTest structures with a setup function for a test
+ * and a teardown function. Either setup or teardown can be NULL.
+ */
+#define cmocka_unit_test_setup_teardown(f, setup, teardown) { #f, f, setup, teardown }
+
+#define run_tests(tests) _run_tests(tests, sizeof(tests) / sizeof(tests)[0])
+#define run_group_tests(tests) _run_group_tests(tests, sizeof(tests) / sizeof(tests)[0])
+
+#ifdef DOXYGEN
+/**
+ * @brief Run tests specified by an array of CMUnitTest structures.
+ *
+ * @param[in]  group_tests[]  The array of unit tests to execute.
+ *
+ * @param[in]  group_setup    The setup function which should be called before
+ *                            all unit tests are executed.
+ *
+ * @param[in]  group_teardown The teardown function to be called after all
+ *                            tests have finished.
+ *
+ * @return 0 on success, or the number of failed tests.
+ *
+ * @code
+ * static int setup(void **state) {
+ *      int *answer = malloc(sizeof(int));
+ *      if (*answer == NULL) {
+ *          return -1;
+ *      }
+ *      *answer = 42;
+ *
+ *      *state = answer;
+ *
+ *      return 0;
+ * }
+ *
+ * static void teardown(void **state) {
+ *      free(*state);
+ *
+ *      return 0;
+ * }
+ *
+ * static void null_test_success(void **state) {
+ *     (void) state;
+ * }
+ *
+ * static void int_test_success(void **state) {
+ *      int *answer = *state;
+ *      assert_int_equal(*answer, 42);
+ * }
+ *
+ * int main(void) {
+ *     const struct CMUnitTest tests[] = {
+ *         cmocka_unit_test(null_test_success),
+ *         cmocka_unit_test_setup_teardown(int_test_success, setup, teardown),
+ *     };
+ *
+ *     return cmocka_run_group_tests(tests, NULL, NULL);
+ * }
+ * @endcode
+ *
+ * @see cmocka_unit_test
+ * @see cmocka_unit_test_setup
+ * @see cmocka_unit_test_teardown
+ * @see cmocka_unit_test_setup_teardown
+ */
+int cmocka_run_group_tests(const struct CMUnitTest group_tests[],
+                           CMFixtureFunction group_setup,
+                           CMFixtureFunction group_teardown);
+#else
+# define cmocka_run_group_tests(group_tests, group_setup, group_teardown) \
+        _cmocka_run_group_tests(#group_tests, group_tests, sizeof(group_tests) / sizeof(group_tests)[0], group_setup, group_teardown)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Run tests specified by an array of CMUnitTest structures and specify
+ *        a name.
+ *
+ * @param[in]  group_name     The name of the group test.
+ *
+ * @param[in]  group_tests[]  The array of unit tests to execute.
+ *
+ * @param[in]  group_setup    The setup function which should be called before
+ *                            all unit tests are executed.
+ *
+ * @param[in]  group_teardown The teardown function to be called after all
+ *                            tests have finished.
+ *
+ * @return 0 on success, or the number of failed tests.
+ *
+ * @code
+ * static int setup(void **state) {
+ *      int *answer = malloc(sizeof(int));
+ *      if (*answer == NULL) {
+ *          return -1;
+ *      }
+ *      *answer = 42;
+ *
+ *      *state = answer;
+ *
+ *      return 0;
+ * }
+ *
+ * static void teardown(void **state) {
+ *      free(*state);
+ *
+ *      return 0;
+ * }
+ *
+ * static void null_test_success(void **state) {
+ *     (void) state;
+ * }
+ *
+ * static void int_test_success(void **state) {
+ *      int *answer = *state;
+ *      assert_int_equal(*answer, 42);
+ * }
+ *
+ * int main(void) {
+ *     const struct CMUnitTest tests[] = {
+ *         cmocka_unit_test(null_test_success),
+ *         cmocka_unit_test_setup_teardown(int_test_success, setup, teardown),
+ *     };
+ *
+ *     return cmocka_run_group_tests_name("success_test", tests, NULL, NULL);
+ * }
+ * @endcode
+ *
+ * @see cmocka_unit_test
+ * @see cmocka_unit_test_setup
+ * @see cmocka_unit_test_teardown
+ * @see cmocka_unit_test_setup_teardown
+ */
+int cmocka_run_group_tests_name(const char *group_name,
+                                const struct CMUnitTest group_tests[],
+                                CMFixtureFunction group_setup,
+                                CMFixtureFunction group_teardown);
+#else
+# define cmocka_run_group_tests_name(group_name, group_tests, group_setup, group_teardown) \
+        _cmocka_run_group_tests(group_name, group_tests, sizeof(group_tests) / sizeof(group_tests)[0], group_setup, group_teardown)
+#endif
+
+/** @} */
+
+/**
+ * @defgroup cmocka_alloc Dynamic Memory Allocation
+ * @ingroup cmocka
+ *
+ * Memory leaks, buffer overflows and underflows can be checked using cmocka.
+ *
+ * To test for memory leaks, buffer overflows and underflows a module being
+ * tested by cmocka should replace calls to malloc(), calloc() and free() to
+ * test_malloc(), test_calloc() and test_free() respectively. Each time a block
+ * is deallocated using test_free() it is checked for corruption, if a corrupt
+ * block is found a test failure is signalled. All blocks allocated using the
+ * test_*() allocation functions are tracked by the cmocka library. When a test
+ * completes if any allocated blocks (memory leaks) remain they are reported
+ * and a test failure is signalled.
+ *
+ * For simplicity cmocka currently executes all tests in one process. Therefore
+ * all test cases in a test application share a single address space which
+ * means memory corruption from a single test case could potentially cause the
+ * test application to exit prematurely.
+ *
+ * @{
+ */
+
+#ifdef DOXYGEN
+/**
+ * @brief Test function overriding malloc.
+ *
+ * @param[in]  size  The bytes which should be allocated.
+ *
+ * @return A pointer to the allocated memory or NULL on error.
+ *
+ * @code
+ * #ifdef UNIT_TESTING
+ * extern void* _test_malloc(const size_t size, const char* file, const int line);
+ *
+ * #define malloc(size) _test_malloc(size, __FILE__, __LINE__)
+ * #endif
+ *
+ * void leak_memory() {
+ *     int * const temporary = (int*)malloc(sizeof(int));
+ *     *temporary = 0;
+ * }
+ * @endcode
+ *
+ * @see malloc(3)
+ */
+void *test_malloc(size_t size);
+#else
+#define test_malloc(size) _test_malloc(size, __FILE__, __LINE__)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Test function overriding calloc.
+ *
+ * The memory is set to zero.
+ *
+ * @param[in]  nmemb  The number of elements for an array to be allocated.
+ *
+ * @param[in]  size   The size in bytes of each array element to allocate.
+ *
+ * @return A pointer to the allocated memory, NULL on error.
+ *
+ * @see calloc(3)
+ */
+void *test_calloc(size_t nmemb, size_t size);
+#else
+#define test_calloc(num, size) _test_calloc(num, size, __FILE__, __LINE__)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Test function overriding realloc which detects buffer overruns
+ *        and memoery leaks.
+ *
+ * @param[in]  ptr   The memory block which should be changed.
+ *
+ * @param[in]  size  The bytes which should be allocated.
+ *
+ * @return           The newly allocated memory block, NULL on error.
+ */
+void *test_realloc(void *ptr, size_t size);
+#else
+#define test_realloc(ptr, size) _test_realloc(ptr, size, __FILE__, __LINE__)
+#endif
+
+#ifdef DOXYGEN
+/**
+ * @brief Test function overriding free(3).
+ *
+ * @param[in]  ptr  The pointer to the memory space to free.
+ *
+ * @see free(3).
+ */
+void test_free(void *ptr);
+#else
+#define test_free(ptr) _test_free(ptr, __FILE__, __LINE__)
+#endif
+
+/* Redirect malloc, calloc and free to the unit test allocators. */
+#ifdef UNIT_TESTING
+#define malloc test_malloc
+#define realloc test_realloc
+#define calloc test_calloc
+#define free test_free
+#endif /* UNIT_TESTING */
+
+/** @} */
+
+
+/**
+ * @defgroup cmocka_mock_assert Standard Assertions
+ * @ingroup cmocka
+ *
+ * How to handle assert(3) of the standard C library.
+ *
+ * Runtime assert macros like the standard C library's assert() should be
+ * redefined in modules being tested to use cmocka's mock_assert() function.
+ * Normally mock_assert() signals a test failure. If a function is called using
+ * the expect_assert_failure() macro, any calls to mock_assert() within the
+ * function will result in the execution of the test. If no calls to
+ * mock_assert() occur during the function called via expect_assert_failure() a
+ * test failure is signalled.
+ *
+ * @{
+ */
+
+/**
+ * @brief Function to replace assert(3) in tested code.
+ *
+ * In conjuction with check_assert() it's possible to determine whether an
+ * assert condition has failed without stopping a test.
+ *
+ * @param[in]  result  The expression to assert.
+ *
+ * @param[in]  expression  The expression as string.
+ *
+ * @param[in]  file  The file mock_assert() is called.
+ *
+ * @param[in]  line  The line mock_assert() is called.
+ *
+ * @code
+ * #ifdef UNIT_TESTING
+ * extern void mock_assert(const int result, const char* const expression,
+ *                         const char * const file, const int line);
+ *
+ * #undef assert
+ * #define assert(expression) \
+ *     mock_assert((int)(expression), #expression, __FILE__, __LINE__);
+ * #endif
+ *
+ * void increment_value(int * const value) {
+ *     assert(value);
+ *     (*value) ++;
+ * }
+ * @endcode
+ *
+ * @see assert(3)
+ * @see expect_assert_failure
+ */
+void mock_assert(const int result, const char* const expression,
+                 const char * const file, const int line);
+
+#ifdef DOXYGEN
+/**
+ * @brief Ensure that mock_assert() is called.
+ *
+ * If mock_assert() is called the assert expression string is returned.
+ *
+ * @param[in]  fn_call  The function will will call mock_assert().
+ *
+ * @code
+ * #define assert mock_assert
+ *
+ * void showmessage(const char *message) {
+ *   assert(message);
+ * }
+ *
+ * int main(int argc, const char* argv[]) {
+ *   expect_assert_failure(show_message(NULL));
+ *   printf("succeeded\n");
+ *   return 0;
+ * }
+ * @endcode
+ *
+ */
+void expect_assert_failure(function fn_call);
+#else
+#define expect_assert_failure(function_call) \
+  { \
+    const int result = setjmp(global_expect_assert_env); \
+    global_expecting_assert = 1; \
+    if (result) { \
+      print_message("Expected assertion %s occurred\n", \
+                    global_last_failed_assert); \
+      global_expecting_assert = 0; \
+    } else { \
+      function_call ; \
+      global_expecting_assert = 0; \
+      print_error("Expected assert in %s\n", #function_call); \
+      _fail(__FILE__, __LINE__); \
+    } \
+  }
+#endif
+
+/** @} */
+
+/* Function prototype for setup, test and teardown functions. */
+typedef void (*UnitTestFunction)(void **state);
+
+/* Function that determines whether a function parameter value is correct. */
+typedef int (*CheckParameterValue)(const LargestIntegralType value,
+                                   const LargestIntegralType check_value_data);
+
+/* Type of the unit test function. */
+typedef enum UnitTestFunctionType {
+    UNIT_TEST_FUNCTION_TYPE_TEST = 0,
+    UNIT_TEST_FUNCTION_TYPE_SETUP,
+    UNIT_TEST_FUNCTION_TYPE_TEARDOWN,
+    UNIT_TEST_FUNCTION_TYPE_GROUP_SETUP,
+    UNIT_TEST_FUNCTION_TYPE_GROUP_TEARDOWN,
+} UnitTestFunctionType;
+
+/*
+ * Stores a unit test function with its name and type.
+ * NOTE: Every setup function must be paired with a teardown function.  It's
+ * possible to specify NULL function pointers.
+ */
+typedef struct UnitTest {
+    const char* name;
+    UnitTestFunction function;
+    UnitTestFunctionType function_type;
+} UnitTest;
+
+typedef struct GroupTest {
+    UnitTestFunction setup;
+    UnitTestFunction teardown;
+    const UnitTest *tests;
+    const size_t number_of_tests;
+} GroupTest;
+
+/* Function prototype for test functions. */
+typedef void (*CMUnitTestFunction)(void **state);
+
+/* Function prototype for setup and teardown functions. */
+typedef int (*CMFixtureFunction)(void **state);
+
+struct CMUnitTest {
+    const char *name;
+    CMUnitTestFunction test_func;
+    CMFixtureFunction setup_func;
+    CMFixtureFunction teardown_func;
+};
+
+/* Location within some source code. */
+typedef struct SourceLocation {
+    const char* file;
+    int line;
+} SourceLocation;
+
+/* Event that's called to check a parameter value. */
+typedef struct CheckParameterEvent {
+    SourceLocation location;
+    const char *parameter_name;
+    CheckParameterValue check_value;
+    LargestIntegralType check_value_data;
+} CheckParameterEvent;
+
+/* Used by expect_assert_failure() and mock_assert(). */
+extern int global_expecting_assert;
+extern jmp_buf global_expect_assert_env;
+extern const char * global_last_failed_assert;
+
+/* Retrieves a value for the given function, as set by "will_return". */
+LargestIntegralType _mock(const char * const function, const char* const file,
+                          const int line);
+
+void _expect_check(
+    const char* const function, const char* const parameter,
+    const char* const file, const int line,
+    const CheckParameterValue check_function,
+    const LargestIntegralType check_data, CheckParameterEvent * const event,
+    const int count);
+
+void _expect_in_set(
+    const char* const function, const char* const parameter,
+    const char* const file, const int line, const LargestIntegralType values[],
+    const size_t number_of_values, const int count);
+void _expect_not_in_set(
+    const char* const function, const char* const parameter,
+    const char* const file, const int line, const LargestIntegralType values[],
+    const size_t number_of_values, const int count);
+
+void _expect_in_range(
+    const char* const function, const char* const parameter,
+    const char* const file, const int line,
+    const LargestIntegralType minimum,
+    const LargestIntegralType maximum, const int count);
+void _expect_not_in_range(
+    const char* const function, const char* const parameter,
+    const char* const file, const int line,
+    const LargestIntegralType minimum,
+    const LargestIntegralType maximum, const int count);
+
+void _expect_value(
+    const char* const function, const char* const parameter,
+    const char* const file, const int line, const LargestIntegralType value,
+    const int count);
+void _expect_not_value(
+    const char* const function, const char* const parameter,
+    const char* const file, const int line, const LargestIntegralType value,
+    const int count);
+
+void _expect_string(
+    const char* const function, const char* const parameter,
+    const char* const file, const int line, const char* string,
+    const int count);
+void _expect_not_string(
+    const char* const function, const char* const parameter,
+    const char* const file, const int line, const char* string,
+    const int count);
+
+void _expect_memory(
+    const char* const function, const char* const parameter,
+    const char* const file, const int line, const void* const memory,
+    const size_t size, const int count);
+void _expect_not_memory(
+    const char* const function, const char* const parameter,
+    const char* const file, const int line, const void* const memory,
+    const size_t size, const int count);
+
+void _expect_any(
+    const char* const function, const char* const parameter,
+    const char* const file, const int line, const int count);
+
+void _check_expected(
+    const char * const function_name, const char * const parameter_name,
+    const char* file, const int line, const LargestIntegralType value);
+
+void _will_return(const char * const function_name, const char * const file,
+                  const int line, const LargestIntegralType value,
+                  const int count);
+void _assert_true(const LargestIntegralType result,
+                  const char* const expression,
+                  const char * const file, const int line);
+void _assert_return_code(const LargestIntegralType result,
+                         size_t rlen,
+                         const LargestIntegralType error,
+                         const char * const expression,
+                         const char * const file,
+                         const int line);
+void _assert_int_equal(
+    const LargestIntegralType a, const LargestIntegralType b,
+    const char * const file, const int line);
+void _assert_int_not_equal(
+    const LargestIntegralType a, const LargestIntegralType b,
+    const char * const file, const int line);
+void _assert_string_equal(const char * const a, const char * const b,
+                          const char * const file, const int line);
+void _assert_string_not_equal(const char * const a, const char * const b,
+                              const char *file, const int line);
+void _assert_memory_equal(const void * const a, const void * const b,
+                          const size_t size, const char* const file,
+                          const int line);
+void _assert_memory_not_equal(const void * const a, const void * const b,
+                              const size_t size, const char* const file,
+                              const int line);
+void _assert_in_range(
+    const LargestIntegralType value, const LargestIntegralType minimum,
+    const LargestIntegralType maximum, const char* const file, const int line);
+void _assert_not_in_range(
+    const LargestIntegralType value, const LargestIntegralType minimum,
+    const LargestIntegralType maximum, const char* const file, const int line);
+void _assert_in_set(
+    const LargestIntegralType value, const LargestIntegralType values[],
+    const size_t number_of_values, const char* const file, const int line);
+void _assert_not_in_set(
+    const LargestIntegralType value, const LargestIntegralType values[],
+    const size_t number_of_values, const char* const file, const int line);
+
+void* _test_malloc(const size_t size, const char* file, const int line);
+void* _test_realloc(void *ptr, const size_t size, const char* file, const int line);
+void* _test_calloc(const size_t number_of_elements, const size_t size,
+                   const char* file, const int line);
+void _test_free(void* const ptr, const char* file, const int line);
+
+void _fail(const char * const file, const int line);
+
+void _skip(const char * const file, const int line);
+
+int _run_test(
+    const char * const function_name, const UnitTestFunction Function,
+    void ** const volatile state, const UnitTestFunctionType function_type,
+    const void* const heap_check_point);
+CMOCKA_DEPRECATED int _run_tests(const UnitTest * const tests,
+                                 const size_t number_of_tests);
+CMOCKA_DEPRECATED int _run_group_tests(const UnitTest * const tests,
+                                       const size_t number_of_tests);
+
+/* Test runner */
+int _cmocka_run_group_tests(const char *group_name,
+                            const struct CMUnitTest * const tests,
+                            const size_t num_tests,
+                            CMFixtureFunction group_setup,
+                            CMFixtureFunction group_teardown);
+
+/* Standard output and error print methods. */
+void print_message(const char* const format, ...) CMOCKA_PRINTF_ATTRIBUTE(1, 2);
+void print_error(const char* const format, ...) CMOCKA_PRINTF_ATTRIBUTE(1, 2);
+void vprint_message(const char* const format, va_list args) CMOCKA_PRINTF_ATTRIBUTE(1, 0);
+void vprint_error(const char* const format, va_list args) CMOCKA_PRINTF_ATTRIBUTE(1, 0);
+
+enum cm_message_output {
+    CM_OUTPUT_STDOUT,
+    CM_OUTPUT_SUBUNIT,
+    CM_OUTPUT_TAP,
+    CM_OUTPUT_XML,
+};
+
+/**
+ * @brief Function to set the output format for a test.
+ *
+ * The ouput format for the test can either be set globally using this
+ * function or overriden with environment variable CMOCKA_MESSAGE_OUTPUT.
+ *
+ * The environment variable can be set to either STDOUT, SUBUNIT, TAP or XML.
+ *
+ * @param[in] output    The output format to use for the test.
+ *
+ */
+void cmocka_set_message_output(enum cm_message_output output);
+
+/** @} */
+
+#endif /* CMOCKA_H_ */
diff --git a/Libs/cmocka-1.0.0/include/cmocka_pbc.h b/Libs/cmocka-1.0.0/include/cmocka_pbc.h
new file mode 100644
index 0000000..a2a1bc1
--- /dev/null
+++ b/Libs/cmocka-1.0.0/include/cmocka_pbc.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2014 Luis Pabon, Jr.
+ *
+ * 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.
+ */
+
+/*
+ * Programming by Contract is a programming methodology
+ * which binds the caller and the function called to a
+ * contract. The contract is represented using Hoare Triple:
+ *      {P} C {Q}
+ * where {P} is the precondition before executing command C,
+ * and {Q} is the postcondition.
+ *
+ * See also:
+ * http://en.wikipedia.org/wiki/Design_by_contract
+ * http://en.wikipedia.org/wiki/Hoare_logic
+ * http://dlang.org/dbc.html
+ */
+#ifndef CMOCKA_PBC_H_
+#define CMOCKA_PBC_H_
+
+#if defined(UNIT_TESTING) || defined (DEBUG)
+
+#include <assert.h>
+
+/*
+ * Checks caller responsibility against contract
+ */
+#define REQUIRE(cond) assert(cond)
+
+/*
+ * Checks function reponsability against contract.
+ */
+#define ENSURE(cond) assert(cond)
+
+/*
+ * While REQUIRE and ENSURE apply to functions, INVARIANT
+ * applies to classes/structs.  It ensures that intances
+ * of the class/struct are consistent. In other words,
+ * that the instance has not been corrupted.
+ */
+#define INVARIANT(invariant_fnc) do{ (invariant_fnc) } while (0);
+
+#else
+#define REQUIRE(cond) do { } while (0);
+#define ENSURE(cond) do { } while (0);
+#define INVARIANT(invariant_fnc) do{ } while (0);
+
+#endif /* defined(UNIT_TESTING) || defined (DEBUG) */
+#endif /* CMOCKA_PBC_H_ */
+
diff --git a/Libs/cmocka-1.0.0/lib/cmocka.dll.a b/Libs/cmocka-1.0.0/lib/cmocka.dll.a
new file mode 100644
index 0000000000000000000000000000000000000000..1293efcf0824b34d9b8ee900ae3b314c16b255bc
GIT binary patch
literal 28648
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
Suh<AEzkoplXU6>cNctb{!dN8$

literal 0
HcmV?d00001

diff --git a/Libs/cmocka-1.0.0/lib/pkgconfig/cmocka.pc b/Libs/cmocka-1.0.0/lib/pkgconfig/cmocka.pc
new file mode 100644
index 0000000..654416e
--- /dev/null
+++ b/Libs/cmocka-1.0.0/lib/pkgconfig/cmocka.pc
@@ -0,0 +1,6 @@
+Name: cmocka
+Description: The cmocka unit testing library
+Version: 1.0.0
+Libs: -Llib -lcmocka
+Cflags: -Iinclude
+
-- 
GitLab