12
This commit is contained in:
		
							parent
							
								
									2d92ec4c0e
								
							
						
					
					
						commit
						9bcb69b7ff
					
				@ -1,19 +0,0 @@
 | 
			
		||||
# Instructions
 | 
			
		||||
 | 
			
		||||
Implement basic list operations.
 | 
			
		||||
 | 
			
		||||
In functional languages list operations like `length`, `map`, and `reduce` are very common.
 | 
			
		||||
Implement a series of basic list operations, without using existing functions.
 | 
			
		||||
 | 
			
		||||
The precise number and names of the operations to be implemented will be track dependent to avoid conflicts with existing names, but the general operations you will implement include:
 | 
			
		||||
 | 
			
		||||
- `append` (*given two lists, add all items in the second list to the end of the first list*);
 | 
			
		||||
- `concatenate` (*given a series of lists, combine all items in all lists into one flattened list*);
 | 
			
		||||
- `filter` (*given a predicate and a list, return the list of all items for which `predicate(item)` is True*);
 | 
			
		||||
- `length` (*given a list, return the total number of items within it*);
 | 
			
		||||
- `map` (*given a function and a list, return the list of the results of applying `function(item)` on all items*);
 | 
			
		||||
- `foldl` (*given a function, a list, and initial accumulator, fold (reduce) each item into the accumulator from the left*);
 | 
			
		||||
- `foldr` (*given a function, a list, and an initial accumulator, fold (reduce) each item into the accumulator from the right*);
 | 
			
		||||
- `reverse` (*given a list, return a list with all the original items, but in reversed order*).
 | 
			
		||||
 | 
			
		||||
Note, the ordering in which arguments are passed to the fold functions (`foldl`, `foldr`) is significant.
 | 
			
		||||
@ -1,25 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "authors": [
 | 
			
		||||
    "wolf99"
 | 
			
		||||
  ],
 | 
			
		||||
  "contributors": [
 | 
			
		||||
    "patricksjackson",
 | 
			
		||||
    "rootbeersoup",
 | 
			
		||||
    "ryanplusplus",
 | 
			
		||||
    "xihh87"
 | 
			
		||||
  ],
 | 
			
		||||
  "files": {
 | 
			
		||||
    "solution": [
 | 
			
		||||
      "list_ops.c",
 | 
			
		||||
      "list_ops.h"
 | 
			
		||||
    ],
 | 
			
		||||
    "test": [
 | 
			
		||||
      "test_list_ops.c"
 | 
			
		||||
    ],
 | 
			
		||||
    "example": [
 | 
			
		||||
      ".meta/example.c",
 | 
			
		||||
      ".meta/example.h"
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
  "blurb": "Implement basic list operations."
 | 
			
		||||
}
 | 
			
		||||
@ -1,134 +0,0 @@
 | 
			
		||||
#include "list_ops.h"
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
list_t *new_list(size_t length, list_element_t elements[])
 | 
			
		||||
{
 | 
			
		||||
   list_t *list = malloc(sizeof(*list) + sizeof(list_element_t) * length);
 | 
			
		||||
 | 
			
		||||
   if (!list)
 | 
			
		||||
      return NULL;
 | 
			
		||||
 | 
			
		||||
   list->length = length;
 | 
			
		||||
   memcpy(list->elements, elements, sizeof(list_element_t) * length);
 | 
			
		||||
 | 
			
		||||
   return list;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
list_t *append_list(list_t *list1, list_t *list2)
 | 
			
		||||
{
 | 
			
		||||
   if (!list1 || !list2)
 | 
			
		||||
      return NULL;
 | 
			
		||||
 | 
			
		||||
   size_t length = list1->length + list2->length;
 | 
			
		||||
   list_t *list = malloc(sizeof(*list) + sizeof(list_element_t) * (length));
 | 
			
		||||
 | 
			
		||||
   if (!list)
 | 
			
		||||
      return NULL;
 | 
			
		||||
 | 
			
		||||
   list->length = length;
 | 
			
		||||
   if (length) {
 | 
			
		||||
      memcpy(list->elements, list1->elements,
 | 
			
		||||
             sizeof(list_element_t) * list1->length);
 | 
			
		||||
      memcpy(&(list->elements[list1->length]), list2->elements,
 | 
			
		||||
             sizeof(list_element_t) * list2->length);
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   return list;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
list_t *filter_list(list_t *list, bool (*filter)(list_element_t))
 | 
			
		||||
{
 | 
			
		||||
   if (!list || !filter)
 | 
			
		||||
      return NULL;
 | 
			
		||||
 | 
			
		||||
   list_t *filtered =
 | 
			
		||||
       malloc(sizeof(*list) + sizeof(list_element_t) * list->length);
 | 
			
		||||
 | 
			
		||||
   if (!filtered)
 | 
			
		||||
      return NULL;
 | 
			
		||||
 | 
			
		||||
   size_t j = 0;
 | 
			
		||||
   for (size_t i = 0; i < list->length && j < list->length; ++i) {
 | 
			
		||||
      if (filter(list->elements[i]))
 | 
			
		||||
         filtered->elements[j++] = list->elements[i];
 | 
			
		||||
   }
 | 
			
		||||
   filtered->length = j;
 | 
			
		||||
 | 
			
		||||
   return filtered;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
size_t length_list(list_t *list)
 | 
			
		||||
{
 | 
			
		||||
   if (!list)
 | 
			
		||||
      return 0;
 | 
			
		||||
   return list->length;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
list_t *map_list(list_t *list, list_element_t (*map)(list_element_t))
 | 
			
		||||
{
 | 
			
		||||
   if (!list || !map)
 | 
			
		||||
      return NULL;
 | 
			
		||||
 | 
			
		||||
   list_t *mapped =
 | 
			
		||||
       malloc(sizeof(*list) + sizeof(list_element_t) * list->length);
 | 
			
		||||
 | 
			
		||||
   if (!mapped)
 | 
			
		||||
      return NULL;
 | 
			
		||||
 | 
			
		||||
   mapped->length = list->length;
 | 
			
		||||
   for (size_t i = 0; i < mapped->length; ++i)
 | 
			
		||||
      mapped->elements[i] = map(list->elements[i]);
 | 
			
		||||
 | 
			
		||||
   return mapped;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
list_element_t foldl_list(list_t *list, list_element_t initial,
 | 
			
		||||
                          list_element_t (*foldl)(list_element_t,
 | 
			
		||||
                                                  list_element_t))
 | 
			
		||||
{
 | 
			
		||||
   if (!list || !foldl)
 | 
			
		||||
      return 0;
 | 
			
		||||
 | 
			
		||||
   for (size_t i = 0; i < list->length; ++i)
 | 
			
		||||
      initial = foldl(list->elements[i], initial);
 | 
			
		||||
 | 
			
		||||
   return initial;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
list_element_t foldr_list(list_t *list, list_element_t initial,
 | 
			
		||||
                          list_element_t (*foldr)(list_element_t,
 | 
			
		||||
                                                  list_element_t))
 | 
			
		||||
{
 | 
			
		||||
   if (!list || !foldr)
 | 
			
		||||
      return 0;
 | 
			
		||||
 | 
			
		||||
   for (size_t i = list->length; i > 0; --i)
 | 
			
		||||
      initial = foldr(list->elements[i - 1], initial);
 | 
			
		||||
 | 
			
		||||
   return initial;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
list_t *reverse_list(list_t *list)
 | 
			
		||||
{
 | 
			
		||||
   if (!list)
 | 
			
		||||
      return NULL;
 | 
			
		||||
 | 
			
		||||
   list_t *reversed =
 | 
			
		||||
       malloc(sizeof(*list) + sizeof(list_element_t) * list->length);
 | 
			
		||||
 | 
			
		||||
   if (!reversed)
 | 
			
		||||
      return NULL;
 | 
			
		||||
 | 
			
		||||
   reversed->length = list->length;
 | 
			
		||||
   for (size_t i = 0, j = reversed->length - 1; i < reversed->length;
 | 
			
		||||
        i++, j--) {
 | 
			
		||||
      reversed->elements[i] = list->elements[j];
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   return reversed;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void delete_list(list_t *list)
 | 
			
		||||
{
 | 
			
		||||
   free(list);
 | 
			
		||||
}
 | 
			
		||||
@ -1,47 +0,0 @@
 | 
			
		||||
#ifndef LIST_OPS_H
 | 
			
		||||
#define LIST_OPS_H
 | 
			
		||||
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <stdbool.h>
 | 
			
		||||
 | 
			
		||||
typedef int list_element_t;
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
   size_t length;
 | 
			
		||||
   list_element_t elements[];
 | 
			
		||||
} list_t;
 | 
			
		||||
 | 
			
		||||
// constructs a new list
 | 
			
		||||
list_t *new_list(size_t length, list_element_t elements[]);
 | 
			
		||||
 | 
			
		||||
// append entries to a list and return the new list
 | 
			
		||||
list_t *append_list(list_t *list1, list_t *list2);
 | 
			
		||||
 | 
			
		||||
// filter list returning only values that satisfy the filter function
 | 
			
		||||
list_t *filter_list(list_t *list, bool (*filter)(list_element_t));
 | 
			
		||||
 | 
			
		||||
// returns the length of the list
 | 
			
		||||
size_t length_list(list_t *list);
 | 
			
		||||
 | 
			
		||||
// return a list of elements whose values equal the list value transformed by
 | 
			
		||||
// the mapping function
 | 
			
		||||
list_t *map_list(list_t *list, list_element_t (*map)(list_element_t));
 | 
			
		||||
 | 
			
		||||
// folds (reduces) the given list from the left with a function
 | 
			
		||||
list_element_t foldl_list(list_t *list, list_element_t initial,
 | 
			
		||||
                          list_element_t (*foldl)(list_element_t,
 | 
			
		||||
                                                  list_element_t));
 | 
			
		||||
 | 
			
		||||
// folds (reduces) the given list from the right with a function
 | 
			
		||||
list_element_t foldr_list(list_t *list, list_element_t initial,
 | 
			
		||||
                          list_element_t (*foldr)(list_element_t,
 | 
			
		||||
                                                  list_element_t));
 | 
			
		||||
 | 
			
		||||
// reverse the elements of the list
 | 
			
		||||
list_t *reverse_list(list_t *list);
 | 
			
		||||
 | 
			
		||||
// destroy the entire list
 | 
			
		||||
// list will be a dangling pointer after calling this method on it
 | 
			
		||||
void delete_list(list_t *list);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
@ -1,105 +0,0 @@
 | 
			
		||||
# This is an auto-generated file. Regular comments will be removed when this
 | 
			
		||||
# file is regenerated. Regenerating will not touch any manually added keys,
 | 
			
		||||
# so comments can be added in a "comment" key.
 | 
			
		||||
 | 
			
		||||
[485b9452-bf94-40f7-a3db-c3cf4850066a]
 | 
			
		||||
description = "empty lists"
 | 
			
		||||
 | 
			
		||||
[2c894696-b609-4569-b149-8672134d340a]
 | 
			
		||||
description = "list to empty list"
 | 
			
		||||
 | 
			
		||||
[e842efed-3bf6-4295-b371-4d67a4fdf19c]
 | 
			
		||||
description = "empty list to list"
 | 
			
		||||
 | 
			
		||||
[71dcf5eb-73ae-4a0e-b744-a52ee387922f]
 | 
			
		||||
description = "non-empty lists"
 | 
			
		||||
 | 
			
		||||
[28444355-201b-4af2-a2f6-5550227bde21]
 | 
			
		||||
description = "empty list"
 | 
			
		||||
include = false
 | 
			
		||||
 | 
			
		||||
[331451c1-9573-42a1-9869-2d06e3b389a9]
 | 
			
		||||
description = "list of lists"
 | 
			
		||||
include = false
 | 
			
		||||
comment = "C does not easily allow a single implementation for multiple types (Liskov substitution)"
 | 
			
		||||
 | 
			
		||||
[d6ecd72c-197f-40c3-89a4-aa1f45827e09]
 | 
			
		||||
description = "list of nested lists"
 | 
			
		||||
include = false
 | 
			
		||||
comment = "C does not easily allow a single implementation for multiple types (Liskov substitution)"
 | 
			
		||||
 | 
			
		||||
[0524fba8-3e0f-4531-ad2b-f7a43da86a16]
 | 
			
		||||
description = "empty list"
 | 
			
		||||
 | 
			
		||||
[88494bd5-f520-4edb-8631-88e415b62d24]
 | 
			
		||||
description = "non-empty list"
 | 
			
		||||
 | 
			
		||||
[1cf0b92d-8d96-41d5-9c21-7b3c37cb6aad]
 | 
			
		||||
description = "empty list"
 | 
			
		||||
 | 
			
		||||
[d7b8d2d9-2d16-44c4-9a19-6e5f237cb71e]
 | 
			
		||||
description = "non-empty list"
 | 
			
		||||
 | 
			
		||||
[c0bc8962-30e2-4bec-9ae4-668b8ecd75aa]
 | 
			
		||||
description = "empty list"
 | 
			
		||||
 | 
			
		||||
[11e71a95-e78b-4909-b8e4-60cdcaec0e91]
 | 
			
		||||
description = "non-empty list"
 | 
			
		||||
 | 
			
		||||
[613b20b7-1873-4070-a3a6-70ae5f50d7cc]
 | 
			
		||||
description = "empty list"
 | 
			
		||||
include = false
 | 
			
		||||
 | 
			
		||||
[e56df3eb-9405-416a-b13a-aabb4c3b5194]
 | 
			
		||||
description = "direction independent function applied to non-empty list"
 | 
			
		||||
include = false
 | 
			
		||||
coment = "reimplemented"
 | 
			
		||||
 | 
			
		||||
[d2cf5644-aee1-4dfc-9b88-06896676fe27]
 | 
			
		||||
description = "direction dependent function applied to non-empty list"
 | 
			
		||||
 | 
			
		||||
[36549237-f765-4a4c-bfd9-5d3a8f7b07d2]
 | 
			
		||||
description = "empty list"
 | 
			
		||||
 | 
			
		||||
[7a626a3c-03ec-42bc-9840-53f280e13067]
 | 
			
		||||
description = "direction independent function applied to non-empty list"
 | 
			
		||||
 | 
			
		||||
[d7fcad99-e88e-40e1-a539-4c519681f390]
 | 
			
		||||
description = "direction dependent function applied to non-empty list"
 | 
			
		||||
include = false
 | 
			
		||||
comment = "Prefer integer division test case (d2cf5644-aee1-4dfc-9b88-06896676fe27)"
 | 
			
		||||
 | 
			
		||||
[aeb576b9-118e-4a57-a451-db49fac20fdc]
 | 
			
		||||
description = "empty list"
 | 
			
		||||
include = false
 | 
			
		||||
coment = "reimplemented"
 | 
			
		||||
 | 
			
		||||
[c4b64e58-313e-4c47-9c68-7764964efb8e]
 | 
			
		||||
description = "direction independent function applied to non-empty list"
 | 
			
		||||
include = false
 | 
			
		||||
coment = "reimplemented"
 | 
			
		||||
 | 
			
		||||
[be396a53-c074-4db3-8dd6-f7ed003cce7c]
 | 
			
		||||
description = "direction dependent function applied to non-empty list"
 | 
			
		||||
 | 
			
		||||
[17214edb-20ba-42fc-bda8-000a5ab525b0]
 | 
			
		||||
description = "empty list"
 | 
			
		||||
 | 
			
		||||
[e1c64db7-9253-4a3d-a7c4-5273b9e2a1bd]
 | 
			
		||||
description = "direction independent function applied to non-empty list"
 | 
			
		||||
 | 
			
		||||
[8066003b-f2ff-437e-9103-66e6df474844]
 | 
			
		||||
description = "direction dependent function applied to non-empty list"
 | 
			
		||||
include = false
 | 
			
		||||
comment = "Prefer integer division test case (be396a53-c074-4db3-8dd6-f7ed003cce7c)"
 | 
			
		||||
 | 
			
		||||
[94231515-050e-4841-943d-d4488ab4ee30]
 | 
			
		||||
description = "empty list"
 | 
			
		||||
 | 
			
		||||
[fcc03d1e-42e0-4712-b689-d54ad761f360]
 | 
			
		||||
description = "non-empty list"
 | 
			
		||||
 | 
			
		||||
[40872990-b5b8-4cb8-9085-d91fc0d05d26]
 | 
			
		||||
description = "list of lists is not flattened"
 | 
			
		||||
include = false
 | 
			
		||||
comment = "C does not easily allow a single implementation for multiple types (Liskov substitution)"
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@ -1,45 +0,0 @@
 | 
			
		||||
#ifndef LIST_OPS_H
 | 
			
		||||
#define LIST_OPS_H
 | 
			
		||||
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <stdbool.h>
 | 
			
		||||
 | 
			
		||||
typedef int list_element_t;
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
   size_t length;
 | 
			
		||||
   list_element_t elements[];
 | 
			
		||||
} list_t;
 | 
			
		||||
 | 
			
		||||
// constructs a new list
 | 
			
		||||
list_t *new_list(size_t length, list_element_t elements[]);
 | 
			
		||||
 | 
			
		||||
// append entries to a list and return the new list
 | 
			
		||||
list_t *append_list(list_t *list1, list_t *list2);
 | 
			
		||||
 | 
			
		||||
// filter list returning only values that satisfy the filter function
 | 
			
		||||
list_t *filter_list(list_t *list, bool (*filter)(list_element_t));
 | 
			
		||||
 | 
			
		||||
// returns the length of the list
 | 
			
		||||
size_t length_list(list_t *list);
 | 
			
		||||
 | 
			
		||||
// return a list of elements whose values equal the list value transformed by
 | 
			
		||||
// the mapping function
 | 
			
		||||
list_t *map_list(list_t *list, list_element_t (*map)(list_element_t));
 | 
			
		||||
 | 
			
		||||
// folds (reduces) the given list from the left with a function
 | 
			
		||||
list_element_t foldl_list(list_t *list, list_element_t initial,list_element_t));
 | 
			
		||||
 | 
			
		||||
// folds (reduces) the given list from the right with a function
 | 
			
		||||
list_element_t foldr_list(list_t *list, list_element_t initial,
 | 
			
		||||
                          list_element_t (*foldr)(list_element_t,
 | 
			
		||||
                                                  list_element_t));
 | 
			
		||||
 | 
			
		||||
// reverse the elements of the list
 | 
			
		||||
list_t *reverse_list(list_t *list);
 | 
			
		||||
 | 
			
		||||
// destroy the entire list
 | 
			
		||||
// list will be a dangling pointer after calling this method on it
 | 
			
		||||
void delete_list(list_t *list);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
@ -1,37 +0,0 @@
 | 
			
		||||
### If you wish to use extra libraries (math.h for instance),
 | 
			
		||||
### add their flags here (-lm in our case) in the "LIBS" variable.
 | 
			
		||||
 | 
			
		||||
LIBS = -lm
 | 
			
		||||
 | 
			
		||||
###
 | 
			
		||||
CFLAGS  = -std=c99
 | 
			
		||||
CFLAGS += -g
 | 
			
		||||
CFLAGS += -Wall
 | 
			
		||||
CFLAGS += -Wextra
 | 
			
		||||
CFLAGS += -pedantic
 | 
			
		||||
CFLAGS += -Werror
 | 
			
		||||
CFLAGS += -Wmissing-declarations
 | 
			
		||||
CFLAGS += -DUNITY_SUPPORT_64 -DUNITY_OUTPUT_COLOR
 | 
			
		||||
 | 
			
		||||
ASANFLAGS  = -fsanitize=address
 | 
			
		||||
ASANFLAGS += -fno-common
 | 
			
		||||
ASANFLAGS += -fno-omit-frame-pointer
 | 
			
		||||
 | 
			
		||||
.PHONY: test
 | 
			
		||||
test: tests.out
 | 
			
		||||
	@./tests.out
 | 
			
		||||
 | 
			
		||||
.PHONY: memcheck
 | 
			
		||||
memcheck: ./*.c ./*.h
 | 
			
		||||
	@echo Compiling $@
 | 
			
		||||
	@$(CC) $(ASANFLAGS) $(CFLAGS) test-framework/unity.c ./*.c -o memcheck.out $(LIBS)
 | 
			
		||||
	@./memcheck.out
 | 
			
		||||
	@echo "Memory check passed"
 | 
			
		||||
 | 
			
		||||
.PHONY: clean
 | 
			
		||||
clean:
 | 
			
		||||
	rm -rf *.o *.out *.out.dSYM
 | 
			
		||||
 | 
			
		||||
tests.out: ./*.c ./*.h
 | 
			
		||||
	@echo Compiling $@
 | 
			
		||||
	@$(CC) $(CFLAGS) test-framework/unity.c ./*.c -o tests.out $(LIBS)
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -1,661 +0,0 @@
 | 
			
		||||
/* ==========================================
 | 
			
		||||
    Unity Project - A Test Framework for C
 | 
			
		||||
    Copyright (c) 2007-21 Mike Karlesky, Mark VanderVoord, Greg Williams
 | 
			
		||||
    [Released under MIT License. Please refer to license.txt for details]
 | 
			
		||||
========================================== */
 | 
			
		||||
 | 
			
		||||
#ifndef UNITY_FRAMEWORK_H
 | 
			
		||||
#define UNITY_FRAMEWORK_H
 | 
			
		||||
#define UNITY
 | 
			
		||||
 | 
			
		||||
#define UNITY_VERSION_MAJOR    2
 | 
			
		||||
#define UNITY_VERSION_MINOR    5
 | 
			
		||||
#define UNITY_VERSION_BUILD    2
 | 
			
		||||
#define UNITY_VERSION          ((UNITY_VERSION_MAJOR << 16) | (UNITY_VERSION_MINOR << 8) | UNITY_VERSION_BUILD)
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C"
 | 
			
		||||
{
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "unity_internals.h"
 | 
			
		||||
 | 
			
		||||
/*-------------------------------------------------------
 | 
			
		||||
 * Test Setup / Teardown
 | 
			
		||||
 *-------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
/* These functions are intended to be called before and after each test.
 | 
			
		||||
 * If using unity directly, these will need to be provided for each test
 | 
			
		||||
 * executable built. If you are using the test runner generator and/or
 | 
			
		||||
 * Ceedling, these are optional. */
 | 
			
		||||
void setUp(void);
 | 
			
		||||
void tearDown(void);
 | 
			
		||||
 | 
			
		||||
/* These functions are intended to be called at the beginning and end of an
 | 
			
		||||
 * entire test suite.  suiteTearDown() is passed the number of tests that
 | 
			
		||||
 * failed, and its return value becomes the exit code of main(). If using
 | 
			
		||||
 * Unity directly, you're in charge of calling these if they are desired.
 | 
			
		||||
 * If using Ceedling or the test runner generator, these will be called
 | 
			
		||||
 * automatically if they exist. */
 | 
			
		||||
void suiteSetUp(void);
 | 
			
		||||
int suiteTearDown(int num_failures);
 | 
			
		||||
 | 
			
		||||
/*-------------------------------------------------------
 | 
			
		||||
 * Test Reset and Verify
 | 
			
		||||
 *-------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
/* These functions are intended to be called before during tests in order
 | 
			
		||||
 * to support complex test loops, etc. Both are NOT built into Unity. Instead
 | 
			
		||||
 * the test runner generator will create them. resetTest will run teardown and
 | 
			
		||||
 * setup again, verifying any end-of-test needs between. verifyTest will only
 | 
			
		||||
 * run the verification. */
 | 
			
		||||
void resetTest(void);
 | 
			
		||||
void verifyTest(void);
 | 
			
		||||
 | 
			
		||||
/*-------------------------------------------------------
 | 
			
		||||
 * Configuration Options
 | 
			
		||||
 *-------------------------------------------------------
 | 
			
		||||
 * All options described below should be passed as a compiler flag to all files using Unity. If you must add #defines, place them BEFORE the #include above.
 | 
			
		||||
 | 
			
		||||
 * Integers/longs/pointers
 | 
			
		||||
 *     - Unity attempts to automatically discover your integer sizes
 | 
			
		||||
 *       - define UNITY_EXCLUDE_STDINT_H to stop attempting to look in <stdint.h>
 | 
			
		||||
 *       - define UNITY_EXCLUDE_LIMITS_H to stop attempting to look in <limits.h>
 | 
			
		||||
 *     - If you cannot use the automatic methods above, you can force Unity by using these options:
 | 
			
		||||
 *       - define UNITY_SUPPORT_64
 | 
			
		||||
 *       - set UNITY_INT_WIDTH
 | 
			
		||||
 *       - set UNITY_LONG_WIDTH
 | 
			
		||||
 *       - set UNITY_POINTER_WIDTH
 | 
			
		||||
 | 
			
		||||
 * Floats
 | 
			
		||||
 *     - define UNITY_EXCLUDE_FLOAT to disallow floating point comparisons
 | 
			
		||||
 *     - define UNITY_FLOAT_PRECISION to specify the precision to use when doing TEST_ASSERT_EQUAL_FLOAT
 | 
			
		||||
 *     - define UNITY_FLOAT_TYPE to specify doubles instead of single precision floats
 | 
			
		||||
 *     - define UNITY_INCLUDE_DOUBLE to allow double floating point comparisons
 | 
			
		||||
 *     - define UNITY_EXCLUDE_DOUBLE to disallow double floating point comparisons (default)
 | 
			
		||||
 *     - define UNITY_DOUBLE_PRECISION to specify the precision to use when doing TEST_ASSERT_EQUAL_DOUBLE
 | 
			
		||||
 *     - define UNITY_DOUBLE_TYPE to specify something other than double
 | 
			
		||||
 *     - define UNITY_EXCLUDE_FLOAT_PRINT to trim binary size, won't print floating point values in errors
 | 
			
		||||
 | 
			
		||||
 * Output
 | 
			
		||||
 *     - by default, Unity prints to standard out with putchar.  define UNITY_OUTPUT_CHAR(a) with a different function if desired
 | 
			
		||||
 *     - define UNITY_DIFFERENTIATE_FINAL_FAIL to print FAILED (vs. FAIL) at test end summary - for automated search for failure
 | 
			
		||||
 | 
			
		||||
 * Optimization
 | 
			
		||||
 *     - by default, line numbers are stored in unsigned shorts.  Define UNITY_LINE_TYPE with a different type if your files are huge
 | 
			
		||||
 *     - by default, test and failure counters are unsigned shorts.  Define UNITY_COUNTER_TYPE with a different type if you want to save space or have more than 65535 Tests.
 | 
			
		||||
 | 
			
		||||
 * Test Cases
 | 
			
		||||
 *     - define UNITY_SUPPORT_TEST_CASES to include the TEST_CASE macro, though really it's mostly about the runner generator script
 | 
			
		||||
 | 
			
		||||
 * Parameterized Tests
 | 
			
		||||
 *     - you'll want to create a define of TEST_CASE(...) which basically evaluates to nothing
 | 
			
		||||
 | 
			
		||||
 * Tests with Arguments
 | 
			
		||||
 *     - you'll want to define UNITY_USE_COMMAND_LINE_ARGS if you have the test runner passing arguments to Unity
 | 
			
		||||
 | 
			
		||||
 *-------------------------------------------------------
 | 
			
		||||
 * Basic Fail and Ignore
 | 
			
		||||
 *-------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
#define TEST_FAIL_MESSAGE(message)                                                                 UNITY_TEST_FAIL(__LINE__, (message))
 | 
			
		||||
#define TEST_FAIL()                                                                                UNITY_TEST_FAIL(__LINE__, NULL)
 | 
			
		||||
#define TEST_IGNORE_MESSAGE(message)                                                               UNITY_TEST_IGNORE(__LINE__, (message))
 | 
			
		||||
#define TEST_IGNORE()                                                                              UNITY_TEST_IGNORE(__LINE__, NULL)
 | 
			
		||||
#define TEST_MESSAGE(message)                                                                      UnityMessage((message), __LINE__)
 | 
			
		||||
#define TEST_ONLY()
 | 
			
		||||
#ifdef UNITY_INCLUDE_PRINT_FORMATTED
 | 
			
		||||
#define TEST_PRINTF(message, ...)                                                                  UnityPrintF(__LINE__, (message), __VA_ARGS__)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* It is not necessary for you to call PASS. A PASS condition is assumed if nothing fails.
 | 
			
		||||
 * This method allows you to abort a test immediately with a PASS state, ignoring the remainder of the test. */
 | 
			
		||||
#define TEST_PASS()                                                                                TEST_ABORT()
 | 
			
		||||
#define TEST_PASS_MESSAGE(message)                                                                 do { UnityMessage((message), __LINE__); TEST_ABORT(); } while(0)
 | 
			
		||||
 | 
			
		||||
/* This macro does nothing, but it is useful for build tools (like Ceedling) to make use of this to figure out
 | 
			
		||||
 * which files should be linked to in order to perform a test. Use it like TEST_FILE("sandwiches.c") */
 | 
			
		||||
#define TEST_FILE(a)
 | 
			
		||||
 | 
			
		||||
/*-------------------------------------------------------
 | 
			
		||||
 * Test Asserts (simple)
 | 
			
		||||
 *-------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
/* Boolean */
 | 
			
		||||
#define TEST_ASSERT(condition)                                                                     UNITY_TEST_ASSERT(       (condition), __LINE__, " Expression Evaluated To FALSE")
 | 
			
		||||
#define TEST_ASSERT_TRUE(condition)                                                                UNITY_TEST_ASSERT(       (condition), __LINE__, " Expected TRUE Was FALSE")
 | 
			
		||||
#define TEST_ASSERT_UNLESS(condition)                                                              UNITY_TEST_ASSERT(      !(condition), __LINE__, " Expression Evaluated To TRUE")
 | 
			
		||||
#define TEST_ASSERT_FALSE(condition)                                                               UNITY_TEST_ASSERT(      !(condition), __LINE__, " Expected FALSE Was TRUE")
 | 
			
		||||
#define TEST_ASSERT_NULL(pointer)                                                                  UNITY_TEST_ASSERT_NULL(    (pointer), __LINE__, " Expected NULL")
 | 
			
		||||
#define TEST_ASSERT_NOT_NULL(pointer)                                                              UNITY_TEST_ASSERT_NOT_NULL((pointer), __LINE__, " Expected Non-NULL")
 | 
			
		||||
#define TEST_ASSERT_EMPTY(pointer)                                                                 UNITY_TEST_ASSERT_EMPTY(    (pointer), __LINE__, " Expected Empty")
 | 
			
		||||
#define TEST_ASSERT_NOT_EMPTY(pointer)                                                             UNITY_TEST_ASSERT_NOT_EMPTY((pointer), __LINE__, " Expected Non-Empty")
 | 
			
		||||
 | 
			
		||||
/* Integers (of all sizes) */
 | 
			
		||||
#define TEST_ASSERT_EQUAL_INT(expected, actual)                                                    UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_INT8(expected, actual)                                                   UNITY_TEST_ASSERT_EQUAL_INT8((expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_INT16(expected, actual)                                                  UNITY_TEST_ASSERT_EQUAL_INT16((expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_INT32(expected, actual)                                                  UNITY_TEST_ASSERT_EQUAL_INT32((expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_INT64(expected, actual)                                                  UNITY_TEST_ASSERT_EQUAL_INT64((expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_UINT(expected, actual)                                                   UNITY_TEST_ASSERT_EQUAL_UINT( (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_UINT8(expected, actual)                                                  UNITY_TEST_ASSERT_EQUAL_UINT8( (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_UINT16(expected, actual)                                                 UNITY_TEST_ASSERT_EQUAL_UINT16( (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_UINT32(expected, actual)                                                 UNITY_TEST_ASSERT_EQUAL_UINT32( (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_UINT64(expected, actual)                                                 UNITY_TEST_ASSERT_EQUAL_UINT64( (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_size_t(expected, actual)                                                 UNITY_TEST_ASSERT_EQUAL_UINT((expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_HEX(expected, actual)                                                    UNITY_TEST_ASSERT_EQUAL_HEX32((expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_HEX8(expected, actual)                                                   UNITY_TEST_ASSERT_EQUAL_HEX8( (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_HEX16(expected, actual)                                                  UNITY_TEST_ASSERT_EQUAL_HEX16((expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_HEX32(expected, actual)                                                  UNITY_TEST_ASSERT_EQUAL_HEX32((expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_HEX64(expected, actual)                                                  UNITY_TEST_ASSERT_EQUAL_HEX64((expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_CHAR(expected, actual)                                                   UNITY_TEST_ASSERT_EQUAL_CHAR((expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_BITS(mask, expected, actual)                                                   UNITY_TEST_ASSERT_BITS((mask), (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_BITS_HIGH(mask, actual)                                                        UNITY_TEST_ASSERT_BITS((mask), (UNITY_UINT)(-1), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_BITS_LOW(mask, actual)                                                         UNITY_TEST_ASSERT_BITS((mask), (UNITY_UINT)(0), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_BIT_HIGH(bit, actual)                                                          UNITY_TEST_ASSERT_BITS(((UNITY_UINT)1 << (bit)), (UNITY_UINT)(-1), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_BIT_LOW(bit, actual)                                                           UNITY_TEST_ASSERT_BITS(((UNITY_UINT)1 << (bit)), (UNITY_UINT)(0), (actual), __LINE__, NULL)
 | 
			
		||||
 | 
			
		||||
/* Integer Not Equal To (of all sizes) */
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_INT(threshold, actual)                                               UNITY_TEST_ASSERT_NOT_EQUAL_INT((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_INT8(threshold, actual)                                              UNITY_TEST_ASSERT_NOT_EQUAL_INT8((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_INT16(threshold, actual)                                             UNITY_TEST_ASSERT_NOT_EQUAL_INT16((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_INT32(threshold, actual)                                             UNITY_TEST_ASSERT_NOT_EQUAL_INT32((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_INT64(threshold, actual)                                             UNITY_TEST_ASSERT_NOT_EQUAL_INT64((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_UINT(threshold, actual)                                              UNITY_TEST_ASSERT_NOT_EQUAL_UINT((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_UINT8(threshold, actual)                                             UNITY_TEST_ASSERT_NOT_EQUAL_UINT8((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_UINT16(threshold, actual)                                            UNITY_TEST_ASSERT_NOT_EQUAL_UINT16((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_UINT32(threshold, actual)                                            UNITY_TEST_ASSERT_NOT_EQUAL_UINT32((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_UINT64(threshold, actual)                                            UNITY_TEST_ASSERT_NOT_EQUAL_UINT64((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_size_t(threshold, actual)                                            UNITY_TEST_ASSERT_NOT_EQUAL_UINT((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_HEX8(threshold, actual)                                              UNITY_TEST_ASSERT_NOT_EQUAL_HEX8((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_HEX16(threshold, actual)                                             UNITY_TEST_ASSERT_NOT_EQUAL_HEX16((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_HEX32(threshold, actual)                                             UNITY_TEST_ASSERT_NOT_EQUAL_HEX32((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_HEX64(threshold, actual)                                             UNITY_TEST_ASSERT_NOT_EQUAL_HEX64((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_CHAR(threshold, actual)                                              UNITY_TEST_ASSERT_NOT_EQUAL_CHAR((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
 | 
			
		||||
/* Integer Greater Than/ Less Than (of all sizes) */
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN(threshold, actual)                                                UNITY_TEST_ASSERT_GREATER_THAN_INT((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_INT(threshold, actual)                                            UNITY_TEST_ASSERT_GREATER_THAN_INT((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_INT8(threshold, actual)                                           UNITY_TEST_ASSERT_GREATER_THAN_INT8((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_INT16(threshold, actual)                                          UNITY_TEST_ASSERT_GREATER_THAN_INT16((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_INT32(threshold, actual)                                          UNITY_TEST_ASSERT_GREATER_THAN_INT32((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_INT64(threshold, actual)                                          UNITY_TEST_ASSERT_GREATER_THAN_INT64((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_UINT(threshold, actual)                                           UNITY_TEST_ASSERT_GREATER_THAN_UINT((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_UINT8(threshold, actual)                                          UNITY_TEST_ASSERT_GREATER_THAN_UINT8((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_UINT16(threshold, actual)                                         UNITY_TEST_ASSERT_GREATER_THAN_UINT16((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_UINT32(threshold, actual)                                         UNITY_TEST_ASSERT_GREATER_THAN_UINT32((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_UINT64(threshold, actual)                                         UNITY_TEST_ASSERT_GREATER_THAN_UINT64((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_size_t(threshold, actual)                                         UNITY_TEST_ASSERT_GREATER_THAN_UINT((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_HEX8(threshold, actual)                                           UNITY_TEST_ASSERT_GREATER_THAN_HEX8((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_HEX16(threshold, actual)                                          UNITY_TEST_ASSERT_GREATER_THAN_HEX16((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_HEX32(threshold, actual)                                          UNITY_TEST_ASSERT_GREATER_THAN_HEX32((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_HEX64(threshold, actual)                                          UNITY_TEST_ASSERT_GREATER_THAN_HEX64((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_CHAR(threshold, actual)                                           UNITY_TEST_ASSERT_GREATER_THAN_CHAR((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN(threshold, actual)                                                   UNITY_TEST_ASSERT_SMALLER_THAN_INT((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_INT(threshold, actual)                                               UNITY_TEST_ASSERT_SMALLER_THAN_INT((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_INT8(threshold, actual)                                              UNITY_TEST_ASSERT_SMALLER_THAN_INT8((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_INT16(threshold, actual)                                             UNITY_TEST_ASSERT_SMALLER_THAN_INT16((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_INT32(threshold, actual)                                             UNITY_TEST_ASSERT_SMALLER_THAN_INT32((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_INT64(threshold, actual)                                             UNITY_TEST_ASSERT_SMALLER_THAN_INT64((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_UINT(threshold, actual)                                              UNITY_TEST_ASSERT_SMALLER_THAN_UINT((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_UINT8(threshold, actual)                                             UNITY_TEST_ASSERT_SMALLER_THAN_UINT8((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_UINT16(threshold, actual)                                            UNITY_TEST_ASSERT_SMALLER_THAN_UINT16((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_UINT32(threshold, actual)                                            UNITY_TEST_ASSERT_SMALLER_THAN_UINT32((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_UINT64(threshold, actual)                                            UNITY_TEST_ASSERT_SMALLER_THAN_UINT64((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_size_t(threshold, actual)                                            UNITY_TEST_ASSERT_SMALLER_THAN_UINT((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_HEX8(threshold, actual)                                              UNITY_TEST_ASSERT_SMALLER_THAN_HEX8((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_HEX16(threshold, actual)                                             UNITY_TEST_ASSERT_SMALLER_THAN_HEX16((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_HEX32(threshold, actual)                                             UNITY_TEST_ASSERT_SMALLER_THAN_HEX32((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_HEX64(threshold, actual)                                             UNITY_TEST_ASSERT_SMALLER_THAN_HEX64((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_CHAR(threshold, actual)                                              UNITY_TEST_ASSERT_SMALLER_THAN_CHAR((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL(threshold, actual)                                            UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_INT(threshold, actual)                                        UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_INT8(threshold, actual)                                       UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT8((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_INT16(threshold, actual)                                      UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT16((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_INT32(threshold, actual)                                      UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT32((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_INT64(threshold, actual)                                      UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT64((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_UINT(threshold, actual)                                       UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_UINT8(threshold, actual)                                      UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT8((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_UINT16(threshold, actual)                                     UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT16((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_UINT32(threshold, actual)                                     UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT32((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_UINT64(threshold, actual)                                     UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT64((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_size_t(threshold, actual)                                     UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_HEX8(threshold, actual)                                       UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX8((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_HEX16(threshold, actual)                                      UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX16((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_HEX32(threshold, actual)                                      UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX32((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_HEX64(threshold, actual)                                      UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX64((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_CHAR(threshold, actual)                                       UNITY_TEST_ASSERT_GREATER_OR_EQUAL_CHAR((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL(threshold, actual)                                               UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_INT(threshold, actual)                                           UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_INT8(threshold, actual)                                          UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT8((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_INT16(threshold, actual)                                         UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT16((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_INT32(threshold, actual)                                         UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT32((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_INT64(threshold, actual)                                         UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT64((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_UINT(threshold, actual)                                          UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_UINT8(threshold, actual)                                         UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT8((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_UINT16(threshold, actual)                                        UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT16((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_UINT32(threshold, actual)                                        UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT32((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_UINT64(threshold, actual)                                        UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT64((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_size_t(threshold, actual)                                        UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_HEX8(threshold, actual)                                          UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX8((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_HEX16(threshold, actual)                                         UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX16((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_HEX32(threshold, actual)                                         UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX32((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_HEX64(threshold, actual)                                         UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX64((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_CHAR(threshold, actual)                                          UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_CHAR((threshold), (actual), __LINE__, NULL)
 | 
			
		||||
 | 
			
		||||
/* Integer Ranges (of all sizes) */
 | 
			
		||||
#define TEST_ASSERT_INT_WITHIN(delta, expected, actual)                                            UNITY_TEST_ASSERT_INT_WITHIN((delta), (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_INT8_WITHIN(delta, expected, actual)                                           UNITY_TEST_ASSERT_INT8_WITHIN((delta), (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_INT16_WITHIN(delta, expected, actual)                                          UNITY_TEST_ASSERT_INT16_WITHIN((delta), (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_INT32_WITHIN(delta, expected, actual)                                          UNITY_TEST_ASSERT_INT32_WITHIN((delta), (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_INT64_WITHIN(delta, expected, actual)                                          UNITY_TEST_ASSERT_INT64_WITHIN((delta), (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_UINT_WITHIN(delta, expected, actual)                                           UNITY_TEST_ASSERT_UINT_WITHIN((delta), (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_UINT8_WITHIN(delta, expected, actual)                                          UNITY_TEST_ASSERT_UINT8_WITHIN((delta), (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_UINT16_WITHIN(delta, expected, actual)                                         UNITY_TEST_ASSERT_UINT16_WITHIN((delta), (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_UINT32_WITHIN(delta, expected, actual)                                         UNITY_TEST_ASSERT_UINT32_WITHIN((delta), (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_UINT64_WITHIN(delta, expected, actual)                                         UNITY_TEST_ASSERT_UINT64_WITHIN((delta), (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_size_t_WITHIN(delta, expected, actual)                                         UNITY_TEST_ASSERT_UINT_WITHIN((delta), (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_HEX_WITHIN(delta, expected, actual)                                            UNITY_TEST_ASSERT_HEX32_WITHIN((delta), (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_HEX8_WITHIN(delta, expected, actual)                                           UNITY_TEST_ASSERT_HEX8_WITHIN((delta), (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_HEX16_WITHIN(delta, expected, actual)                                          UNITY_TEST_ASSERT_HEX16_WITHIN((delta), (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_HEX32_WITHIN(delta, expected, actual)                                          UNITY_TEST_ASSERT_HEX32_WITHIN((delta), (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_HEX64_WITHIN(delta, expected, actual)                                          UNITY_TEST_ASSERT_HEX64_WITHIN((delta), (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_CHAR_WITHIN(delta, expected, actual)                                           UNITY_TEST_ASSERT_CHAR_WITHIN((delta), (expected), (actual), __LINE__, NULL)
 | 
			
		||||
 | 
			
		||||
/* Integer Array Ranges (of all sizes) */
 | 
			
		||||
#define TEST_ASSERT_INT_ARRAY_WITHIN(delta, expected, actual, num_elements)                        UNITY_TEST_ASSERT_INT_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_INT8_ARRAY_WITHIN(delta, expected, actual, num_elements)                       UNITY_TEST_ASSERT_INT8_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_INT16_ARRAY_WITHIN(delta, expected, actual, num_elements)                      UNITY_TEST_ASSERT_INT16_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_INT32_ARRAY_WITHIN(delta, expected, actual, num_elements)                      UNITY_TEST_ASSERT_INT32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_INT64_ARRAY_WITHIN(delta, expected, actual, num_elements)                      UNITY_TEST_ASSERT_INT64_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_UINT_ARRAY_WITHIN(delta, expected, actual, num_elements)                       UNITY_TEST_ASSERT_UINT_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_UINT8_ARRAY_WITHIN(delta, expected, actual, num_elements)                      UNITY_TEST_ASSERT_UINT8_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_UINT16_ARRAY_WITHIN(delta, expected, actual, num_elements)                     UNITY_TEST_ASSERT_UINT16_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_UINT32_ARRAY_WITHIN(delta, expected, actual, num_elements)                     UNITY_TEST_ASSERT_UINT32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_UINT64_ARRAY_WITHIN(delta, expected, actual, num_elements)                     UNITY_TEST_ASSERT_UINT64_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_size_t_ARRAY_WITHIN(delta, expected, actual, num_elements)                     UNITY_TEST_ASSERT_UINT_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_HEX_ARRAY_WITHIN(delta, expected, actual, num_elements)                        UNITY_TEST_ASSERT_HEX32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_HEX8_ARRAY_WITHIN(delta, expected, actual, num_elements)                       UNITY_TEST_ASSERT_HEX8_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_HEX16_ARRAY_WITHIN(delta, expected, actual, num_elements)                      UNITY_TEST_ASSERT_HEX16_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_HEX32_ARRAY_WITHIN(delta, expected, actual, num_elements)                      UNITY_TEST_ASSERT_HEX32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_HEX64_ARRAY_WITHIN(delta, expected, actual, num_elements)                      UNITY_TEST_ASSERT_HEX64_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_CHAR_ARRAY_WITHIN(delta, expected, actual, num_elements)                       UNITY_TEST_ASSERT_CHAR_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Structs and Strings */
 | 
			
		||||
#define TEST_ASSERT_EQUAL_PTR(expected, actual)                                                    UNITY_TEST_ASSERT_EQUAL_PTR((expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_STRING(expected, actual)                                                 UNITY_TEST_ASSERT_EQUAL_STRING((expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_STRING_LEN(expected, actual, len)                                        UNITY_TEST_ASSERT_EQUAL_STRING_LEN((expected), (actual), (len), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_MEMORY(expected, actual, len)                                            UNITY_TEST_ASSERT_EQUAL_MEMORY((expected), (actual), (len), __LINE__, NULL)
 | 
			
		||||
 | 
			
		||||
/* Arrays */
 | 
			
		||||
#define TEST_ASSERT_EQUAL_INT_ARRAY(expected, actual, num_elements)                                UNITY_TEST_ASSERT_EQUAL_INT_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_INT8_ARRAY(expected, actual, num_elements)                               UNITY_TEST_ASSERT_EQUAL_INT8_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_INT16_ARRAY(expected, actual, num_elements)                              UNITY_TEST_ASSERT_EQUAL_INT16_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_INT32_ARRAY(expected, actual, num_elements)                              UNITY_TEST_ASSERT_EQUAL_INT32_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_INT64_ARRAY(expected, actual, num_elements)                              UNITY_TEST_ASSERT_EQUAL_INT64_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_UINT_ARRAY(expected, actual, num_elements)                               UNITY_TEST_ASSERT_EQUAL_UINT_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_UINT8_ARRAY(expected, actual, num_elements)                              UNITY_TEST_ASSERT_EQUAL_UINT8_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_UINT16_ARRAY(expected, actual, num_elements)                             UNITY_TEST_ASSERT_EQUAL_UINT16_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_UINT32_ARRAY(expected, actual, num_elements)                             UNITY_TEST_ASSERT_EQUAL_UINT32_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_UINT64_ARRAY(expected, actual, num_elements)                             UNITY_TEST_ASSERT_EQUAL_UINT64_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_size_t_ARRAY(expected, actual, num_elements)                             UNITY_TEST_ASSERT_EQUAL_UINT_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_HEX_ARRAY(expected, actual, num_elements)                                UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_HEX8_ARRAY(expected, actual, num_elements)                               UNITY_TEST_ASSERT_EQUAL_HEX8_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_HEX16_ARRAY(expected, actual, num_elements)                              UNITY_TEST_ASSERT_EQUAL_HEX16_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_HEX32_ARRAY(expected, actual, num_elements)                              UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_HEX64_ARRAY(expected, actual, num_elements)                              UNITY_TEST_ASSERT_EQUAL_HEX64_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_PTR_ARRAY(expected, actual, num_elements)                                UNITY_TEST_ASSERT_EQUAL_PTR_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_STRING_ARRAY(expected, actual, num_elements)                             UNITY_TEST_ASSERT_EQUAL_STRING_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_MEMORY_ARRAY(expected, actual, len, num_elements)                        UNITY_TEST_ASSERT_EQUAL_MEMORY_ARRAY((expected), (actual), (len), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_CHAR_ARRAY(expected, actual, num_elements)                               UNITY_TEST_ASSERT_EQUAL_CHAR_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
 | 
			
		||||
/* Arrays Compared To Single Value */
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_INT(expected, actual, num_elements)                                 UNITY_TEST_ASSERT_EACH_EQUAL_INT((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_INT8(expected, actual, num_elements)                                UNITY_TEST_ASSERT_EACH_EQUAL_INT8((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_INT16(expected, actual, num_elements)                               UNITY_TEST_ASSERT_EACH_EQUAL_INT16((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_INT32(expected, actual, num_elements)                               UNITY_TEST_ASSERT_EACH_EQUAL_INT32((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_INT64(expected, actual, num_elements)                               UNITY_TEST_ASSERT_EACH_EQUAL_INT64((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_UINT(expected, actual, num_elements)                                UNITY_TEST_ASSERT_EACH_EQUAL_UINT((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_UINT8(expected, actual, num_elements)                               UNITY_TEST_ASSERT_EACH_EQUAL_UINT8((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_UINT16(expected, actual, num_elements)                              UNITY_TEST_ASSERT_EACH_EQUAL_UINT16((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_UINT32(expected, actual, num_elements)                              UNITY_TEST_ASSERT_EACH_EQUAL_UINT32((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_UINT64(expected, actual, num_elements)                              UNITY_TEST_ASSERT_EACH_EQUAL_UINT64((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_size_t(expected, actual, num_elements)                              UNITY_TEST_ASSERT_EACH_EQUAL_UINT((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_HEX(expected, actual, num_elements)                                 UNITY_TEST_ASSERT_EACH_EQUAL_HEX32((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_HEX8(expected, actual, num_elements)                                UNITY_TEST_ASSERT_EACH_EQUAL_HEX8((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_HEX16(expected, actual, num_elements)                               UNITY_TEST_ASSERT_EACH_EQUAL_HEX16((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_HEX32(expected, actual, num_elements)                               UNITY_TEST_ASSERT_EACH_EQUAL_HEX32((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_HEX64(expected, actual, num_elements)                               UNITY_TEST_ASSERT_EACH_EQUAL_HEX64((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_PTR(expected, actual, num_elements)                                 UNITY_TEST_ASSERT_EACH_EQUAL_PTR((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_STRING(expected, actual, num_elements)                              UNITY_TEST_ASSERT_EACH_EQUAL_STRING((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_MEMORY(expected, actual, len, num_elements)                         UNITY_TEST_ASSERT_EACH_EQUAL_MEMORY((expected), (actual), (len), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_CHAR(expected, actual, num_elements)                                UNITY_TEST_ASSERT_EACH_EQUAL_CHAR((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
 | 
			
		||||
/* Floating Point (If Enabled) */
 | 
			
		||||
#define TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual)                                          UNITY_TEST_ASSERT_FLOAT_WITHIN((delta), (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_FLOAT(expected, actual)                                                  UNITY_TEST_ASSERT_EQUAL_FLOAT((expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_FLOAT_ARRAY(expected, actual, num_elements)                              UNITY_TEST_ASSERT_EQUAL_FLOAT_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_FLOAT(expected, actual, num_elements)                               UNITY_TEST_ASSERT_EACH_EQUAL_FLOAT((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_FLOAT_IS_INF(actual)                                                           UNITY_TEST_ASSERT_FLOAT_IS_INF((actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_FLOAT_IS_NEG_INF(actual)                                                       UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF((actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_FLOAT_IS_NAN(actual)                                                           UNITY_TEST_ASSERT_FLOAT_IS_NAN((actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_FLOAT_IS_DETERMINATE(actual)                                                   UNITY_TEST_ASSERT_FLOAT_IS_DETERMINATE((actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_FLOAT_IS_NOT_INF(actual)                                                       UNITY_TEST_ASSERT_FLOAT_IS_NOT_INF((actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_FLOAT_IS_NOT_NEG_INF(actual)                                                   UNITY_TEST_ASSERT_FLOAT_IS_NOT_NEG_INF((actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_FLOAT_IS_NOT_NAN(actual)                                                       UNITY_TEST_ASSERT_FLOAT_IS_NOT_NAN((actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(actual)                                               UNITY_TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE((actual), __LINE__, NULL)
 | 
			
		||||
 | 
			
		||||
/* Double (If Enabled) */
 | 
			
		||||
#define TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual)                                         UNITY_TEST_ASSERT_DOUBLE_WITHIN((delta), (expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_DOUBLE(expected, actual)                                                 UNITY_TEST_ASSERT_EQUAL_DOUBLE((expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EQUAL_DOUBLE_ARRAY(expected, actual, num_elements)                             UNITY_TEST_ASSERT_EQUAL_DOUBLE_ARRAY((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_DOUBLE(expected, actual, num_elements)                              UNITY_TEST_ASSERT_EACH_EQUAL_DOUBLE((expected), (actual), (num_elements), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_DOUBLE_IS_INF(actual)                                                          UNITY_TEST_ASSERT_DOUBLE_IS_INF((actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_DOUBLE_IS_NEG_INF(actual)                                                      UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF((actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_DOUBLE_IS_NAN(actual)                                                          UNITY_TEST_ASSERT_DOUBLE_IS_NAN((actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_DOUBLE_IS_DETERMINATE(actual)                                                  UNITY_TEST_ASSERT_DOUBLE_IS_DETERMINATE((actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_DOUBLE_IS_NOT_INF(actual)                                                      UNITY_TEST_ASSERT_DOUBLE_IS_NOT_INF((actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF(actual)                                                  UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF((actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_DOUBLE_IS_NOT_NAN(actual)                                                      UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NAN((actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE(actual)                                              UNITY_TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE((actual), __LINE__, NULL)
 | 
			
		||||
 | 
			
		||||
/* Shorthand */
 | 
			
		||||
#ifdef UNITY_SHORTHAND_AS_OLD
 | 
			
		||||
#define TEST_ASSERT_EQUAL(expected, actual)                                                        UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL(expected, actual)                                                    UNITY_TEST_ASSERT(((expected) != (actual)), __LINE__, " Expected Not-Equal")
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef UNITY_SHORTHAND_AS_INT
 | 
			
		||||
#define TEST_ASSERT_EQUAL(expected, actual)                                                        UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL(expected, actual)                                                    UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand)
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef UNITY_SHORTHAND_AS_MEM
 | 
			
		||||
#define TEST_ASSERT_EQUAL(expected, actual)                                                        UNITY_TEST_ASSERT_EQUAL_MEMORY((&expected), (&actual), sizeof(expected), __LINE__, NULL)
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL(expected, actual)                                                    UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand)
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef UNITY_SHORTHAND_AS_RAW
 | 
			
		||||
#define TEST_ASSERT_EQUAL(expected, actual)                                                        UNITY_TEST_ASSERT(((expected) == (actual)), __LINE__, " Expected Equal")
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL(expected, actual)                                                    UNITY_TEST_ASSERT(((expected) != (actual)), __LINE__, " Expected Not-Equal")
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef UNITY_SHORTHAND_AS_NONE
 | 
			
		||||
#define TEST_ASSERT_EQUAL(expected, actual)                                                        UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand)
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL(expected, actual)                                                    UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*-------------------------------------------------------
 | 
			
		||||
 * Test Asserts (with additional messages)
 | 
			
		||||
 *-------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
/* Boolean */
 | 
			
		||||
#define TEST_ASSERT_MESSAGE(condition, message)                                                    UNITY_TEST_ASSERT(       (condition), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_TRUE_MESSAGE(condition, message)                                               UNITY_TEST_ASSERT(       (condition), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_UNLESS_MESSAGE(condition, message)                                             UNITY_TEST_ASSERT(      !(condition), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_FALSE_MESSAGE(condition, message)                                              UNITY_TEST_ASSERT(      !(condition), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_NULL_MESSAGE(pointer, message)                                                 UNITY_TEST_ASSERT_NULL(    (pointer), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_NOT_NULL_MESSAGE(pointer, message)                                             UNITY_TEST_ASSERT_NOT_NULL((pointer), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EMPTY_MESSAGE(pointer, message)                                                UNITY_TEST_ASSERT_EMPTY(    (pointer), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_NOT_EMPTY_MESSAGE(pointer, message)                                            UNITY_TEST_ASSERT_NOT_EMPTY((pointer), __LINE__, (message))
 | 
			
		||||
 | 
			
		||||
/* Integers (of all sizes) */
 | 
			
		||||
#define TEST_ASSERT_EQUAL_INT_MESSAGE(expected, actual, message)                                   UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_INT8_MESSAGE(expected, actual, message)                                  UNITY_TEST_ASSERT_EQUAL_INT8((expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_INT16_MESSAGE(expected, actual, message)                                 UNITY_TEST_ASSERT_EQUAL_INT16((expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_INT32_MESSAGE(expected, actual, message)                                 UNITY_TEST_ASSERT_EQUAL_INT32((expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_INT64_MESSAGE(expected, actual, message)                                 UNITY_TEST_ASSERT_EQUAL_INT64((expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_UINT_MESSAGE(expected, actual, message)                                  UNITY_TEST_ASSERT_EQUAL_UINT( (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_UINT8_MESSAGE(expected, actual, message)                                 UNITY_TEST_ASSERT_EQUAL_UINT8( (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_UINT16_MESSAGE(expected, actual, message)                                UNITY_TEST_ASSERT_EQUAL_UINT16( (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_UINT32_MESSAGE(expected, actual, message)                                UNITY_TEST_ASSERT_EQUAL_UINT32( (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_UINT64_MESSAGE(expected, actual, message)                                UNITY_TEST_ASSERT_EQUAL_UINT64( (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_size_t_MESSAGE(expected, actual, message)                                UNITY_TEST_ASSERT_EQUAL_UINT( (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_HEX_MESSAGE(expected, actual, message)                                   UNITY_TEST_ASSERT_EQUAL_HEX32((expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_HEX8_MESSAGE(expected, actual, message)                                  UNITY_TEST_ASSERT_EQUAL_HEX8( (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_HEX16_MESSAGE(expected, actual, message)                                 UNITY_TEST_ASSERT_EQUAL_HEX16((expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_HEX32_MESSAGE(expected, actual, message)                                 UNITY_TEST_ASSERT_EQUAL_HEX32((expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_HEX64_MESSAGE(expected, actual, message)                                 UNITY_TEST_ASSERT_EQUAL_HEX64((expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_BITS_MESSAGE(mask, expected, actual, message)                                  UNITY_TEST_ASSERT_BITS((mask), (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_BITS_HIGH_MESSAGE(mask, actual, message)                                       UNITY_TEST_ASSERT_BITS((mask), (UNITY_UINT32)(-1), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_BITS_LOW_MESSAGE(mask, actual, message)                                        UNITY_TEST_ASSERT_BITS((mask), (UNITY_UINT32)(0), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_BIT_HIGH_MESSAGE(bit, actual, message)                                         UNITY_TEST_ASSERT_BITS(((UNITY_UINT32)1 << (bit)), (UNITY_UINT32)(-1), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_BIT_LOW_MESSAGE(bit, actual, message)                                          UNITY_TEST_ASSERT_BITS(((UNITY_UINT32)1 << (bit)), (UNITY_UINT32)(0), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_CHAR_MESSAGE(expected, actual, message)                                  UNITY_TEST_ASSERT_EQUAL_CHAR((expected), (actual), __LINE__, (message))
 | 
			
		||||
 | 
			
		||||
/* Integer Not Equal To (of all sizes) */
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_INT_MESSAGE(threshold, actual, message)                              UNITY_TEST_ASSERT_NOT_EQUAL_INT((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_INT8_MESSAGE(threshold, actual, message)                             UNITY_TEST_ASSERT_NOT_EQUAL_INT8((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_INT16_MESSAGE(threshold, actual, message)                            UNITY_TEST_ASSERT_NOT_EQUAL_INT16((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_INT32_MESSAGE(threshold, actual, message)                            UNITY_TEST_ASSERT_NOT_EQUAL_INT32((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_INT64_MESSAGE(threshold, actual, message)                            UNITY_TEST_ASSERT_NOT_EQUAL_INT64((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_UINT_MESSAGE(threshold, actual, message)                             UNITY_TEST_ASSERT_NOT_EQUAL_UINT((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_UINT8_MESSAGE(threshold, actual, message)                            UNITY_TEST_ASSERT_NOT_EQUAL_UINT8((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_UINT16_MESSAGE(threshold, actual, message)                           UNITY_TEST_ASSERT_NOT_EQUAL_UINT16((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_UINT32_MESSAGE(threshold, actual, message)                           UNITY_TEST_ASSERT_NOT_EQUAL_UINT32((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_UINT64_MESSAGE(threshold, actual, message)                           UNITY_TEST_ASSERT_NOT_EQUAL_UINT64((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_size_t_MESSAGE(threshold, actual, message)                           UNITY_TEST_ASSERT_NOT_EQUAL_UINT((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_HEX8_MESSAGE(threshold, actual, message)                             UNITY_TEST_ASSERT_NOT_EQUAL_HEX8((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_HEX16_MESSAGE(threshold, actual, message)                            UNITY_TEST_ASSERT_NOT_EQUAL_HEX16((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_HEX32_MESSAGE(threshold, actual, message)                            UNITY_TEST_ASSERT_NOT_EQUAL_HEX32((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_HEX64_MESSAGE(threshold, actual, message)                            UNITY_TEST_ASSERT_NOT_EQUAL_HEX64((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_CHAR_MESSAGE(threshold, actual, message)                             UNITY_TEST_ASSERT_NOT_EQUAL_CHAR((threshold), (actual), __LINE__, (message))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Integer Greater Than/ Less Than (of all sizes) */
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_MESSAGE(threshold, actual, message)                               UNITY_TEST_ASSERT_GREATER_THAN_INT((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_INT_MESSAGE(threshold, actual, message)                           UNITY_TEST_ASSERT_GREATER_THAN_INT((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_INT8_MESSAGE(threshold, actual, message)                          UNITY_TEST_ASSERT_GREATER_THAN_INT8((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_INT16_MESSAGE(threshold, actual, message)                         UNITY_TEST_ASSERT_GREATER_THAN_INT16((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_INT32_MESSAGE(threshold, actual, message)                         UNITY_TEST_ASSERT_GREATER_THAN_INT32((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_INT64_MESSAGE(threshold, actual, message)                         UNITY_TEST_ASSERT_GREATER_THAN_INT64((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_UINT_MESSAGE(threshold, actual, message)                          UNITY_TEST_ASSERT_GREATER_THAN_UINT((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_UINT8_MESSAGE(threshold, actual, message)                         UNITY_TEST_ASSERT_GREATER_THAN_UINT8((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_UINT16_MESSAGE(threshold, actual, message)                        UNITY_TEST_ASSERT_GREATER_THAN_UINT16((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_UINT32_MESSAGE(threshold, actual, message)                        UNITY_TEST_ASSERT_GREATER_THAN_UINT32((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_UINT64_MESSAGE(threshold, actual, message)                        UNITY_TEST_ASSERT_GREATER_THAN_UINT64((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_size_t_MESSAGE(threshold, actual, message)                        UNITY_TEST_ASSERT_GREATER_THAN_UINT((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_HEX8_MESSAGE(threshold, actual, message)                          UNITY_TEST_ASSERT_GREATER_THAN_HEX8((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_HEX16_MESSAGE(threshold, actual, message)                         UNITY_TEST_ASSERT_GREATER_THAN_HEX16((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_HEX32_MESSAGE(threshold, actual, message)                         UNITY_TEST_ASSERT_GREATER_THAN_HEX32((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_HEX64_MESSAGE(threshold, actual, message)                         UNITY_TEST_ASSERT_GREATER_THAN_HEX64((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_THAN_CHAR_MESSAGE(threshold, actual, message)                          UNITY_TEST_ASSERT_GREATER_THAN_CHAR((threshold), (actual), __LINE__, (message))
 | 
			
		||||
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_MESSAGE(threshold, actual, message)                                  UNITY_TEST_ASSERT_SMALLER_THAN_INT((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_INT_MESSAGE(threshold, actual, message)                              UNITY_TEST_ASSERT_SMALLER_THAN_INT((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_INT8_MESSAGE(threshold, actual, message)                             UNITY_TEST_ASSERT_SMALLER_THAN_INT8((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_INT16_MESSAGE(threshold, actual, message)                            UNITY_TEST_ASSERT_SMALLER_THAN_INT16((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_INT32_MESSAGE(threshold, actual, message)                            UNITY_TEST_ASSERT_SMALLER_THAN_INT32((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_INT64_MESSAGE(threshold, actual, message)                            UNITY_TEST_ASSERT_SMALLER_THAN_INT64((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_UINT_MESSAGE(threshold, actual, message)                             UNITY_TEST_ASSERT_SMALLER_THAN_UINT((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_UINT8_MESSAGE(threshold, actual, message)                            UNITY_TEST_ASSERT_SMALLER_THAN_UINT8((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_UINT16_MESSAGE(threshold, actual, message)                           UNITY_TEST_ASSERT_SMALLER_THAN_UINT16((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_UINT32_MESSAGE(threshold, actual, message)                           UNITY_TEST_ASSERT_SMALLER_THAN_UINT32((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_UINT64_MESSAGE(threshold, actual, message)                           UNITY_TEST_ASSERT_SMALLER_THAN_UINT64((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_size_t_MESSAGE(threshold, actual, message)                           UNITY_TEST_ASSERT_SMALLER_THAN_UINT((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_HEX8_MESSAGE(threshold, actual, message)                             UNITY_TEST_ASSERT_SMALLER_THAN_HEX8((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_HEX16_MESSAGE(threshold, actual, message)                            UNITY_TEST_ASSERT_SMALLER_THAN_HEX16((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_HEX32_MESSAGE(threshold, actual, message)                            UNITY_TEST_ASSERT_SMALLER_THAN_HEX32((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_HEX64_MESSAGE(threshold, actual, message)                            UNITY_TEST_ASSERT_SMALLER_THAN_HEX64((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_THAN_CHAR_MESSAGE(threshold, actual, message)                             UNITY_TEST_ASSERT_SMALLER_THAN_CHAR((threshold), (actual), __LINE__, (message))
 | 
			
		||||
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_MESSAGE(threshold, actual, message)                           UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_INT_MESSAGE(threshold, actual, message)                       UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_INT8_MESSAGE(threshold, actual, message)                      UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT8((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_INT16_MESSAGE(threshold, actual, message)                     UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT16((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_INT32_MESSAGE(threshold, actual, message)                     UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT32((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_INT64_MESSAGE(threshold, actual, message)                     UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT64((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_UINT_MESSAGE(threshold, actual, message)                      UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_UINT8_MESSAGE(threshold, actual, message)                     UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT8((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_UINT16_MESSAGE(threshold, actual, message)                    UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT16((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_UINT32_MESSAGE(threshold, actual, message)                    UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT32((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_UINT64_MESSAGE(threshold, actual, message)                    UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT64((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_size_t_MESSAGE(threshold, actual, message)                    UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_HEX8_MESSAGE(threshold, actual, message)                      UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX8((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_HEX16_MESSAGE(threshold, actual, message)                     UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX16((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_HEX32_MESSAGE(threshold, actual, message)                     UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX32((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_HEX64_MESSAGE(threshold, actual, message)                     UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX64((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_GREATER_OR_EQUAL_CHAR_MESSAGE(threshold, actual, message)                      UNITY_TEST_ASSERT_GREATER_OR_EQUAL_CHAR((threshold), (actual), __LINE__, (message))
 | 
			
		||||
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_MESSAGE(threshold, actual, message)                              UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_INT_MESSAGE(threshold, actual, message)                          UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_INT8_MESSAGE(threshold, actual, message)                         UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT8((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_INT16_MESSAGE(threshold, actual, message)                        UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT16((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_INT32_MESSAGE(threshold, actual, message)                        UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT32((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_INT64_MESSAGE(threshold, actual, message)                        UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT64((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_UINT_MESSAGE(threshold, actual, message)                         UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_UINT8_MESSAGE(threshold, actual, message)                        UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT8((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_UINT16_MESSAGE(threshold, actual, message)                       UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT16((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_UINT32_MESSAGE(threshold, actual, message)                       UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT32((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_UINT64_MESSAGE(threshold, actual, message)                       UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT64((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_size_t_MESSAGE(threshold, actual, message)                       UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_HEX8_MESSAGE(threshold, actual, message)                         UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX8((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_HEX16_MESSAGE(threshold, actual, message)                        UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX16((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_HEX32_MESSAGE(threshold, actual, message)                        UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX32((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_HEX64_MESSAGE(threshold, actual, message)                        UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX64((threshold), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_LESS_OR_EQUAL_CHAR_MESSAGE(threshold, actual, message)                         UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_CHAR((threshold), (actual), __LINE__, (message))
 | 
			
		||||
 | 
			
		||||
/* Integer Ranges (of all sizes) */
 | 
			
		||||
#define TEST_ASSERT_INT_WITHIN_MESSAGE(delta, expected, actual, message)                           UNITY_TEST_ASSERT_INT_WITHIN((delta), (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_INT8_WITHIN_MESSAGE(delta, expected, actual, message)                          UNITY_TEST_ASSERT_INT8_WITHIN((delta), (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_INT16_WITHIN_MESSAGE(delta, expected, actual, message)                         UNITY_TEST_ASSERT_INT16_WITHIN((delta), (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_INT32_WITHIN_MESSAGE(delta, expected, actual, message)                         UNITY_TEST_ASSERT_INT32_WITHIN((delta), (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_INT64_WITHIN_MESSAGE(delta, expected, actual, message)                         UNITY_TEST_ASSERT_INT64_WITHIN((delta), (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_UINT_WITHIN_MESSAGE(delta, expected, actual, message)                          UNITY_TEST_ASSERT_UINT_WITHIN((delta), (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_UINT8_WITHIN_MESSAGE(delta, expected, actual, message)                         UNITY_TEST_ASSERT_UINT8_WITHIN((delta), (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_UINT16_WITHIN_MESSAGE(delta, expected, actual, message)                        UNITY_TEST_ASSERT_UINT16_WITHIN((delta), (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_UINT32_WITHIN_MESSAGE(delta, expected, actual, message)                        UNITY_TEST_ASSERT_UINT32_WITHIN((delta), (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_UINT64_WITHIN_MESSAGE(delta, expected, actual, message)                        UNITY_TEST_ASSERT_UINT64_WITHIN((delta), (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_size_t_WITHIN_MESSAGE(delta, expected, actual, message)                        UNITY_TEST_ASSERT_UINT_WITHIN((delta), (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_HEX_WITHIN_MESSAGE(delta, expected, actual, message)                           UNITY_TEST_ASSERT_HEX32_WITHIN((delta), (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_HEX8_WITHIN_MESSAGE(delta, expected, actual, message)                          UNITY_TEST_ASSERT_HEX8_WITHIN((delta), (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_HEX16_WITHIN_MESSAGE(delta, expected, actual, message)                         UNITY_TEST_ASSERT_HEX16_WITHIN((delta), (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_HEX32_WITHIN_MESSAGE(delta, expected, actual, message)                         UNITY_TEST_ASSERT_HEX32_WITHIN((delta), (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_HEX64_WITHIN_MESSAGE(delta, expected, actual, message)                         UNITY_TEST_ASSERT_HEX64_WITHIN((delta), (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_CHAR_WITHIN_MESSAGE(delta, expected, actual, message)                          UNITY_TEST_ASSERT_CHAR_WITHIN((delta), (expected), (actual), __LINE__, (message))
 | 
			
		||||
 | 
			
		||||
/* Integer Array Ranges (of all sizes) */
 | 
			
		||||
#define TEST_ASSERT_INT_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message)       UNITY_TEST_ASSERT_INT_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_INT8_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message)      UNITY_TEST_ASSERT_INT8_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_INT16_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message)     UNITY_TEST_ASSERT_INT16_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_INT32_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message)     UNITY_TEST_ASSERT_INT32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_INT64_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message)     UNITY_TEST_ASSERT_INT64_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_UINT_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message)      UNITY_TEST_ASSERT_UINT_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_UINT8_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message)     UNITY_TEST_ASSERT_UINT8_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_UINT16_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message)    UNITY_TEST_ASSERT_UINT16_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_UINT32_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message)    UNITY_TEST_ASSERT_UINT32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_UINT64_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message)    UNITY_TEST_ASSERT_UINT64_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_size_t_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message)    UNITY_TEST_ASSERT_UINT_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_HEX_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message)       UNITY_TEST_ASSERT_HEX32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_HEX8_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message)      UNITY_TEST_ASSERT_HEX8_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_HEX16_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message)     UNITY_TEST_ASSERT_HEX16_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_HEX32_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message)     UNITY_TEST_ASSERT_HEX32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_HEX64_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message)     UNITY_TEST_ASSERT_HEX64_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_CHAR_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message)      UNITY_TEST_ASSERT_CHAR_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Structs and Strings */
 | 
			
		||||
#define TEST_ASSERT_EQUAL_PTR_MESSAGE(expected, actual, message)                                   UNITY_TEST_ASSERT_EQUAL_PTR((expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_STRING_MESSAGE(expected, actual, message)                                UNITY_TEST_ASSERT_EQUAL_STRING((expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_STRING_LEN_MESSAGE(expected, actual, len, message)                       UNITY_TEST_ASSERT_EQUAL_STRING_LEN((expected), (actual), (len), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_MEMORY_MESSAGE(expected, actual, len, message)                           UNITY_TEST_ASSERT_EQUAL_MEMORY((expected), (actual), (len), __LINE__, (message))
 | 
			
		||||
 | 
			
		||||
/* Arrays */
 | 
			
		||||
#define TEST_ASSERT_EQUAL_INT_ARRAY_MESSAGE(expected, actual, num_elements, message)               UNITY_TEST_ASSERT_EQUAL_INT_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_INT8_ARRAY_MESSAGE(expected, actual, num_elements, message)              UNITY_TEST_ASSERT_EQUAL_INT8_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_INT16_ARRAY_MESSAGE(expected, actual, num_elements, message)             UNITY_TEST_ASSERT_EQUAL_INT16_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_INT32_ARRAY_MESSAGE(expected, actual, num_elements, message)             UNITY_TEST_ASSERT_EQUAL_INT32_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_INT64_ARRAY_MESSAGE(expected, actual, num_elements, message)             UNITY_TEST_ASSERT_EQUAL_INT64_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_UINT_ARRAY_MESSAGE(expected, actual, num_elements, message)              UNITY_TEST_ASSERT_EQUAL_UINT_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_UINT8_ARRAY_MESSAGE(expected, actual, num_elements, message)             UNITY_TEST_ASSERT_EQUAL_UINT8_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_UINT16_ARRAY_MESSAGE(expected, actual, num_elements, message)            UNITY_TEST_ASSERT_EQUAL_UINT16_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_UINT32_ARRAY_MESSAGE(expected, actual, num_elements, message)            UNITY_TEST_ASSERT_EQUAL_UINT32_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_UINT64_ARRAY_MESSAGE(expected, actual, num_elements, message)            UNITY_TEST_ASSERT_EQUAL_UINT64_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_size_t_ARRAY_MESSAGE(expected, actual, num_elements, message)            UNITY_TEST_ASSERT_EQUAL_UINT_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_HEX_ARRAY_MESSAGE(expected, actual, num_elements, message)               UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_HEX8_ARRAY_MESSAGE(expected, actual, num_elements, message)              UNITY_TEST_ASSERT_EQUAL_HEX8_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_HEX16_ARRAY_MESSAGE(expected, actual, num_elements, message)             UNITY_TEST_ASSERT_EQUAL_HEX16_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_HEX32_ARRAY_MESSAGE(expected, actual, num_elements, message)             UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_HEX64_ARRAY_MESSAGE(expected, actual, num_elements, message)             UNITY_TEST_ASSERT_EQUAL_HEX64_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_PTR_ARRAY_MESSAGE(expected, actual, num_elements, message)               UNITY_TEST_ASSERT_EQUAL_PTR_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_STRING_ARRAY_MESSAGE(expected, actual, num_elements, message)            UNITY_TEST_ASSERT_EQUAL_STRING_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_MEMORY_ARRAY_MESSAGE(expected, actual, len, num_elements, message)       UNITY_TEST_ASSERT_EQUAL_MEMORY_ARRAY((expected), (actual), (len), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_CHAR_ARRAY_MESSAGE(expected, actual, num_elements, message)              UNITY_TEST_ASSERT_EQUAL_CHAR_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
 | 
			
		||||
/* Arrays Compared To Single Value*/
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_INT_MESSAGE(expected, actual, num_elements, message)                UNITY_TEST_ASSERT_EACH_EQUAL_INT((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_INT8_MESSAGE(expected, actual, num_elements, message)               UNITY_TEST_ASSERT_EACH_EQUAL_INT8((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_INT16_MESSAGE(expected, actual, num_elements, message)              UNITY_TEST_ASSERT_EACH_EQUAL_INT16((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_INT32_MESSAGE(expected, actual, num_elements, message)              UNITY_TEST_ASSERT_EACH_EQUAL_INT32((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_INT64_MESSAGE(expected, actual, num_elements, message)              UNITY_TEST_ASSERT_EACH_EQUAL_INT64((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_UINT_MESSAGE(expected, actual, num_elements, message)               UNITY_TEST_ASSERT_EACH_EQUAL_UINT((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_UINT8_MESSAGE(expected, actual, num_elements, message)              UNITY_TEST_ASSERT_EACH_EQUAL_UINT8((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_UINT16_MESSAGE(expected, actual, num_elements, message)             UNITY_TEST_ASSERT_EACH_EQUAL_UINT16((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_UINT32_MESSAGE(expected, actual, num_elements, message)             UNITY_TEST_ASSERT_EACH_EQUAL_UINT32((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_UINT64_MESSAGE(expected, actual, num_elements, message)             UNITY_TEST_ASSERT_EACH_EQUAL_UINT64((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_size_t_MESSAGE(expected, actual, num_elements, message)             UNITY_TEST_ASSERT_EACH_EQUAL_UINT((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_HEX_MESSAGE(expected, actual, num_elements, message)                UNITY_TEST_ASSERT_EACH_EQUAL_HEX32((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_HEX8_MESSAGE(expected, actual, num_elements, message)               UNITY_TEST_ASSERT_EACH_EQUAL_HEX8((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_HEX16_MESSAGE(expected, actual, num_elements, message)              UNITY_TEST_ASSERT_EACH_EQUAL_HEX16((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_HEX32_MESSAGE(expected, actual, num_elements, message)              UNITY_TEST_ASSERT_EACH_EQUAL_HEX32((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_HEX64_MESSAGE(expected, actual, num_elements, message)              UNITY_TEST_ASSERT_EACH_EQUAL_HEX64((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_PTR_MESSAGE(expected, actual, num_elements, message)                UNITY_TEST_ASSERT_EACH_EQUAL_PTR((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_STRING_MESSAGE(expected, actual, num_elements, message)             UNITY_TEST_ASSERT_EACH_EQUAL_STRING((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_MEMORY_MESSAGE(expected, actual, len, num_elements, message)        UNITY_TEST_ASSERT_EACH_EQUAL_MEMORY((expected), (actual), (len), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_CHAR_MESSAGE(expected, actual, num_elements, message)               UNITY_TEST_ASSERT_EACH_EQUAL_CHAR((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
 | 
			
		||||
/* Floating Point (If Enabled) */
 | 
			
		||||
#define TEST_ASSERT_FLOAT_WITHIN_MESSAGE(delta, expected, actual, message)                         UNITY_TEST_ASSERT_FLOAT_WITHIN((delta), (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_FLOAT_MESSAGE(expected, actual, message)                                 UNITY_TEST_ASSERT_EQUAL_FLOAT((expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_FLOAT_ARRAY_MESSAGE(expected, actual, num_elements, message)             UNITY_TEST_ASSERT_EQUAL_FLOAT_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_FLOAT_MESSAGE(expected, actual, num_elements, message)              UNITY_TEST_ASSERT_EACH_EQUAL_FLOAT((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_FLOAT_IS_INF_MESSAGE(actual, message)                                          UNITY_TEST_ASSERT_FLOAT_IS_INF((actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_FLOAT_IS_NEG_INF_MESSAGE(actual, message)                                      UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF((actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_FLOAT_IS_NAN_MESSAGE(actual, message)                                          UNITY_TEST_ASSERT_FLOAT_IS_NAN((actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_FLOAT_IS_DETERMINATE_MESSAGE(actual, message)                                  UNITY_TEST_ASSERT_FLOAT_IS_DETERMINATE((actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_FLOAT_IS_NOT_INF_MESSAGE(actual, message)                                      UNITY_TEST_ASSERT_FLOAT_IS_NOT_INF((actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_FLOAT_IS_NOT_NEG_INF_MESSAGE(actual, message)                                  UNITY_TEST_ASSERT_FLOAT_IS_NOT_NEG_INF((actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_FLOAT_IS_NOT_NAN_MESSAGE(actual, message)                                      UNITY_TEST_ASSERT_FLOAT_IS_NOT_NAN((actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE_MESSAGE(actual, message)                              UNITY_TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE((actual), __LINE__, (message))
 | 
			
		||||
 | 
			
		||||
/* Double (If Enabled) */
 | 
			
		||||
#define TEST_ASSERT_DOUBLE_WITHIN_MESSAGE(delta, expected, actual, message)                        UNITY_TEST_ASSERT_DOUBLE_WITHIN((delta), (expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_DOUBLE_MESSAGE(expected, actual, message)                                UNITY_TEST_ASSERT_EQUAL_DOUBLE((expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EQUAL_DOUBLE_ARRAY_MESSAGE(expected, actual, num_elements, message)            UNITY_TEST_ASSERT_EQUAL_DOUBLE_ARRAY((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_EACH_EQUAL_DOUBLE_MESSAGE(expected, actual, num_elements, message)             UNITY_TEST_ASSERT_EACH_EQUAL_DOUBLE((expected), (actual), (num_elements), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_DOUBLE_IS_INF_MESSAGE(actual, message)                                         UNITY_TEST_ASSERT_DOUBLE_IS_INF((actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_DOUBLE_IS_NEG_INF_MESSAGE(actual, message)                                     UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF((actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_DOUBLE_IS_NAN_MESSAGE(actual, message)                                         UNITY_TEST_ASSERT_DOUBLE_IS_NAN((actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_DOUBLE_IS_DETERMINATE_MESSAGE(actual, message)                                 UNITY_TEST_ASSERT_DOUBLE_IS_DETERMINATE((actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_DOUBLE_IS_NOT_INF_MESSAGE(actual, message)                                     UNITY_TEST_ASSERT_DOUBLE_IS_NOT_INF((actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF_MESSAGE(actual, message)                                 UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF((actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_DOUBLE_IS_NOT_NAN_MESSAGE(actual, message)                                     UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NAN((actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE_MESSAGE(actual, message)                             UNITY_TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE((actual), __LINE__, (message))
 | 
			
		||||
 | 
			
		||||
/* Shorthand */
 | 
			
		||||
#ifdef UNITY_SHORTHAND_AS_OLD
 | 
			
		||||
#define TEST_ASSERT_EQUAL_MESSAGE(expected, actual, message)                                       UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, (message))
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_MESSAGE(expected, actual, message)                                   UNITY_TEST_ASSERT(((expected) != (actual)), __LINE__, (message))
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef UNITY_SHORTHAND_AS_INT
 | 
			
		||||
#define TEST_ASSERT_EQUAL_MESSAGE(expected, actual, message)                                       UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, message)
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_MESSAGE(expected, actual, message)                                   UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand)
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef  UNITY_SHORTHAND_AS_MEM
 | 
			
		||||
#define TEST_ASSERT_EQUAL_MESSAGE(expected, actual, message)                                       UNITY_TEST_ASSERT_EQUAL_MEMORY((&expected), (&actual), sizeof(expected), __LINE__, message)
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_MESSAGE(expected, actual, message)                                   UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand)
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef  UNITY_SHORTHAND_AS_RAW
 | 
			
		||||
#define TEST_ASSERT_EQUAL_MESSAGE(expected, actual, message)                                       UNITY_TEST_ASSERT(((expected) == (actual)), __LINE__, message)
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_MESSAGE(expected, actual, message)                                   UNITY_TEST_ASSERT(((expected) != (actual)), __LINE__, message)
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef UNITY_SHORTHAND_AS_NONE
 | 
			
		||||
#define TEST_ASSERT_EQUAL_MESSAGE(expected, actual, message)                                       UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand)
 | 
			
		||||
#define TEST_ASSERT_NOT_EQUAL_MESSAGE(expected, actual, message)                                   UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* end of UNITY_FRAMEWORK_H */
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -1,396 +0,0 @@
 | 
			
		||||
#include <stdarg.h>
 | 
			
		||||
#include "list_ops.h"
 | 
			
		||||
#include "test-framework/unity.h"
 | 
			
		||||
 | 
			
		||||
static const int MAX_STRING_LEN = 100;
 | 
			
		||||
static list_t *list = NULL;
 | 
			
		||||
static list_t *list2 = NULL;
 | 
			
		||||
static list_t *actual = NULL;
 | 
			
		||||
static char *error_message = NULL;
 | 
			
		||||
 | 
			
		||||
void setUp(void)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void release_lists(int count, ...)
 | 
			
		||||
{
 | 
			
		||||
   va_list ptr;
 | 
			
		||||
   va_start(ptr, count);
 | 
			
		||||
   for (int i = 0; i < count; ++i) {
 | 
			
		||||
      list_t **list = va_arg(ptr, list_t **);
 | 
			
		||||
      if (*list) {
 | 
			
		||||
         free(*list);
 | 
			
		||||
         *list = NULL;
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
   va_end(ptr);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void tearDown(void)
 | 
			
		||||
{
 | 
			
		||||
   release_lists(3, &list, &list2, &actual);
 | 
			
		||||
   if (error_message) {
 | 
			
		||||
      free(error_message);
 | 
			
		||||
      error_message = NULL;
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static char *print_elements(size_t length, list_element_t list_elements[])
 | 
			
		||||
{
 | 
			
		||||
   char *array = malloc(MAX_STRING_LEN * sizeof(char));
 | 
			
		||||
   char *ptr = array;
 | 
			
		||||
   for (size_t i = 0; i < length; i++) {
 | 
			
		||||
      int printed = snprintf(ptr, MAX_STRING_LEN - (ptr - array), " %d ",
 | 
			
		||||
                             (list_elements[i]));
 | 
			
		||||
      ptr += printed;
 | 
			
		||||
      if (ptr - array > MAX_STRING_LEN) {
 | 
			
		||||
         break;
 | 
			
		||||
      }
 | 
			
		||||
   }
 | 
			
		||||
   return array;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static char *create_error_message(size_t length,
 | 
			
		||||
                                  list_element_t expected_elements[],
 | 
			
		||||
                                  list_element_t actual_elements[])
 | 
			
		||||
{
 | 
			
		||||
   char *message = malloc(MAX_STRING_LEN * sizeof(char));
 | 
			
		||||
   char *expected_string = print_elements(length, expected_elements);
 | 
			
		||||
   char *actual_string = print_elements(length, actual_elements);
 | 
			
		||||
   snprintf(message, MAX_STRING_LEN, "[%s] != [%s]", expected_string,
 | 
			
		||||
            actual_string);
 | 
			
		||||
   free(expected_string);
 | 
			
		||||
   free(actual_string);
 | 
			
		||||
   return message;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void check_lists_match(size_t expected_length,
 | 
			
		||||
                              list_element_t expected_elements[],
 | 
			
		||||
                              list_t *actual)
 | 
			
		||||
{
 | 
			
		||||
   // check actual list is a valid list
 | 
			
		||||
   TEST_ASSERT_NOT_NULL(actual);
 | 
			
		||||
 | 
			
		||||
   // check lengths match
 | 
			
		||||
   TEST_ASSERT_EQUAL_MESSAGE(expected_length, actual->length,
 | 
			
		||||
                             "List lengths differ");
 | 
			
		||||
 | 
			
		||||
   // check elements match in non-zero length list
 | 
			
		||||
   if (expected_length) {
 | 
			
		||||
      error_message = create_error_message(expected_length, expected_elements,
 | 
			
		||||
                                           actual->elements);
 | 
			
		||||
      TEST_ASSERT_EQUAL_MEMORY_ARRAY_MESSAGE(
 | 
			
		||||
          expected_elements, actual->elements, sizeof(list_element_t),
 | 
			
		||||
          expected_length, error_message);
 | 
			
		||||
      free(error_message);
 | 
			
		||||
      error_message = NULL;
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static bool filter_modulo(list_element_t element)
 | 
			
		||||
{
 | 
			
		||||
   return (element % 2 == 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static list_element_t map_increment(list_element_t element)
 | 
			
		||||
{
 | 
			
		||||
   return element + 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static list_element_t fold_multiply(list_element_t element,
 | 
			
		||||
                                    list_element_t accumulator)
 | 
			
		||||
{
 | 
			
		||||
   return element * accumulator;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static list_element_t fold_add(list_element_t element,
 | 
			
		||||
                               list_element_t accumulator)
 | 
			
		||||
{
 | 
			
		||||
   return element + accumulator;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static list_element_t fold_divide(list_element_t element,
 | 
			
		||||
                                  list_element_t accumulator)
 | 
			
		||||
{
 | 
			
		||||
   return (accumulator == 0) ? 0 : element / accumulator;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void call_delete_list(list_t **list)
 | 
			
		||||
{
 | 
			
		||||
   delete_list(*list);
 | 
			
		||||
   *list = NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void test_append_empty_lists(void)
 | 
			
		||||
{
 | 
			
		||||
   list = new_list(0, NULL);
 | 
			
		||||
   list2 = new_list(0, NULL);
 | 
			
		||||
 | 
			
		||||
   actual = append_list(list, list2);
 | 
			
		||||
   check_lists_match(0, NULL, actual);
 | 
			
		||||
 | 
			
		||||
   call_delete_list(&list);
 | 
			
		||||
   call_delete_list(&list2);
 | 
			
		||||
   call_delete_list(&actual);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void test_append_list_to_empty_list(void)
 | 
			
		||||
{
 | 
			
		||||
   TEST_IGNORE();   // delete this line to run test
 | 
			
		||||
   list = new_list(0, NULL);
 | 
			
		||||
   list2 = new_list(3, (list_element_t[]){ 1, 3, 4 });
 | 
			
		||||
   size_t expected_length = 3;
 | 
			
		||||
   list_element_t expected_elements[] = { 1, 3, 4 };
 | 
			
		||||
 | 
			
		||||
   actual = append_list(list, list2);
 | 
			
		||||
   check_lists_match(expected_length, expected_elements, actual);
 | 
			
		||||
 | 
			
		||||
   call_delete_list(&list);
 | 
			
		||||
   call_delete_list(&list2);
 | 
			
		||||
   call_delete_list(&actual);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void test_append_empty_list_to_list(void)
 | 
			
		||||
{
 | 
			
		||||
   TEST_IGNORE();
 | 
			
		||||
   list = new_list(4, (list_element_t[]){ 1, 2, 3, 4 });
 | 
			
		||||
   list2 = new_list(0, NULL);
 | 
			
		||||
   size_t expected_length = 4;
 | 
			
		||||
   list_element_t expected_elements[] = { 1, 2, 3, 4 };
 | 
			
		||||
 | 
			
		||||
   actual = append_list(list, list2);
 | 
			
		||||
   check_lists_match(expected_length, expected_elements, actual);
 | 
			
		||||
 | 
			
		||||
   call_delete_list(&list);
 | 
			
		||||
   call_delete_list(&list2);
 | 
			
		||||
   call_delete_list(&actual);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void test_append_non_empty_lists(void)
 | 
			
		||||
{
 | 
			
		||||
   TEST_IGNORE();
 | 
			
		||||
   list = new_list(2, (list_element_t[]){ 1, 2 });
 | 
			
		||||
   list2 = new_list(4, (list_element_t[]){ 2, 3, 4, 5 });
 | 
			
		||||
   size_t expected_length = 6;
 | 
			
		||||
   list_element_t expected_elements[] = { 1, 2, 2, 3, 4, 5 };
 | 
			
		||||
 | 
			
		||||
   actual = append_list(list, list2);
 | 
			
		||||
   check_lists_match(expected_length, expected_elements, actual);
 | 
			
		||||
 | 
			
		||||
   call_delete_list(&list);
 | 
			
		||||
   call_delete_list(&list2);
 | 
			
		||||
   call_delete_list(&actual);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void test_filter_empty_list(void)
 | 
			
		||||
{
 | 
			
		||||
   TEST_IGNORE();
 | 
			
		||||
   list = new_list(0, NULL);
 | 
			
		||||
 | 
			
		||||
   actual = filter_list(list, filter_modulo);
 | 
			
		||||
   check_lists_match(0, NULL, actual);
 | 
			
		||||
 | 
			
		||||
   call_delete_list(&list);
 | 
			
		||||
   call_delete_list(&actual);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void test_filter_non_empty_list(void)
 | 
			
		||||
{
 | 
			
		||||
   TEST_IGNORE();
 | 
			
		||||
   list = new_list(5, (list_element_t[]){ 1, 2, 3, 4, 5 });
 | 
			
		||||
   size_t expected_length = 3;
 | 
			
		||||
   list_element_t expected_elements[] = { 1, 3, 5 };
 | 
			
		||||
 | 
			
		||||
   actual = filter_list(list, filter_modulo);
 | 
			
		||||
   check_lists_match(expected_length, expected_elements, actual);
 | 
			
		||||
 | 
			
		||||
   call_delete_list(&list);
 | 
			
		||||
   call_delete_list(&actual);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void test_length_empty_list(void)
 | 
			
		||||
{
 | 
			
		||||
   TEST_IGNORE();
 | 
			
		||||
   list = new_list(0, NULL);
 | 
			
		||||
   size_t expected = 0;
 | 
			
		||||
 | 
			
		||||
   size_t actual = length_list(list);
 | 
			
		||||
   TEST_ASSERT_EQUAL(expected, actual);
 | 
			
		||||
 | 
			
		||||
   call_delete_list(&list);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void test_length_non_empty_list(void)
 | 
			
		||||
{
 | 
			
		||||
   TEST_IGNORE();
 | 
			
		||||
   list = new_list(4, (list_element_t[]){ 1, 2, 3, 4 });
 | 
			
		||||
   size_t expected = 4;
 | 
			
		||||
 | 
			
		||||
   size_t actual = length_list(list);
 | 
			
		||||
   TEST_ASSERT_EQUAL(expected, actual);
 | 
			
		||||
 | 
			
		||||
   call_delete_list(&list);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void test_map_empty_list(void)
 | 
			
		||||
{
 | 
			
		||||
   TEST_IGNORE();
 | 
			
		||||
   list = new_list(0, NULL);
 | 
			
		||||
 | 
			
		||||
   actual = map_list(list, map_increment);
 | 
			
		||||
   check_lists_match(0, NULL, actual);
 | 
			
		||||
 | 
			
		||||
   call_delete_list(&list);
 | 
			
		||||
   call_delete_list(&actual);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void test_map_non_empty_list(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
   TEST_IGNORE();
 | 
			
		||||
   list = new_list(4, (list_element_t[]){ 1, 3, 5, 7 });
 | 
			
		||||
   size_t expected_length = 4;
 | 
			
		||||
   list_element_t expected_elements[] = { 2, 4, 6, 8 };
 | 
			
		||||
 | 
			
		||||
   actual = map_list(list, map_increment);
 | 
			
		||||
   check_lists_match(expected_length, expected_elements, actual);
 | 
			
		||||
 | 
			
		||||
   call_delete_list(&list);
 | 
			
		||||
   call_delete_list(&actual);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void test_foldl_empty_list(void)
 | 
			
		||||
{
 | 
			
		||||
   TEST_IGNORE();
 | 
			
		||||
   list = new_list(0, NULL);
 | 
			
		||||
   list_element_t initial = 2;
 | 
			
		||||
   list_element_t expected = 2;
 | 
			
		||||
 | 
			
		||||
   list_element_t actual = foldl_list(list, initial, fold_divide);
 | 
			
		||||
   TEST_ASSERT_EQUAL(expected, actual);
 | 
			
		||||
 | 
			
		||||
   call_delete_list(&list);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
test_foldl_direction_independent_function_applied_to_non_empty_list(void)
 | 
			
		||||
{
 | 
			
		||||
   TEST_IGNORE();
 | 
			
		||||
   list = new_list(4, (list_element_t[]){ 1, 2, 3, 4 });
 | 
			
		||||
   list_element_t initial = 5;
 | 
			
		||||
   list_element_t expected = 15;
 | 
			
		||||
 | 
			
		||||
   list_element_t actual = foldl_list(list, initial, fold_add);
 | 
			
		||||
   TEST_ASSERT_EQUAL(expected, actual);
 | 
			
		||||
 | 
			
		||||
   call_delete_list(&list);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
test_foldl_direction_dependent_function_applied_to_non_empty_list(void)
 | 
			
		||||
{
 | 
			
		||||
   TEST_IGNORE();
 | 
			
		||||
   list = new_list(2, (list_element_t[]){ 2, 5 });
 | 
			
		||||
   list_element_t initial = 5;
 | 
			
		||||
   list_element_t expected = 0;
 | 
			
		||||
 | 
			
		||||
   list_element_t actual = foldl_list(list, initial, fold_divide);
 | 
			
		||||
   TEST_ASSERT_EQUAL(expected, actual);
 | 
			
		||||
 | 
			
		||||
   call_delete_list(&list);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void test_foldr_empty_list(void)
 | 
			
		||||
{
 | 
			
		||||
   TEST_IGNORE();
 | 
			
		||||
   list = new_list(0, NULL);
 | 
			
		||||
   list_element_t initial = 2;
 | 
			
		||||
   list_element_t expected = 2;
 | 
			
		||||
 | 
			
		||||
   list_element_t actual = foldr_list(list, initial, fold_multiply);
 | 
			
		||||
   TEST_ASSERT_EQUAL(expected, actual);
 | 
			
		||||
 | 
			
		||||
   call_delete_list(&list);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
test_foldr_direction_independent_function_applied_to_non_empty_list(void)
 | 
			
		||||
{
 | 
			
		||||
   TEST_IGNORE();
 | 
			
		||||
   list = new_list(4, (list_element_t[]){ 1, 2, 3, 4 });
 | 
			
		||||
   list_element_t initial = 5;
 | 
			
		||||
   list_element_t expected = 15;
 | 
			
		||||
 | 
			
		||||
   list_element_t actual = foldr_list(list, initial, fold_add);
 | 
			
		||||
   TEST_ASSERT_EQUAL(expected, actual);
 | 
			
		||||
 | 
			
		||||
   call_delete_list(&list);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
test_foldr_direction_dependent_function_applied_to_non_empty_list(void)
 | 
			
		||||
{
 | 
			
		||||
   TEST_IGNORE();
 | 
			
		||||
   list = new_list(2, (list_element_t[]){ 2, 5 });
 | 
			
		||||
   list_element_t initial = 5;
 | 
			
		||||
   list_element_t expected = 2;
 | 
			
		||||
 | 
			
		||||
   list_element_t actual = foldr_list(list, initial, fold_divide);
 | 
			
		||||
   TEST_ASSERT_EQUAL(expected, actual);
 | 
			
		||||
 | 
			
		||||
   call_delete_list(&list);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void test_reverse_empty_list(void)
 | 
			
		||||
{
 | 
			
		||||
   TEST_IGNORE();
 | 
			
		||||
   list = new_list(0, NULL);
 | 
			
		||||
 | 
			
		||||
   actual = reverse_list(list);
 | 
			
		||||
   check_lists_match(0, NULL, actual);
 | 
			
		||||
 | 
			
		||||
   call_delete_list(&list);
 | 
			
		||||
   call_delete_list(&actual);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void test_reverse_non_empty_list(void)
 | 
			
		||||
{
 | 
			
		||||
   TEST_IGNORE();
 | 
			
		||||
   list = new_list(4, (list_element_t[]){ 1, 3, 5, 7 });
 | 
			
		||||
   size_t expected_length = 4;
 | 
			
		||||
   list_element_t expected_elements[] = { 7, 5, 3, 1 };
 | 
			
		||||
 | 
			
		||||
   actual = reverse_list(list);
 | 
			
		||||
   check_lists_match(expected_length, expected_elements, actual);
 | 
			
		||||
 | 
			
		||||
   call_delete_list(&list);
 | 
			
		||||
   call_delete_list(&actual);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main(void)
 | 
			
		||||
{
 | 
			
		||||
   UNITY_BEGIN();
 | 
			
		||||
 | 
			
		||||
   RUN_TEST(test_append_empty_lists);
 | 
			
		||||
   RUN_TEST(test_append_list_to_empty_list);
 | 
			
		||||
   RUN_TEST(test_append_empty_list_to_list);
 | 
			
		||||
   RUN_TEST(test_append_non_empty_lists);
 | 
			
		||||
   RUN_TEST(test_filter_empty_list);
 | 
			
		||||
   RUN_TEST(test_filter_non_empty_list);
 | 
			
		||||
   RUN_TEST(test_length_empty_list);
 | 
			
		||||
   RUN_TEST(test_length_non_empty_list);
 | 
			
		||||
   RUN_TEST(test_map_empty_list);
 | 
			
		||||
   RUN_TEST(test_map_non_empty_list);
 | 
			
		||||
   RUN_TEST(test_foldl_empty_list);
 | 
			
		||||
   RUN_TEST(
 | 
			
		||||
       test_foldl_direction_independent_function_applied_to_non_empty_list);
 | 
			
		||||
   RUN_TEST(test_foldl_direction_dependent_function_applied_to_non_empty_list);
 | 
			
		||||
   RUN_TEST(test_foldr_empty_list);
 | 
			
		||||
   RUN_TEST(
 | 
			
		||||
       test_foldr_direction_independent_function_applied_to_non_empty_list);
 | 
			
		||||
   RUN_TEST(test_foldr_direction_dependent_function_applied_to_non_empty_list);
 | 
			
		||||
   RUN_TEST(test_reverse_empty_list);
 | 
			
		||||
   RUN_TEST(test_reverse_non_empty_list);
 | 
			
		||||
 | 
			
		||||
   return UNITY_END();
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user