AUnit  1.7.1
Unit testing framework for Arduino platforms inspired by ArduinoUnit and Google Test.
Functions
Compare.h File Reference

This file provides overloaded compareXxx(a, b) functions which are used by the various assertXxx(a, b) macros. More...

#include <stddef.h>
Include dependency graph for Compare.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

int aunit::internal::compareString (const char *a, const char *b)
 
int aunit::internal::compareString (const char *a, const String &b)
 
int aunit::internal::compareString (const char *a, const __FlashStringHelper *b)
 
int aunit::internal::compareString (const String &a, const char *b)
 
int aunit::internal::compareString (const String &a, const String &b)
 
int aunit::internal::compareString (const String &a, const __FlashStringHelper *b)
 
int aunit::internal::compareString (const __FlashStringHelper *a, const char *b)
 
int aunit::internal::compareString (const __FlashStringHelper *a, const __FlashStringHelper *b)
 
int aunit::internal::compareString (const __FlashStringHelper *a, const String &b)
 
int aunit::internal::compareStringCase (const char *a, const char *b)
 
int aunit::internal::compareStringCase (const char *a, const String &b)
 
int aunit::internal::compareStringCase (const char *a, const __FlashStringHelper *b)
 
int aunit::internal::compareStringCase (const String &a, const char *b)
 
int aunit::internal::compareStringCase (const String &a, const String &b)
 
int aunit::internal::compareStringCase (const String &a, const __FlashStringHelper *b)
 
int aunit::internal::compareStringCase (const __FlashStringHelper *a, const char *b)
 
int aunit::internal::compareStringCase (const __FlashStringHelper *a, const __FlashStringHelper *b)
 
int aunit::internal::compareStringCase (const __FlashStringHelper *a, const String &b)
 
int aunit::internal::compareStringN (const char *a, const char *b, size_t n)
 Compare only the first n characters of 'a' or 'b'.
 
int aunit::internal::compareStringN (const char *a, const __FlashStringHelper *b, size_t n)
 Compare only the first n characters of 'a' or 'b'.
 
int aunit::internal::compareStringN (const __FlashStringHelper *a, const char *b, size_t n)
 Compare only the first n characters of 'a' or 'b'.
 
int aunit::internal::compareStringN (const __FlashStringHelper *a, const __FlashStringHelper *b, size_t n)
 Compare only the first n characters of 'a' or 'b'.
 
bool aunit::internal::compareSubstring (const char *haystack, const char *needle)
 
bool aunit::internal::compareSubstring (const char *haystack, const String &needle)
 
bool aunit::internal::compareSubstring (const char *haystack, const __FlashStringHelper *needle)
 
bool aunit::internal::compareSubstring (const String &haystack, const char *needle)
 
bool aunit::internal::compareSubstring (const String &haystack, const String &needle)
 
bool aunit::internal::compareSubstring (const String &haystack, const __FlashStringHelper *needle)
 
bool aunit::internal::compareSubstring (const __FlashStringHelper *haystack, const char *needle)
 An inefficient O(M*N) implementation of strstr() for PROGMEM strings. More...
 
bool aunit::internal::compareSubstring (const __FlashStringHelper *haystack, const String &needle)
 
bool aunit::internal::compareSubstring (const __FlashStringHelper *haystack, const __FlashStringHelper *needle)
 An inefficient O(M*N) implementation of strstr() for PROGMEM strings. More...
 
bool aunit::internal::compareEqual (bool a, bool b)
 
bool aunit::internal::compareEqual (char a, char b)
 
bool aunit::internal::compareEqual (int a, int b)
 
bool aunit::internal::compareEqual (unsigned int a, unsigned int b)
 
bool aunit::internal::compareEqual (long a, long b)
 
bool aunit::internal::compareEqual (unsigned long a, unsigned long b)
 
bool aunit::internal::compareEqual (long long a, long long b)
 
bool aunit::internal::compareEqual (unsigned long long a, unsigned long long b)
 
bool aunit::internal::compareEqual (double a, double b)
 
bool aunit::internal::compareEqual (const void *a, const void *b)
 
bool aunit::internal::compareEqual (const char *a, const char *b)
 
bool aunit::internal::compareEqual (const char *a, const String &b)
 
bool aunit::internal::compareEqual (const char *a, const __FlashStringHelper *b)
 
bool aunit::internal::compareEqual (const __FlashStringHelper *a, const char *b)
 
bool aunit::internal::compareEqual (const __FlashStringHelper *a, const __FlashStringHelper *b)
 
bool aunit::internal::compareEqual (const __FlashStringHelper *a, const String &b)
 
bool aunit::internal::compareEqual (const String &a, const char *b)
 
bool aunit::internal::compareEqual (const String &a, const String &b)
 
bool aunit::internal::compareEqual (const String &a, const __FlashStringHelper *b)
 
bool aunit::internal::compareLess (bool a, bool b)
 
bool aunit::internal::compareLess (char a, char b)
 
bool aunit::internal::compareLess (int a, int b)
 
bool aunit::internal::compareLess (unsigned int a, unsigned int b)
 
bool aunit::internal::compareLess (long a, long b)
 
bool aunit::internal::compareLess (unsigned long a, unsigned long b)
 
bool aunit::internal::compareLess (long long a, long long b)
 
bool aunit::internal::compareLess (unsigned long long a, unsigned long long b)
 
bool aunit::internal::compareLess (double a, double b)
 
bool aunit::internal::compareLess (const char *a, const char *b)
 
bool aunit::internal::compareLess (const char *a, const String &b)
 
bool aunit::internal::compareLess (const char *a, const __FlashStringHelper *b)
 
bool aunit::internal::compareLess (const __FlashStringHelper *a, const char *b)
 
bool aunit::internal::compareLess (const __FlashStringHelper *a, const __FlashStringHelper *b)
 
bool aunit::internal::compareLess (const __FlashStringHelper *a, const String &b)
 
bool aunit::internal::compareLess (const String &a, const char *b)
 
bool aunit::internal::compareLess (const String &a, const String &b)
 
bool aunit::internal::compareLess (const String &a, const __FlashStringHelper *b)
 
bool aunit::internal::compareMore (bool a, bool b)
 
bool aunit::internal::compareMore (char a, char b)
 
bool aunit::internal::compareMore (int a, int b)
 
bool aunit::internal::compareMore (unsigned int a, unsigned int b)
 
bool aunit::internal::compareMore (long a, long b)
 
bool aunit::internal::compareMore (unsigned long a, unsigned long b)
 
bool aunit::internal::compareMore (long long a, long long b)
 
bool aunit::internal::compareMore (unsigned long long a, unsigned long long b)
 
bool aunit::internal::compareMore (double a, double b)
 
bool aunit::internal::compareMore (const char *a, const char *b)
 
bool aunit::internal::compareMore (const char *a, const String &b)
 
bool aunit::internal::compareMore (const char *a, const __FlashStringHelper *b)
 
bool aunit::internal::compareMore (const __FlashStringHelper *a, const char *b)
 
bool aunit::internal::compareMore (const __FlashStringHelper *a, const __FlashStringHelper *b)
 
bool aunit::internal::compareMore (const __FlashStringHelper *a, const String &b)
 
bool aunit::internal::compareMore (const String &a, const char *b)
 
bool aunit::internal::compareMore (const String &a, const String &b)
 
bool aunit::internal::compareMore (const String &a, const __FlashStringHelper *b)
 
bool aunit::internal::compareLessOrEqual (bool a, bool b)
 
bool aunit::internal::compareLessOrEqual (char a, char b)
 
bool aunit::internal::compareLessOrEqual (int a, int b)
 
bool aunit::internal::compareLessOrEqual (unsigned int a, unsigned int b)
 
bool aunit::internal::compareLessOrEqual (long a, long b)
 
bool aunit::internal::compareLessOrEqual (unsigned long a, unsigned long b)
 
bool aunit::internal::compareLessOrEqual (long long a, long long b)
 
bool aunit::internal::compareLessOrEqual (unsigned long long a, unsigned long long b)
 
bool aunit::internal::compareLessOrEqual (double a, double b)
 
bool aunit::internal::compareLessOrEqual (const char *a, const char *b)
 
bool aunit::internal::compareLessOrEqual (const char *a, const String &b)
 
bool aunit::internal::compareLessOrEqual (const char *a, const __FlashStringHelper *b)
 
bool aunit::internal::compareLessOrEqual (const __FlashStringHelper *a, const char *b)
 
bool aunit::internal::compareLessOrEqual (const __FlashStringHelper *a, const __FlashStringHelper *b)
 
bool aunit::internal::compareLessOrEqual (const __FlashStringHelper *a, const String &b)
 
bool aunit::internal::compareLessOrEqual (const String &a, const char *b)
 
bool aunit::internal::compareLessOrEqual (const String &a, const String &b)
 
bool aunit::internal::compareLessOrEqual (const String &a, const __FlashStringHelper *b)
 
bool aunit::internal::compareMoreOrEqual (bool a, bool b)
 
bool aunit::internal::compareMoreOrEqual (char a, char b)
 
bool aunit::internal::compareMoreOrEqual (int a, int b)
 
bool aunit::internal::compareMoreOrEqual (unsigned int a, unsigned int b)
 
bool aunit::internal::compareMoreOrEqual (long a, long b)
 
bool aunit::internal::compareMoreOrEqual (unsigned long a, unsigned long b)
 
bool aunit::internal::compareMoreOrEqual (long long a, long long b)
 
bool aunit::internal::compareMoreOrEqual (unsigned long long a, unsigned long long b)
 
bool aunit::internal::compareMoreOrEqual (double a, double b)
 
bool aunit::internal::compareMoreOrEqual (const char *a, const char *b)
 
bool aunit::internal::compareMoreOrEqual (const char *a, const String &b)
 
bool aunit::internal::compareMoreOrEqual (const char *a, const __FlashStringHelper *b)
 
bool aunit::internal::compareMoreOrEqual (const __FlashStringHelper *a, const char *b)
 
bool aunit::internal::compareMoreOrEqual (const __FlashStringHelper *a, const __FlashStringHelper *b)
 
bool aunit::internal::compareMoreOrEqual (const __FlashStringHelper *a, const String &b)
 
bool aunit::internal::compareMoreOrEqual (const String &a, const char *b)
 
bool aunit::internal::compareMoreOrEqual (const String &a, const String &b)
 
bool aunit::internal::compareMoreOrEqual (const String &a, const __FlashStringHelper *b)
 
bool aunit::internal::compareNotEqual (bool a, bool b)
 
bool aunit::internal::compareNotEqual (char a, char b)
 
bool aunit::internal::compareNotEqual (int a, int b)
 
bool aunit::internal::compareNotEqual (unsigned int a, unsigned int b)
 
bool aunit::internal::compareNotEqual (long a, long b)
 
bool aunit::internal::compareNotEqual (unsigned long a, unsigned long b)
 
bool aunit::internal::compareNotEqual (long long a, long long b)
 
bool aunit::internal::compareNotEqual (unsigned long long a, unsigned long long b)
 
bool aunit::internal::compareNotEqual (double a, double b)
 
bool aunit::internal::compareNotEqual (const void *a, const void *b)
 
bool aunit::internal::compareNotEqual (const char *a, const char *b)
 
bool aunit::internal::compareNotEqual (const char *a, const String &b)
 
bool aunit::internal::compareNotEqual (const char *a, const __FlashStringHelper *b)
 
bool aunit::internal::compareNotEqual (const __FlashStringHelper *a, const char *b)
 
bool aunit::internal::compareNotEqual (const __FlashStringHelper *a, const __FlashStringHelper *b)
 
bool aunit::internal::compareNotEqual (const __FlashStringHelper *a, const String &b)
 
bool aunit::internal::compareNotEqual (const String &a, const char *b)
 
bool aunit::internal::compareNotEqual (const String &a, const String &b)
 
bool aunit::internal::compareNotEqual (const String &a, const __FlashStringHelper *b)
 
bool aunit::internal::compareStringCaseEqual (const char *a, const char *b)
 
bool aunit::internal::compareStringCaseEqual (const char *a, const String &b)
 
bool aunit::internal::compareStringCaseEqual (const char *a, const __FlashStringHelper *b)
 
bool aunit::internal::compareStringCaseEqual (const __FlashStringHelper *a, const char *b)
 
bool aunit::internal::compareStringCaseEqual (const __FlashStringHelper *a, const __FlashStringHelper *b)
 
bool aunit::internal::compareStringCaseEqual (const __FlashStringHelper *a, const String &b)
 
bool aunit::internal::compareStringCaseEqual (const String &a, const char *b)
 
bool aunit::internal::compareStringCaseEqual (const String &a, const String &b)
 
bool aunit::internal::compareStringCaseEqual (const String &a, const __FlashStringHelper *b)
 
bool aunit::internal::compareStringCaseNotEqual (const char *a, const char *b)
 
bool aunit::internal::compareStringCaseNotEqual (const char *a, const String &b)
 
bool aunit::internal::compareStringCaseNotEqual (const char *a, const __FlashStringHelper *b)
 
bool aunit::internal::compareStringCaseNotEqual (const __FlashStringHelper *a, const char *b)
 
bool aunit::internal::compareStringCaseNotEqual (const __FlashStringHelper *a, const __FlashStringHelper *b)
 
bool aunit::internal::compareStringCaseNotEqual (const __FlashStringHelper *a, const String &b)
 
bool aunit::internal::compareStringCaseNotEqual (const String &a, const char *b)
 
bool aunit::internal::compareStringCaseNotEqual (const String &a, const String &b)
 
bool aunit::internal::compareStringCaseNotEqual (const String &a, const __FlashStringHelper *b)
 
bool aunit::internal::compareNear (int a, int b, int error)
 
bool aunit::internal::compareNear (unsigned int a, unsigned int b, unsigned int error)
 
bool aunit::internal::compareNear (long a, long b, long error)
 
bool aunit::internal::compareNear (unsigned long a, unsigned long b, unsigned long error)
 
bool aunit::internal::compareNear (double a, double b, double error)
 
bool aunit::internal::compareNotNear (int a, int b, int error)
 
bool aunit::internal::compareNotNear (unsigned int a, unsigned int b, unsigned int error)
 
bool aunit::internal::compareNotNear (long a, long b, long error)
 
bool aunit::internal::compareNotNear (unsigned long a, unsigned long b, unsigned long error)
 
bool aunit::internal::compareNotNear (double a, double b, double error)
 

Detailed Description

This file provides overloaded compareXxx(a, b) functions which are used by the various assertXxx(a, b) macros.

We wanted to allow users to use the assertXxx() macros with all combinations of the 3 types of strings available in the Arduino platform:

Clearly, there are 9 binary combinations these string types, so we define 9 compareString(a, b) functions.

For other primitive types, I depend on implicit conversion rules to reduce the overloaded types to 7:

Therefore, there are 16 overloaded versions of each of the compareXxx(a, b) functions.

There are 6 compareXxx() functions corresponding to (==, !=, <, >, <=, >=). Many of them are implemented using the primitive logical operators for the respective primitive types. The compare functions for string types are implemented using compareString().

All versions of compareString() and compareStringN() accept nullptr arguments (in constrast to strcmp() and strncmp() where their behavior for nullptr are undefined by the C standard.) If both arguments are nullptr, then the strings are considered equal (returns 0). Otherwise, the nullptr is arbitrarily defined to be less than all non-null strings, including the empty string.

Definition in file Compare.h.

Function Documentation

◆ compareSubstring() [1/2]

bool aunit::internal::compareSubstring ( const __FlashStringHelper *  haystack,
const __FlashStringHelper *  needle 
)

An inefficient O(M*N) implementation of strstr() for PROGMEM strings.

The KMP algorithm https://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm is faster, but this brute force implementation is probably good enough.

Definition at line 374 of file Compare.cpp.

◆ compareSubstring() [2/2]

bool aunit::internal::compareSubstring ( const __FlashStringHelper *  haystack,
const char *  needle 
)

An inefficient O(M*N) implementation of strstr() for PROGMEM strings.

The KMP algorithm https://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm is faster, but this brute force implementation is probably good enough.

Definition at line 342 of file Compare.cpp.