mirror of
https://github.com/ThrowTheSwitch/Unity.git
synced 2026-01-23 00:15:58 +01:00
Added NOT-EQUAL int variants.
Organized Unit Tests
This commit is contained in:
@@ -31,7 +31,7 @@ DEFAULT_CONFIG_FILE = 'gcc_auto_stdint.yml'
|
||||
configure_toolchain(DEFAULT_CONFIG_FILE)
|
||||
|
||||
############# ALL THE SELF-TESTS WE CAN PERFORM
|
||||
namespace :test do
|
||||
namespace :test do
|
||||
desc "Build and test Unity"
|
||||
task :all => [:clean, :prepare_for_tests, 'test:scripts', 'test:unit', :style, 'test:fixture', 'test:memory', 'test:summary']
|
||||
task :ci => [:clean, :prepare_for_tests, 'test:scripts', 'test:unit', :style, 'test:make', 'test:fixture', 'test:memory', 'test:summary']
|
||||
@@ -41,6 +41,15 @@ namespace :test do
|
||||
run_tests unit_test_files
|
||||
end
|
||||
|
||||
namespace :unit do
|
||||
unit_test_files.each do |f|
|
||||
desc "test this unit only"
|
||||
task File.basename(f,'.c').sub('test_unity_','') => [:prepare_for_tests] do
|
||||
run_tests [f]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
desc "Test unity's helper scripts"
|
||||
task :scripts => [:prepare_for_tests] do
|
||||
Dir['tests/test_*.rb'].each do |scriptfile|
|
||||
@@ -54,17 +63,17 @@ namespace :test do
|
||||
end
|
||||
|
||||
desc "Test unity fixture addon"
|
||||
task :fixture => [:prepare_for_tests] do
|
||||
task :fixture => [:prepare_for_tests] do
|
||||
test_fixtures()
|
||||
end
|
||||
|
||||
desc "Test unity memory addon"
|
||||
task :memory => [:prepare_for_tests] do
|
||||
task :memory => [:prepare_for_tests] do
|
||||
test_memory()
|
||||
end
|
||||
|
||||
desc "Test unity examples"
|
||||
task :examples => [:prepare_for_tests] do
|
||||
task :examples => [:prepare_for_tests] do
|
||||
execute("cd ../examples/example_1 && make -s ci", false)
|
||||
execute("cd ../examples/example_2 && make -s ci", false)
|
||||
execute("cd ../examples/example_3 && rake", false)
|
||||
|
||||
@@ -95,13 +95,13 @@ module RakefileHelpers
|
||||
args = []
|
||||
hash[:arguments].each do |arg|
|
||||
if arg.include? '$'
|
||||
if arg.include? ': COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE'
|
||||
if arg.include? ': COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE'
|
||||
pattern = arg.gsub(': COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE','')
|
||||
[ File.join('..','src') ].each do |f|
|
||||
args << pattern.gsub(/\$/,f)
|
||||
end
|
||||
|
||||
elsif arg.include? ': COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR'
|
||||
elsif arg.include? ': COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR'
|
||||
pattern = arg.gsub(': COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR','')
|
||||
[ $extra_paths, 'src', File.join('tests'), File.join('testdata'), $cfg[:paths][:support] ].flatten.uniq.compact.each do |f|
|
||||
args << pattern.gsub(/\$/,f)
|
||||
@@ -112,7 +112,7 @@ module RakefileHelpers
|
||||
[ $cfg[:defines][:test], defines ].flatten.uniq.compact.each do |f|
|
||||
args << pattern.gsub(/\$/,f)
|
||||
end
|
||||
|
||||
|
||||
elsif arg =~ /\$\{(\d+)\}/
|
||||
i = $1.to_i - 1
|
||||
if (values[i].is_a?(Array))
|
||||
@@ -223,8 +223,8 @@ module RakefileHelpers
|
||||
end
|
||||
|
||||
def test_memory()
|
||||
{ 'w_malloc' => [],
|
||||
'wo_malloc' => ['UNITY_EXCLUDE_STDLIB_MALLOC']
|
||||
{ 'w_malloc' => [],
|
||||
'wo_malloc' => ['UNITY_EXCLUDE_STDLIB_MALLOC']
|
||||
}.each_pair do |name, defs|
|
||||
report "\nRunning Memory Addon #{name}"
|
||||
|
||||
@@ -264,6 +264,7 @@ module RakefileHelpers
|
||||
end
|
||||
end
|
||||
|
||||
report "\nRunning Tests in #{test}"
|
||||
obj_list = []
|
||||
test_defines = []
|
||||
|
||||
@@ -297,7 +298,7 @@ module RakefileHelpers
|
||||
end
|
||||
end
|
||||
|
||||
def run_make_tests()
|
||||
def run_make_tests()
|
||||
[ "make -s", # test with all defaults
|
||||
"make -s DEBUG=-m32", # test 32-bit architecture with 64-bit support
|
||||
"make -s DEBUG=-m32 UNITY_SUPPORT_64=", # test 32-bit build without 64-bit types
|
||||
|
||||
132
test/tests/self_assessment_utils.h
Normal file
132
test/tests/self_assessment_utils.h
Normal file
@@ -0,0 +1,132 @@
|
||||
#ifdef TEST_INSTANCES
|
||||
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
|
||||
/* Dividing by these constants produces +/- infinity.
|
||||
* The rationale is given in UnityAssertFloatIsInf's body.
|
||||
*/
|
||||
#ifndef UNITY_EXCLUDE_FLOAT
|
||||
static const UNITY_FLOAT f_zero = 0.0f;
|
||||
#endif
|
||||
|
||||
#ifndef UNITY_EXCLUDE_DOUBLE
|
||||
static const UNITY_DOUBLE d_zero = 0.0;
|
||||
#endif
|
||||
|
||||
/* Macros for Catching An Expected Failure or Ignore */
|
||||
#define EXPECT_ABORT_BEGIN \
|
||||
startPutcharSpy(); \
|
||||
if (TEST_PROTECT()) \
|
||||
{
|
||||
|
||||
#define VERIFY_FAILS_END \
|
||||
} \
|
||||
endPutcharSpy(); /* start/end Spy to suppress output of failure message */ \
|
||||
Unity.CurrentTestFailed = (Unity.CurrentTestFailed == 1) ? 0 : 1; \
|
||||
if (Unity.CurrentTestFailed == 1) { \
|
||||
SetToOneMeanWeAlreadyCheckedThisGuy = 1; \
|
||||
UnityPrintNumberUnsigned(Unity.CurrentTestLineNumber); \
|
||||
UNITY_OUTPUT_CHAR(':'); \
|
||||
UnityPrint(Unity.CurrentTestName); \
|
||||
UnityPrint(":FAIL: [[[[ Test Should Have Failed But Did Not ]]]]"); \
|
||||
UNITY_OUTPUT_CHAR('\n'); \
|
||||
}
|
||||
|
||||
#define VERIFY_IGNORES_END \
|
||||
} \
|
||||
endPutcharSpy(); /* start/end Spy to suppress output of ignore message */ \
|
||||
Unity.CurrentTestFailed = (Unity.CurrentTestIgnored == 1) ? 0 : 1; \
|
||||
Unity.CurrentTestIgnored = 0; \
|
||||
if (Unity.CurrentTestFailed == 1) { \
|
||||
SetToOneMeanWeAlreadyCheckedThisGuy = 1; \
|
||||
UnityPrintNumberUnsigned(Unity.CurrentTestLineNumber); \
|
||||
UNITY_OUTPUT_CHAR(':'); \
|
||||
UnityPrint(Unity.CurrentTestName); \
|
||||
UnityPrint(":FAIL: [[[[ Test Should Have Ignored But Did Not ]]]]"); \
|
||||
UNITY_OUTPUT_CHAR('\n'); \
|
||||
}
|
||||
|
||||
int SetToOneToFailInTearDown;
|
||||
int SetToOneMeanWeAlreadyCheckedThisGuy;
|
||||
|
||||
/* Tricky series of macros to set USING_OUTPUT_SPY */
|
||||
#define USING_SPY_AS(a) EXPAND_AND_USE_2ND(ASSIGN_VALUE(a), 0)
|
||||
#define ASSIGN_VALUE(a) VAL_##a
|
||||
#define VAL_putcharSpy 0, 1
|
||||
#define EXPAND_AND_USE_2ND(a, b) SECOND_PARAM(a, b, throwaway)
|
||||
#define SECOND_PARAM(a, b, ...) b
|
||||
#if USING_SPY_AS(UNITY_OUTPUT_CHAR)
|
||||
#define USING_OUTPUT_SPY /* true only if UNITY_OUTPUT_CHAR = putcharSpy */
|
||||
#endif
|
||||
|
||||
#ifdef USING_OUTPUT_SPY
|
||||
#include <stdio.h>
|
||||
#define SPY_BUFFER_MAX 40
|
||||
static char putcharSpyBuffer[SPY_BUFFER_MAX];
|
||||
#endif
|
||||
static int indexSpyBuffer;
|
||||
static int putcharSpyEnabled;
|
||||
|
||||
void startPutcharSpy(void)
|
||||
{
|
||||
indexSpyBuffer = 0;
|
||||
putcharSpyEnabled = 1;
|
||||
}
|
||||
|
||||
void endPutcharSpy(void)
|
||||
{
|
||||
putcharSpyEnabled = 0;
|
||||
}
|
||||
|
||||
char* getBufferPutcharSpy(void)
|
||||
{
|
||||
#ifdef USING_OUTPUT_SPY
|
||||
putcharSpyBuffer[indexSpyBuffer] = '\0';
|
||||
return putcharSpyBuffer;
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
void putcharSpy(int c)
|
||||
{
|
||||
#ifdef USING_OUTPUT_SPY
|
||||
if (putcharSpyEnabled)
|
||||
{
|
||||
if (indexSpyBuffer < SPY_BUFFER_MAX - 1)
|
||||
putcharSpyBuffer[indexSpyBuffer++] = (char)c;
|
||||
} else
|
||||
putchar((char)c);
|
||||
#else
|
||||
(void)c;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* This is for counting the calls to the flushSpy */
|
||||
static int flushSpyEnabled;
|
||||
static int flushSpyCalls = 0;
|
||||
|
||||
void startFlushSpy(void)
|
||||
{
|
||||
flushSpyCalls = 0;
|
||||
flushSpyEnabled = 1;
|
||||
}
|
||||
|
||||
void endFlushSpy(void)
|
||||
{
|
||||
flushSpyCalls = 0;
|
||||
flushSpyEnabled = 0;
|
||||
}
|
||||
|
||||
int getFlushSpyCalls(void)
|
||||
{
|
||||
return flushSpyCalls;
|
||||
}
|
||||
|
||||
void flushSpy(void)
|
||||
{
|
||||
if (flushSpyEnabled){ flushSpyCalls++; }
|
||||
}
|
||||
|
||||
#endif
|
||||
2871
test/tests/test_unity_arrays.c
Normal file
2871
test/tests/test_unity_arrays.c
Normal file
File diff suppressed because it is too large
Load Diff
355
test/tests/test_unity_core.c
Normal file
355
test/tests/test_unity_core.c
Normal file
@@ -0,0 +1,355 @@
|
||||
/* ==========================================
|
||||
Unity Project - A Test Framework for C
|
||||
Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
|
||||
[Released under MIT License. Please refer to license.txt for details]
|
||||
========================================== */
|
||||
|
||||
#include "unity.h"
|
||||
#define TEST_INSTANCES
|
||||
#include "self_assessment_utils.h"
|
||||
|
||||
void setUp(void)
|
||||
{
|
||||
SetToOneToFailInTearDown = 0;
|
||||
SetToOneMeanWeAlreadyCheckedThisGuy = 0;
|
||||
}
|
||||
|
||||
void tearDown(void)
|
||||
{
|
||||
endPutcharSpy(); /* Stop suppressing test output */
|
||||
if (SetToOneToFailInTearDown == 1)
|
||||
{
|
||||
/* These will be skipped internally if already failed/ignored */
|
||||
TEST_FAIL_MESSAGE("<= Failed in tearDown");
|
||||
TEST_IGNORE_MESSAGE("<= Ignored in tearDown");
|
||||
}
|
||||
if ((SetToOneMeanWeAlreadyCheckedThisGuy == 0) && (Unity.CurrentTestFailed > 0))
|
||||
{
|
||||
UnityPrint(": [[[[ Test Should Have Passed But Did Not ]]]]");
|
||||
UNITY_OUTPUT_CHAR('\n');
|
||||
}
|
||||
}
|
||||
|
||||
void testUnitySizeInitializationReminder(void)
|
||||
{
|
||||
/* This test ensures that sizeof(struct UNITY_STORAGE_T) doesn't change. If this
|
||||
* test breaks, go look at the initialization of the Unity global variable
|
||||
* in unity.c and make sure we're filling in the proper fields. */
|
||||
const char* message = "Unexpected size for UNITY_STORAGE_T struct. Please check that "
|
||||
"the initialization of the Unity symbol in unity.c is "
|
||||
"still correct.";
|
||||
|
||||
/* Define a structure with all the same fields as `struct UNITY_STORAGE_T`. */
|
||||
#ifdef UNITY_EXCLUDE_DETAILS
|
||||
struct {
|
||||
const char* TestFile;
|
||||
const char* CurrentTestName;
|
||||
UNITY_LINE_TYPE CurrentTestLineNumber;
|
||||
UNITY_COUNTER_TYPE NumberOfTests;
|
||||
UNITY_COUNTER_TYPE TestFailures;
|
||||
UNITY_COUNTER_TYPE TestIgnores;
|
||||
UNITY_COUNTER_TYPE CurrentTestFailed;
|
||||
UNITY_COUNTER_TYPE CurrentTestIgnored;
|
||||
#ifdef UNITY_INCLUDE_EXEC_TIME
|
||||
UNITY_TIME_TYPE CurrentTestStartTime;
|
||||
UNITY_TIME_TYPE CurrentTestStopTime;
|
||||
#endif
|
||||
#ifndef UNITY_EXCLUDE_SETJMP_H
|
||||
jmp_buf AbortFrame;
|
||||
#endif
|
||||
} _Expected_Unity;
|
||||
#else
|
||||
struct {
|
||||
const char* TestFile;
|
||||
const char* CurrentTestName;
|
||||
const char* CurrentDetails1;
|
||||
const char* CurrentDetails2;
|
||||
UNITY_LINE_TYPE CurrentTestLineNumber;
|
||||
UNITY_COUNTER_TYPE NumberOfTests;
|
||||
UNITY_COUNTER_TYPE TestFailures;
|
||||
UNITY_COUNTER_TYPE TestIgnores;
|
||||
UNITY_COUNTER_TYPE CurrentTestFailed;
|
||||
UNITY_COUNTER_TYPE CurrentTestIgnored;
|
||||
#ifdef UNITY_INCLUDE_EXEC_TIME
|
||||
UNITY_COUNTER_TYPE CurrentTestStartTime;
|
||||
UNITY_COUNTER_TYPE CurrentTestStopTime;
|
||||
#endif
|
||||
#ifndef UNITY_EXCLUDE_SETJMP_H
|
||||
jmp_buf AbortFrame;
|
||||
#endif
|
||||
} _Expected_Unity;
|
||||
#endif
|
||||
|
||||
/* Compare our fake structure's size to the actual structure's size. They
|
||||
* should be the same.
|
||||
*
|
||||
* This accounts for alignment, padding, and packing issues that might come
|
||||
* up between different architectures. */
|
||||
TEST_ASSERT_EQUAL_MESSAGE(sizeof(_Expected_Unity), sizeof(Unity), message);
|
||||
}
|
||||
|
||||
void testPassShouldEndImmediatelyWithPass(void)
|
||||
{
|
||||
TEST_PASS();
|
||||
TEST_FAIL_MESSAGE("We should have passed already and finished this test");
|
||||
}
|
||||
|
||||
void testPassShouldEndImmediatelyWithPassAndMessage(void)
|
||||
{
|
||||
TEST_PASS_MESSAGE("Woohoo! This Automatically Passes!");
|
||||
TEST_FAIL_MESSAGE("We should have passed already and finished this test");
|
||||
}
|
||||
|
||||
void testMessageShouldDisplayMessageWithoutEndingAndGoOnToPass(void)
|
||||
{
|
||||
TEST_MESSAGE("This is just a message");
|
||||
TEST_MESSAGE("This is another message");
|
||||
TEST_PASS();
|
||||
}
|
||||
|
||||
void testMessageShouldDisplayMessageWithoutEndingAndGoOnToFail(void)
|
||||
{
|
||||
TEST_MESSAGE("This is yet another message");
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_FAIL();
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testTrue(void)
|
||||
{
|
||||
TEST_ASSERT(1);
|
||||
|
||||
TEST_ASSERT_TRUE(1);
|
||||
}
|
||||
|
||||
void testFalse(void)
|
||||
{
|
||||
TEST_ASSERT_FALSE(0);
|
||||
|
||||
TEST_ASSERT_UNLESS(0);
|
||||
}
|
||||
|
||||
void testPreviousPass(void)
|
||||
{
|
||||
TEST_ASSERT_EQUAL_INT(0U, Unity.TestFailures);
|
||||
}
|
||||
|
||||
void testNotVanilla(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT(0);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotTrue(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_TRUE(0);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotFalse(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_FALSE(1);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotUnless(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_UNLESS(1);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotNotEqual(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_NOT_EQUAL(10, 10);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testFail(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_FAIL_MESSAGE("Expected for testing");
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testIsNull(void)
|
||||
{
|
||||
char* ptr1 = NULL;
|
||||
const char* ptr2 = "hello";
|
||||
|
||||
TEST_ASSERT_NULL(ptr1);
|
||||
TEST_ASSERT_NOT_NULL(ptr2);
|
||||
}
|
||||
|
||||
void testIsNullShouldFailIfNot(void)
|
||||
{
|
||||
const char* ptr1 = "hello";
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_NULL(ptr1);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotNullShouldFailIfNULL(void)
|
||||
{
|
||||
char* ptr1 = NULL;
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_NOT_NULL(ptr1);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testIsEmpty(void)
|
||||
{
|
||||
const char* ptr1 = "\0";
|
||||
const char* ptr2 = "hello";
|
||||
|
||||
TEST_ASSERT_EMPTY(ptr1);
|
||||
TEST_ASSERT_NOT_EMPTY(ptr2);
|
||||
}
|
||||
|
||||
void testIsEmptyShouldFailIfNot(void)
|
||||
{
|
||||
const char* ptr1 = "hello";
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EMPTY(ptr1);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEmptyShouldFailIfEmpty(void)
|
||||
{
|
||||
const char* ptr1 = "\0";
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_NOT_EMPTY(ptr1);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testIgnore(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_IGNORE();
|
||||
TEST_FAIL_MESSAGE("This should not be reached");
|
||||
VERIFY_IGNORES_END
|
||||
}
|
||||
|
||||
void testIgnoreMessage(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_IGNORE_MESSAGE("This is an expected TEST_IGNORE_MESSAGE string!");
|
||||
TEST_FAIL_MESSAGE("This should not be reached");
|
||||
VERIFY_IGNORES_END
|
||||
}
|
||||
|
||||
void testProtection(void)
|
||||
{
|
||||
volatile int mask = 0;
|
||||
|
||||
if (TEST_PROTECT())
|
||||
{
|
||||
mask |= 1;
|
||||
TEST_ABORT();
|
||||
}
|
||||
else
|
||||
{
|
||||
Unity.CurrentTestFailed = 0;
|
||||
mask |= 2;
|
||||
}
|
||||
|
||||
TEST_ASSERT_EQUAL(3, mask);
|
||||
}
|
||||
|
||||
void testIgnoredAndThenFailInTearDown(void)
|
||||
{
|
||||
SetToOneToFailInTearDown = 1;
|
||||
TEST_IGNORE();
|
||||
}
|
||||
|
||||
void testFailureCountIncrementsAndIsReturnedAtEnd(void)
|
||||
{
|
||||
#ifndef USING_OUTPUT_SPY
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT savedFailures = Unity.TestFailures;
|
||||
Unity.CurrentTestFailed = 1;
|
||||
startPutcharSpy(); /* Suppress output */
|
||||
startFlushSpy();
|
||||
TEST_ASSERT_EQUAL(0, getFlushSpyCalls());
|
||||
UnityConcludeTest();
|
||||
endPutcharSpy();
|
||||
TEST_ASSERT_EQUAL(savedFailures + 1, Unity.TestFailures);
|
||||
#if defined(UNITY_OUTPUT_FLUSH) && defined(UNITY_OUTPUT_FLUSH_HEADER_DECLARATION)
|
||||
TEST_ASSERT_EQUAL(1, getFlushSpyCalls());
|
||||
#else
|
||||
TEST_ASSERT_EQUAL(0, getFlushSpyCalls());
|
||||
#endif
|
||||
endFlushSpy();
|
||||
|
||||
startPutcharSpy(); /* Suppress output */
|
||||
int failures = UnityEnd();
|
||||
Unity.TestFailures--;
|
||||
endPutcharSpy();
|
||||
TEST_ASSERT_EQUAL(savedFailures + 1, failures);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* ===================== THESE TEST WILL RUN IF YOUR CONFIG INCLUDES DETAIL SUPPORT ================== */
|
||||
|
||||
void testThatDetailsCanBeHandleOneDetail(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DETAILS
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_SET_DETAIL("Detail1");
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_INT_MESSAGE(5, 6, "Should Fail And Say Detail1");
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testThatDetailsCanHandleTestFail(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DETAILS
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_SET_DETAILS("Detail1","Detail2");
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_FAIL_MESSAGE("Should Fail And Say Detail1 and Detail2");
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testThatDetailsCanBeHandleTwoDetails(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DETAILS
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_SET_DETAILS("Detail1","Detail2");
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_HEX8_MESSAGE(7, 8, "Should Fail And Say Detail1 and Detail2");
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testThatDetailsCanBeHandleSingleDetailClearingTwoDetails(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DETAILS
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_SET_DETAILS("Detail1","Detail2");
|
||||
UNITY_SET_DETAIL("DetailNew");
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_STRING_MESSAGE("MEH", "GUH", "Should Fail And Say DetailNew");
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
770
test/tests/test_unity_doubles.c
Normal file
770
test/tests/test_unity_doubles.c
Normal file
@@ -0,0 +1,770 @@
|
||||
/* ==========================================
|
||||
Unity Project - A Test Framework for C
|
||||
Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
|
||||
[Released under MIT License. Please refer to license.txt for details]
|
||||
========================================== */
|
||||
|
||||
#include "unity.h"
|
||||
#define TEST_INSTANCES
|
||||
#include "self_assessment_utils.h"
|
||||
|
||||
void setUp(void)
|
||||
{
|
||||
SetToOneToFailInTearDown = 0;
|
||||
SetToOneMeanWeAlreadyCheckedThisGuy = 0;
|
||||
}
|
||||
|
||||
void tearDown(void)
|
||||
{
|
||||
endPutcharSpy(); /* Stop suppressing test output */
|
||||
if (SetToOneToFailInTearDown == 1)
|
||||
{
|
||||
/* These will be skipped internally if already failed/ignored */
|
||||
TEST_FAIL_MESSAGE("<= Failed in tearDown");
|
||||
TEST_IGNORE_MESSAGE("<= Ignored in tearDown");
|
||||
}
|
||||
if ((SetToOneMeanWeAlreadyCheckedThisGuy == 0) && (Unity.CurrentTestFailed > 0))
|
||||
{
|
||||
UnityPrint(": [[[[ Test Should Have Passed But Did Not ]]]]");
|
||||
UNITY_OUTPUT_CHAR('\n');
|
||||
}
|
||||
}
|
||||
|
||||
void testDoublesWithinDelta(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_DOUBLE_WITHIN(0.00003, 187245.03485, 187245.03488);
|
||||
TEST_ASSERT_DOUBLE_WITHIN(1.0, 187245.0, 187246.0);
|
||||
TEST_ASSERT_DOUBLE_WITHIN(0.05, 9273.2549, 9273.2049);
|
||||
TEST_ASSERT_DOUBLE_WITHIN(0.007, -726.93725, -726.94424);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoublesNotWithinDelta(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_DOUBLE_WITHIN(0.05, 9273.2649, 9273.2049);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void testDoublesEqual(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_EQUAL_DOUBLE(187245123456.0, 187245123456.0);
|
||||
TEST_ASSERT_EQUAL_DOUBLE(187241234567.5, 187241234567.6);
|
||||
TEST_ASSERT_EQUAL_DOUBLE(9273.2512345649, 9273.25123455699);
|
||||
TEST_ASSERT_EQUAL_DOUBLE(-726.12345693724, -726.1234569374);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoublesNotEqual(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_DOUBLE(9273.9649, 9273.0049);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoublesNotEqualNegative1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_DOUBLE(-9273.9649, -9273.0049);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoublesNotEqualNegative2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_DOUBLE(-9273.0049, -9273.9649);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoublesNotEqualActualNaN(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_DOUBLE(85.963, 0.0 / d_zero);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoublesNotEqualExpectedNaN(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_DOUBLE(0.0 / d_zero, 85.963);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoublesEqualBothNaN(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_EQUAL_DOUBLE(0.0 / d_zero, 0.0 / d_zero);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoublesNotEqualInfNaN(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_DOUBLE(1.0 / d_zero, 0.0 / d_zero);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoublesNotEqualNaNInf(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_DOUBLE(0.0 / d_zero, 1.0 / d_zero);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoublesNotEqualActualInf(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_DOUBLE(321.642, 1.0 / d_zero);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoublesNotEqualExpectedInf(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_DOUBLE(1.0 / d_zero, 321.642);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoublesEqualBothInf(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_EQUAL_DOUBLE(1.0 / d_zero, 1.0 / d_zero);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoublesNotEqualPlusMinusInf(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_DOUBLE(1.0 / d_zero, -1.0 / d_zero);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoubleIsPosInf1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_DOUBLE_IS_INF(2.0 / d_zero);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoubleIsPosInf2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_DOUBLE_IS_NOT_INF(2.0 / d_zero);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoubleIsNegInf1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_DOUBLE_IS_NEG_INF(-3.0 / d_zero);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoubleIsNegInf2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF(-3.0 / d_zero);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoubleIsNotPosInf1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_DOUBLE_IS_INF(2.0);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoubleIsNotPosInf2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_DOUBLE_IS_NOT_INF(2.0);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoubleIsNotNegInf(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_DOUBLE_IS_NEG_INF(-999.876);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoubleIsNan1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_DOUBLE_IS_NAN(0.0 / d_zero);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoubleIsNan2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_DOUBLE_IS_NOT_NAN(0.0 / d_zero);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoubleIsNotNan1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_DOUBLE_IS_NAN(234.9);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoubleIsNotNan2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_DOUBLE_IS_NOT_NAN(234.9);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoubleInfIsNotNan(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_DOUBLE_IS_NAN(1.0 / d_zero);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoubleNanIsNotInf(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_DOUBLE_IS_INF(0.0 / d_zero);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoubleIsDeterminate1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_DOUBLE_IS_DETERMINATE(0.0);
|
||||
TEST_ASSERT_DOUBLE_IS_DETERMINATE(123.3);
|
||||
TEST_ASSERT_DOUBLE_IS_DETERMINATE(-88.3);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoubleIsDeterminate2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE(-88.3);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoubleIsNotDeterminate1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE(1.0 / d_zero);
|
||||
TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE(-1.0 / d_zero);
|
||||
TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE(0.0 / d_zero);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoubleIsNotDeterminate2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_DOUBLE_IS_DETERMINATE(-1.0 / d_zero);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoubleTraitFailsOnInvalidTrait(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
UnityAssertDoubleSpecial(1.0, NULL, __LINE__, UNITY_FLOAT_INVALID_TRAIT);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testEqualDoubleArrays(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
double p0[] = {1.0, -8.0, 25.4, -0.123};
|
||||
double p1[] = {1.0, -8.0, 25.4, -0.123};
|
||||
double p2[] = {1.0, -8.0, 25.4, -0.2};
|
||||
double p3[] = {1.0, -23.0, 25.0, -0.26};
|
||||
|
||||
TEST_ASSERT_EQUAL_DOUBLE_ARRAY(p0, p0, 1);
|
||||
TEST_ASSERT_EQUAL_DOUBLE_ARRAY(p0, p0, 4);
|
||||
TEST_ASSERT_EQUAL_DOUBLE_ARRAY(p0, p1, 4);
|
||||
TEST_ASSERT_EQUAL_DOUBLE_ARRAY(p0, p2, 3);
|
||||
TEST_ASSERT_EQUAL_DOUBLE_ARRAY(p0, p3, 1);
|
||||
TEST_ASSERT_EQUAL_DOUBLE_ARRAY(NULL, NULL, 1);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualDoubleArraysExpectedNull(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
double* p0 = NULL;
|
||||
double p1[] = {1.0, 8.0, 25.4, 0.252};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_DOUBLE_ARRAY(p0, p1, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualDoubleArraysActualNull(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
double p0[] = {1.0, 8.0, 25.4, 0.253};
|
||||
double* p1 = NULL;
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_DOUBLE_ARRAY(p0, p1, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualDoubleArrays1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
double p0[] = {1.0, 8.0, 25.4, 0.25666666667};
|
||||
double p1[] = {1.0, 8.0, 25.4, 0.25666666666};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_DOUBLE_ARRAY(p0, p1, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualDoubleArrays2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
double p0[] = {1.0, 8.0, 25.4, 0.253};
|
||||
double p1[] = {2.0, 8.0, 25.4, 0.253};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_DOUBLE_ARRAY(p0, p1, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualDoubleArrays3(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
double p0[] = {1.0, 8.0, 25.4, 0.253};
|
||||
double p1[] = {1.0, 8.0, 25.5, 0.253};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_DOUBLE_ARRAY(p0, p1, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualDoubleArraysNegative1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
double p0[] = {-1.0, -8.0, -25.4, -0.2566666667};
|
||||
double p1[] = {-1.0, -8.0, -25.4, -0.2566666666};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_DOUBLE_ARRAY(p0, p1, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualDoubleArraysNegative2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
double p0[] = {-1.0, -8.0, -25.4, -0.253};
|
||||
double p1[] = {-2.0, -8.0, -25.4, -0.253};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_DOUBLE_ARRAY(p0, p1, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualDoubleArraysNegative3(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
double p0[] = {-1.0, -8.0, -25.4, -0.253};
|
||||
double p1[] = {-1.0, -8.0, -25.5, -0.253};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_DOUBLE_ARRAY(p0, p1, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testEqualDoubleArraysNaN(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
double p0[] = {1.0, 0.0 / d_zero, 25.4, 0.253};
|
||||
double p1[] = {1.0, 0.0 / d_zero, 25.4, 0.253};
|
||||
|
||||
TEST_ASSERT_EQUAL_DOUBLE_ARRAY(p0, p1, 4);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testEqualDoubleArraysInf(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
double p0[] = {1.0, 1.0 / d_zero, 25.4, 0.253};
|
||||
double p1[] = {1.0, 1.0 / d_zero, 25.4, 0.253};
|
||||
|
||||
TEST_ASSERT_EQUAL_DOUBLE_ARRAY(p0, p1, 4);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualDoubleArraysLengthZero(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
double p0[1] = {0.0};
|
||||
double p1[1] = {0.0};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_DOUBLE_ARRAY(p0, p1, 0);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testEqualDoubleEachEqual(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
double p0[] = {1.0, 1.0, 1.0, 1.0};
|
||||
double p1[] = {-0.123, -0.123, -0.123, -0.123};
|
||||
double p2[] = {25.4, 25.4, 25.4, -0.2};
|
||||
double p3[] = {1.0, -23.0, 25.0, -0.26};
|
||||
|
||||
TEST_ASSERT_EACH_EQUAL_DOUBLE(1.0, p0, 1);
|
||||
TEST_ASSERT_EACH_EQUAL_DOUBLE(1.0, p0, 4);
|
||||
TEST_ASSERT_EACH_EQUAL_DOUBLE(-0.123, p1, 4);
|
||||
TEST_ASSERT_EACH_EQUAL_DOUBLE(25.4, p2, 3);
|
||||
TEST_ASSERT_EACH_EQUAL_DOUBLE(1.0, p3, 1);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualDoubleEachEqualActualNull(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
double* p0 = NULL;
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EACH_EQUAL_DOUBLE(5, p0, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualDoubleEachEqual1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
double p0[] = {0.253, 8.0, 0.253, 0.253};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EACH_EQUAL_DOUBLE(0.253, p0, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualDoubleEachEqual2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
double p0[] = {8.0, 8.0, 8.0, 0.253};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EACH_EQUAL_DOUBLE(8.0, p0, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualDoubleEachEqual3(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
double p0[] = {1.0, 1.0, 1.0, 0.253};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EACH_EQUAL_DOUBLE(1.0, p0, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualDoubleEachEqualNegative1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
double p0[] = {-1.0, -0.253, -0.253, -0.253};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EACH_EQUAL_DOUBLE(-0.253, p0, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualDoubleEachEqualNegative2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
double p0[] = {-25.4, -8.0, -25.4, -25.4};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EACH_EQUAL_DOUBLE(-25.4, p0, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualDoubleEachEqualNegative3(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
double p0[] = {-8.0, -8.0, -8.0, -0.253};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EACH_EQUAL_DOUBLE(-8.0, p0, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testEqualDoubleEachEqualNaN(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
double p0[] = {0.0 / d_zero, 0.0 / d_zero, 0.0 / d_zero, 0.0 / d_zero};
|
||||
|
||||
TEST_ASSERT_EACH_EQUAL_DOUBLE(0.0 / d_zero, p0, 4);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testEqualDoubleEachEqualInf(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
double p0[] = {1.0 / d_zero, 1.0 / d_zero, 25.4, 0.253};
|
||||
|
||||
TEST_ASSERT_EACH_EQUAL_DOUBLE(1.0 / d_zero, p0, 2);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualDoubleEachEqualLengthZero(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_DOUBLE
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
double p0[1] = {0.0};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EACH_EQUAL_DOUBLE(0.0, p0, 0);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoublePrinting(void)
|
||||
{
|
||||
#if defined(UNITY_EXCLUDE_FLOAT_PRINT) || defined(UNITY_EXCLUDE_DOUBLE) || !defined(USING_OUTPUT_SPY)
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("0", 0.0);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("4.99e-07", 0.000000499);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("5.0000005e-07", 0.00000050000005);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("0.100469499", 0.100469499);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("1", 0.9999999995); /*Rounding to int place*/
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("1", 1.0);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("1.25", 1.25);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("7.99999999", 7.99999999); /*Not rounding*/
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("16.0000002", 16.0000002);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("16.0000004", 16.0000004);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("16.0000006", 16.0000006);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("999999999", 999999999.0); /*Last full print integer*/
|
||||
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("0", -0.0); /* -0 no supported on all targets */
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-4.99e-07", -0.000000499);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-5.0000005e-07", -0.00000050000005);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-0.100469499", -0.100469499);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-1", -0.9999999995); /*Rounding to int place*/
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-1", -1.0);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-1.25", -1.25);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-7.99999999", -7.99999999); /*Not rounding*/
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-16.0000002", -16.0000002);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-16.0000004", -16.0000004);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-16.0000006", -16.0000006);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-999999999", -999999999.0); /*Last full print integer*/
|
||||
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("0.1004695", 0.10046949999999999);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("4.2949673e+09", 4294967295.9);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("4.2949673e+09", 4294967296.0);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("1e+10", 9999999995.0);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("9.00719925e+15", 9007199254740990.0);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("7e+100", 7.0e+100);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("3e+200", 3.0e+200);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("9.23456789e+300", 9.23456789e+300);
|
||||
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-0.1004695", -0.10046949999999999);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-4.2949673e+09", -4294967295.9);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-4.2949673e+09", -4294967296.0);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-7e+100", -7.0e+100);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoublePrintingRoundTiesToEven(void)
|
||||
{
|
||||
#if defined(UNITY_EXCLUDE_FLOAT_PRINT) || defined(UNITY_EXCLUDE_DOUBLE) || !defined(USING_OUTPUT_SPY)
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
#ifdef UNITY_ROUND_TIES_AWAY_FROM_ZERO
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("1.00000001e+10", 10000000050.0);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("9.00719925e+15", 9007199245000000.0);
|
||||
#else /* Default to Round ties to even */
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("1e+10", 10000000050.0);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("9.00719924e+15", 9007199245000000.0);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
void testDoublePrintingInfinityAndNaN(void)
|
||||
{
|
||||
#if defined(UNITY_EXCLUDE_FLOAT_PRINT) || defined(UNITY_EXCLUDE_DOUBLE) || !defined(USING_OUTPUT_SPY)
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("inf", 1.0 / d_zero);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-inf", -1.0 / d_zero);
|
||||
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("nan", 0.0 / d_zero);
|
||||
#endif
|
||||
}
|
||||
886
test/tests/test_unity_floats.c
Normal file
886
test/tests/test_unity_floats.c
Normal file
@@ -0,0 +1,886 @@
|
||||
/* ==========================================
|
||||
Unity Project - A Test Framework for C
|
||||
Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
|
||||
[Released under MIT License. Please refer to license.txt for details]
|
||||
========================================== */
|
||||
|
||||
#include "unity.h"
|
||||
#define TEST_INSTANCES
|
||||
#include "self_assessment_utils.h"
|
||||
|
||||
void setUp(void)
|
||||
{
|
||||
SetToOneToFailInTearDown = 0;
|
||||
SetToOneMeanWeAlreadyCheckedThisGuy = 0;
|
||||
}
|
||||
|
||||
void tearDown(void)
|
||||
{
|
||||
endPutcharSpy(); /* Stop suppressing test output */
|
||||
if (SetToOneToFailInTearDown == 1)
|
||||
{
|
||||
/* These will be skipped internally if already failed/ignored */
|
||||
TEST_FAIL_MESSAGE("<= Failed in tearDown");
|
||||
TEST_IGNORE_MESSAGE("<= Ignored in tearDown");
|
||||
}
|
||||
if ((SetToOneMeanWeAlreadyCheckedThisGuy == 0) && (Unity.CurrentTestFailed > 0))
|
||||
{
|
||||
UnityPrint(": [[[[ Test Should Have Passed But Did Not ]]]]");
|
||||
UNITY_OUTPUT_CHAR('\n');
|
||||
}
|
||||
}
|
||||
|
||||
void testFloatsWithinDelta(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_FLOAT_WITHIN(0.00003f, 187245.03485f, 187245.03488f);
|
||||
TEST_ASSERT_FLOAT_WITHIN(1.0f, 187245.0f, 187246.0f);
|
||||
TEST_ASSERT_FLOAT_WITHIN(0.05f, 9273.2549f, 9273.2049f);
|
||||
TEST_ASSERT_FLOAT_WITHIN(0.007f, -726.93724f, -726.94424f);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatsNotWithinDelta(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_FLOAT_WITHIN(0.05f, 9273.2649f, 9273.2049f);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatsEqual(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_EQUAL_FLOAT(187245.0f, 187246.0f);
|
||||
TEST_ASSERT_EQUAL_FLOAT(18724.5f, 18724.6f);
|
||||
TEST_ASSERT_EQUAL_FLOAT(9273.2549f, 9273.2599f);
|
||||
TEST_ASSERT_EQUAL_FLOAT(-726.93724f, -726.9374f);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatsNotEqual(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_FLOAT(9273.9649f, 9273.0049f);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatsNotEqualNegative1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_FLOAT(-9273.9649f, -9273.0049f);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatsNotEqualNegative2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_FLOAT(-9273.0049f, -9273.9649f);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatsNotEqualActualNaN(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_FLOAT(85.963f, 0.0f / f_zero);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatsNotEqualExpectedNaN(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_FLOAT(0.0f / f_zero, 85.963f);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatsEqualBothNaN(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_EQUAL_FLOAT(0.0f / f_zero, 0.0f / f_zero);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatsNotEqualInfNaN(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_FLOAT(1.0f / f_zero, 0.0f / f_zero);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatsNotEqualNaNInf(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_FLOAT(0.0f / f_zero, 1.0f / f_zero);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatsNotEqualActualInf(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_FLOAT(321.642f, 1.0f / f_zero);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatsNotEqualExpectedInf(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_FLOAT(1.0f / f_zero, 321.642f);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatsEqualBothInf(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_EQUAL_FLOAT(1.0f / f_zero, 1.0f / f_zero);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatsNotEqualPlusMinusInf(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_FLOAT(1.0f / f_zero, -1.0f / f_zero);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatIsPosInf1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_FLOAT_IS_INF(2.0f / f_zero);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatIsPosInf2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_FLOAT_IS_NOT_INF(2.0f / f_zero);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatIsNegInf1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_FLOAT_IS_NEG_INF(-3.0f / f_zero);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatIsNegInf2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_FLOAT_IS_NOT_NEG_INF(-3.0f / f_zero);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatIsNotPosInf1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_FLOAT_IS_INF(2.0f);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatIsNotPosInf2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_FLOAT_IS_NOT_INF(2.0f);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatIsNotNegInf(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_FLOAT_IS_NEG_INF(-999.876f);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatIsNan1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_FLOAT_IS_NAN(0.0f / f_zero);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatIsNan2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_FLOAT_IS_NOT_NAN(0.0f / f_zero);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatIsNotNan1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_FLOAT_IS_NAN(234.9f);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatIsNotNan2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_FLOAT_IS_NOT_NAN(234.9f);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatInfIsNotNan(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_FLOAT_IS_NAN(1.0f / f_zero);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatNanIsNotInf(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_FLOAT_IS_INF(0.0f / f_zero);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatIsDeterminate1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_FLOAT_IS_DETERMINATE(0.0f);
|
||||
TEST_ASSERT_FLOAT_IS_DETERMINATE(123.3f);
|
||||
TEST_ASSERT_FLOAT_IS_DETERMINATE(-88.3f);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatIsDeterminate2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(-88.3f);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatIsNotDeterminate1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(1.0f / f_zero);
|
||||
TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(-1.0f / f_zero);
|
||||
TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(0.0f / f_zero);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatIsNotDeterminate2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_FLOAT_IS_DETERMINATE(-1.0f / f_zero);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatTraitFailsOnInvalidTrait(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
UnityAssertFloatSpecial(1.0f, NULL, __LINE__, UNITY_FLOAT_INVALID_TRAIT);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testEqualFloatArrays(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
float p0[] = {1.0f, -8.0f, 25.4f, -0.123f};
|
||||
float p1[] = {1.0f, -8.0f, 25.4f, -0.123f};
|
||||
float p2[] = {1.0f, -8.0f, 25.4f, -0.2f};
|
||||
float p3[] = {1.0f, -23.0f, 25.0f, -0.26f};
|
||||
|
||||
TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p0, 1);
|
||||
TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p0, 4);
|
||||
TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
|
||||
TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p2, 3);
|
||||
TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p3, 1);
|
||||
TEST_ASSERT_EQUAL_FLOAT_ARRAY(NULL, NULL, 1);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualFloatArraysExpectedNull(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
float* p0 = NULL;
|
||||
float p1[] = {1.0f, 8.0f, 25.4f, 0.252f};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualFloatArraysActualNull(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
float p0[] = {1.0f, 8.0f, 25.4f, 0.253f};
|
||||
float* p1 = NULL;
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualFloatArrays1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
float p0[] = {1.0f, 8.0f, 25.4f, 0.253f};
|
||||
float p1[] = {1.0f, 8.0f, 25.4f, 0.252f};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualFloatArrays2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
float p0[] = {1.0f, 8.0f, 25.4f, 0.253f};
|
||||
float p1[] = {2.0f, 8.0f, 25.4f, 0.253f};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualFloatArrays3(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
float p0[] = {1.0f, 8.0f, 25.4f, 0.253f};
|
||||
float p1[] = {1.0f, 8.0f, 25.5f, 0.253f};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualFloatArraysNegative1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
float p0[] = {-1.0f, -8.0f, -25.4f, -0.253f};
|
||||
float p1[] = {-1.0f, -8.0f, -25.4f, -0.252f};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualFloatArraysNegative2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
float p0[] = {-1.0f, -8.0f, -25.4f, -0.253f};
|
||||
float p1[] = {-2.0f, -8.0f, -25.4f, -0.253f};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualFloatArraysNegative3(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
float p0[] = {-1.0f, -8.0f, -25.4f, -0.253f};
|
||||
float p1[] = {-1.0f, -8.0f, -25.5f, -0.253f};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testEqualFloatArraysNaN(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
float p0[] = {1.0f, 0.0f / f_zero, 25.4f, 0.253f};
|
||||
float p1[] = {1.0f, 0.0f / f_zero, 25.4f, 0.253f};
|
||||
|
||||
TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testEqualFloatArraysInf(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
float p0[] = {1.0f, 1.0f / f_zero, 25.4f, 0.253f};
|
||||
float p1[] = {1.0f, 1.0f / f_zero, 25.4f, 0.253f};
|
||||
|
||||
TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 4);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualFloatArraysLengthZero(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
float p0[1] = {0.0f};
|
||||
float p1[1] = {0.0f};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_FLOAT_ARRAY(p0, p1, 0);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testEqualFloatEachEqual(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
float p0[] = {1.0f, 1.0f, 1.0f, 1.0f};
|
||||
float p1[] = {-0.123f, -0.123f, -0.123f, -0.123f};
|
||||
float p2[] = {25.4f, 25.4f, 25.4f, -0.2f};
|
||||
float p3[] = {1.0f, -23.0f, 25.0f, -0.26f};
|
||||
|
||||
TEST_ASSERT_EACH_EQUAL_FLOAT(1.0f, p0, 1);
|
||||
TEST_ASSERT_EACH_EQUAL_FLOAT(1.0f, p0, 4);
|
||||
TEST_ASSERT_EACH_EQUAL_FLOAT(-0.123f, p1, 4);
|
||||
TEST_ASSERT_EACH_EQUAL_FLOAT(25.4f, p2, 3);
|
||||
TEST_ASSERT_EACH_EQUAL_FLOAT(1.0f, p3, 1);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualFloatEachEqualActualNull(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
float* p0 = NULL;
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EACH_EQUAL_FLOAT(5, p0, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualFloatEachEqual1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
float p0[] = {0.253f, 8.0f, 0.253f, 0.253f};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EACH_EQUAL_FLOAT(0.253f, p0, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualFloatEachEqual2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
float p0[] = {8.0f, 8.0f, 8.0f, 0.253f};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EACH_EQUAL_FLOAT(8.0f, p0, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualFloatEachEqual3(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
float p0[] = {1.0f, 1.0f, 1.0f, 0.253f};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EACH_EQUAL_FLOAT(1.0f, p0, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualFloatEachEqualNegative1(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
float p0[] = {-1.0f, -0.253f, -0.253f, -0.253f};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EACH_EQUAL_FLOAT(-0.253f, p0, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualFloatEachEqualNegative2(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
float p0[] = {-25.4f, -8.0f, -25.4f, -25.4f};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EACH_EQUAL_FLOAT(-25.4f, p0, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualFloatEachEqualNegative3(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
float p0[] = {-8.0f, -8.0f, -8.0f, -0.253f};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EACH_EQUAL_FLOAT(-8.0f, p0, 4);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testEqualFloatEachEqualNaN(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
float p0[] = {0.0f / f_zero, 0.0f / f_zero, 0.0f / f_zero, 0.0f / f_zero};
|
||||
|
||||
TEST_ASSERT_EACH_EQUAL_FLOAT(0.0f / f_zero, p0, 4);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testEqualFloatEachEqualInf(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
float p0[] = {1.0f / f_zero, 1.0f / f_zero, 25.4f, 0.253f};
|
||||
|
||||
TEST_ASSERT_EACH_EQUAL_FLOAT(1.0f / f_zero, p0, 2);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualFloatEachEqualLengthZero(void)
|
||||
{
|
||||
#ifdef UNITY_EXCLUDE_FLOAT
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
float p0[1] = {0.0f};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EACH_EQUAL_FLOAT(0.0f, p0, 0);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
#define TEST_ASSERT_EQUAL_PRINT_FLOATING(expected, actual) { \
|
||||
startPutcharSpy(); UnityPrintFloat((actual)); endPutcharSpy(); \
|
||||
TEST_ASSERT_EQUAL_STRING((expected), getBufferPutcharSpy()); \
|
||||
}
|
||||
|
||||
void testFloatPrinting(void)
|
||||
{
|
||||
#if defined(UNITY_EXCLUDE_FLOAT_PRINT) || defined(UNITY_INCLUDE_DOUBLE) || !defined(USING_OUTPUT_SPY)
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("0", 0.0f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("4.99e-07", 0.000000499f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("0.1004695", 0.100469499f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("2", 1.9999995f); /*Rounding to int place*/
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("1", 1.0f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("1.25", 1.25f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("7.999999", 7.999999f); /*Not rounding*/
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("16.00002", 16.00002f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("16.00004", 16.00004f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("16.00006", 16.00006f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("9999999", 9999999.0f); /*Last full print integer*/
|
||||
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-0", -0.0f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-4.99e-07", -0.000000499f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-0.1004695", -0.100469499f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-2", -1.9999995f); /*Rounding to int place*/
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-1", -1.0f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-1.25", -1.25f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-7.999999", -7.999999f); /*Not rounding*/
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-16.00002", -16.00002f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-16.00004", -16.00004f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-16.00006", -16.00006f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-9999999", -9999999.0f); /*Last full print integer*/
|
||||
|
||||
/* Fails, prints "4.294968e+09" due to FP math imprecision
|
||||
* TEST_ASSERT_EQUAL_PRINT_FLOATING("4.294967e+09", 4294967296.0f); */
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("5e+09", 5000000000.0f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("8e+09", 8.0e+09f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("8.309999e+09", 8309999104.0f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("1e+10", 1.0e+10f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("1e+10", 10000000000.0f);
|
||||
/* Some compilers have trouble with inexact float constants, a float cast works generally */
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("1.000055e+10", (float)1.000055e+10f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("1.1e+38", (float)1.10000005e+38f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("1.635299e+10", 1.63529943e+10f);
|
||||
/* Fails, prints "3.402824e+38" due to FP math imprecision
|
||||
* TEST_ASSERT_EQUAL_PRINT_FLOATING("3.402823e+38", 3.40282346638e38f); */
|
||||
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-1e+10", -1.0e+10f);
|
||||
/* Fails, prints "-3.402824e+38" due to FP math imprecision
|
||||
* TEST_ASSERT_EQUAL_PRINT_FLOATING("-3.402823e+38", -3.40282346638e38f); */
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatPrintingRoundTiesToEven(void)
|
||||
{
|
||||
#if defined(UNITY_EXCLUDE_FLOAT_PRINT) || defined(UNITY_INCLUDE_DOUBLE) || !defined(USING_OUTPUT_SPY)
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
#ifdef UNITY_ROUND_TIES_AWAY_FROM_ZERO
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("0.0004882813", 0.00048828125f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("488281.3", 488281.25f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("5.000001e-07", 0.00000050000005f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-5.000001e-07", -0.00000050000005f);
|
||||
#else /* Default to Round ties to even */
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("0.0004882812", 0.00048828125f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("488281.2", 488281.25f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("5e-07", 0.00000050000005f);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-5e-07", -0.00000050000005f);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
void testFloatPrintingInfinityAndNaN(void)
|
||||
{
|
||||
#if defined(UNITY_EXCLUDE_FLOAT_PRINT) || !defined(USING_OUTPUT_SPY)
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("inf", 1.0f / f_zero);
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("-inf", -1.0f / f_zero);
|
||||
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING("nan", 0.0f / f_zero);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(UNITY_TEST_ALL_FLOATS_PRINT_OK) && defined(USING_OUTPUT_SPY)
|
||||
#ifdef UNITY_INCLUDE_DOUBLE
|
||||
static void printFloatValue(float f)
|
||||
{
|
||||
char expected[18];
|
||||
|
||||
startPutcharSpy();
|
||||
UnityPrintFloat(f);
|
||||
|
||||
sprintf(expected, "%.9g", f);
|
||||
/* We print all NaN's as "nan", not "-nan" */
|
||||
if (strcmp(expected, "-nan") == 0) strcpy(expected, "nan");
|
||||
|
||||
if (strcmp(expected, getBufferPutcharSpy()))
|
||||
{
|
||||
/* Fail with diagnostic printing */
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING(expected, f);
|
||||
}
|
||||
}
|
||||
#else
|
||||
static void printFloatValue(float f)
|
||||
{
|
||||
char expected[18];
|
||||
char expected_lower[18];
|
||||
char expected_lower2[18];
|
||||
char expected_lower3[18];
|
||||
char expected_higher[18];
|
||||
char expected_higher2[18];
|
||||
char expected_higher3[18];
|
||||
|
||||
startPutcharSpy();
|
||||
UnityPrintFloat(f);
|
||||
|
||||
sprintf(expected, "%.7g", f);
|
||||
/* We print all NaN's as "nan", not "-nan" */
|
||||
if (strcmp(expected, "-nan") == 0) strcpy(expected, "nan");
|
||||
|
||||
strcpy(expected_lower, expected);
|
||||
strcpy(expected_lower2, expected);
|
||||
strcpy(expected_lower3, expected);
|
||||
strcpy(expected_higher, expected);
|
||||
strcpy(expected_higher2, expected);
|
||||
strcpy(expected_higher3, expected);
|
||||
|
||||
/* Allow for rounding differences in the last digit */
|
||||
double lower = (double)f * 0.99999995;
|
||||
double higher = (double)f * 1.00000005;
|
||||
|
||||
if(isfinite(lower)) sprintf(expected_lower, "%.7g", lower);
|
||||
if(isfinite(higher)) sprintf(expected_higher, "%.7g", higher);
|
||||
|
||||
/* Outside [1,10000000] allow for relative error of +/-2.5e-7 */
|
||||
if (f < 1.0 || f > 10000000)
|
||||
{
|
||||
double lower2 = (double)f * 0.99999985;
|
||||
double lower3 = (double)f * 0.99999975;
|
||||
double higher2 = (double)f * 1.00000015;
|
||||
double higher3 = (double)f * 1.00000025;
|
||||
|
||||
if (isfinite(lower2)) sprintf(expected_lower2, "%.7g", lower2);
|
||||
if (isfinite(lower3)) sprintf(expected_lower3, "%.7g", lower3);
|
||||
if (isfinite(higher2)) sprintf(expected_higher2, "%.7g", higher2);
|
||||
if (isfinite(higher3)) sprintf(expected_higher3, "%.7g", higher3);
|
||||
}
|
||||
|
||||
if (strcmp(expected, getBufferPutcharSpy()) != 0 &&
|
||||
strcmp(expected_lower, getBufferPutcharSpy()) != 0 &&
|
||||
strcmp(expected_lower2, getBufferPutcharSpy()) != 0 &&
|
||||
strcmp(expected_lower3, getBufferPutcharSpy()) != 0 &&
|
||||
strcmp(expected_higher, getBufferPutcharSpy()) != 0 &&
|
||||
strcmp(expected_higher2, getBufferPutcharSpy()) != 0 &&
|
||||
strcmp(expected_higher3, getBufferPutcharSpy()) != 0)
|
||||
{
|
||||
/* Fail with diagnostic printing */
|
||||
TEST_ASSERT_EQUAL_PRINT_FLOATING(expected, f);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
void testFloatPrintingRandomSamples(void)
|
||||
{
|
||||
#if !defined(UNITY_TEST_ALL_FLOATS_PRINT_OK) || !defined(USING_OUTPUT_SPY)
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
union { float f_value; uint32_t int_value; } u;
|
||||
|
||||
/* These values are not covered by the MINSTD generator */
|
||||
u.int_value = 0x00000000; printFloatValue(u.f_value);
|
||||
u.int_value = 0x80000000; printFloatValue(u.f_value);
|
||||
u.int_value = 0x7fffffff; printFloatValue(u.f_value);
|
||||
u.int_value = 0xffffffff; printFloatValue(u.f_value);
|
||||
|
||||
uint32_t a = 1;
|
||||
for(int num_tested = 0; num_tested < 1000000; num_tested++)
|
||||
{
|
||||
/* MINSTD pseudo-random number generator */
|
||||
a = (uint32_t)(((uint64_t)a * 48271u) % 2147483647u);
|
||||
|
||||
/* MINSTD does not set the highest bit; test both possibilities */
|
||||
u.int_value = a; printFloatValue(u.f_value);
|
||||
u.int_value = a | 0x80000000; printFloatValue(u.f_value);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
2854
test/tests/test_unity_integers.c
Normal file
2854
test/tests/test_unity_integers.c
Normal file
File diff suppressed because it is too large
Load Diff
770
test/tests/test_unity_integers_64.c
Normal file
770
test/tests/test_unity_integers_64.c
Normal file
@@ -0,0 +1,770 @@
|
||||
/* ==========================================
|
||||
Unity Project - A Test Framework for C
|
||||
Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
|
||||
[Released under MIT License. Please refer to license.txt for details]
|
||||
========================================== */
|
||||
|
||||
#include "unity.h"
|
||||
#define TEST_INSTANCES
|
||||
#include "self_assessment_utils.h"
|
||||
|
||||
void setUp(void)
|
||||
{
|
||||
SetToOneToFailInTearDown = 0;
|
||||
SetToOneMeanWeAlreadyCheckedThisGuy = 0;
|
||||
}
|
||||
|
||||
void tearDown(void)
|
||||
{
|
||||
endPutcharSpy(); /* Stop suppressing test output */
|
||||
if (SetToOneToFailInTearDown == 1)
|
||||
{
|
||||
/* These will be skipped internally if already failed/ignored */
|
||||
TEST_FAIL_MESSAGE("<= Failed in tearDown");
|
||||
TEST_IGNORE_MESSAGE("<= Ignored in tearDown");
|
||||
}
|
||||
if ((SetToOneMeanWeAlreadyCheckedThisGuy == 0) && (Unity.CurrentTestFailed > 0))
|
||||
{
|
||||
UnityPrint(": [[[[ Test Should Have Passed But Did Not ]]]]");
|
||||
UNITY_OUTPUT_CHAR('\n');
|
||||
}
|
||||
}
|
||||
|
||||
void testInt64ArrayWithinDelta(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_INT64 expected[] = {12345000, -12344995, 12345005};
|
||||
UNITY_INT64 actualSmallDelta[] = {12345001, -12344996, 12345005};
|
||||
UNITY_INT64 actualBigDelta[] = {12345101, -12344896, 12345055};
|
||||
|
||||
TEST_ASSERT_INT64_ARRAY_WITHIN(1, expected, actualSmallDelta, 3);
|
||||
TEST_ASSERT_INT64_ARRAY_WITHIN(110, expected, actualBigDelta, 3);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testInt64ArrayWithinDeltaAndMessage(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_INT64 expected[] = {12345000, -12344995, 12345005};
|
||||
UNITY_INT64 actualSmallDelta[] = {12345001, -12344996, 12345005};
|
||||
UNITY_INT64 actualBigDelta[] = {12345101, -12344896, 12345055};
|
||||
|
||||
TEST_ASSERT_INT64_ARRAY_WITHIN_MESSAGE(1, expected, actualSmallDelta, 3, "Custom Message.");
|
||||
TEST_ASSERT_INT64_ARRAY_WITHIN_MESSAGE(110, expected, actualBigDelta, 3, "Custom Message.");
|
||||
#endif
|
||||
}
|
||||
|
||||
void tesUInt64ArrayNotWithinDelta(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_INT64 expected[] = {12345000, -12344995, 12345005};
|
||||
UNITY_INT64 actualBigDelta[] = {12345101, -12344896, 12345055};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_UINT64_ARRAY_WITHIN(1, expected, actualBigDelta, 3);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testInt64ArrayNotWithinDeltaAndMessage(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_INT64 expected[] = {12345000, -12344995, 12345005};
|
||||
UNITY_INT64 actualBigDelta[] = {12345101, -12344896, 12345055};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_INT64_ARRAY_WITHIN_MESSAGE(1, expected, actualBigDelta, 3, "Custom Message.");
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testInt64ArrayWithinDeltaPointless(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_INT64 expected[] = {12345000, -12344995, 12345005};
|
||||
UNITY_INT64 actualBigDelta[] = {12345101, -12344896, 12345055};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_INT64_ARRAY_WITHIN(110, expected, actualBigDelta, 0);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testInt64ArrayWithinDeltaPointlessAndMessage(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_INT64 expected[] = {12345000, -12344995, 12345005};
|
||||
UNITY_INT64 actualBigDelta[] = {12345101, -12344896, 12345055};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_INT64_ARRAY_WITHIN_MESSAGE(110, expected, actualBigDelta, 0, "Custom Message.");
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testInt64ArrayWithinDeltaExpectedNull(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_INT64 actualBigDelta[] = {12345101, -12344896, 12345055};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_INT64_ARRAY_WITHIN(110, NULL, actualBigDelta, 3);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testInt64ArrayWithinDeltaExpectedNullAndMessage(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_INT64 actualBigDelta[] = {12345101, -12344896, 12345055};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_INT64_ARRAY_WITHIN_MESSAGE(110, NULL, actualBigDelta, 3, "Custom Message.");
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testInt64ArrayWithinDeltaActualNull(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_INT64 expected[] = {12345000, -12344995, 12345005};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_INT64_ARRAY_WITHIN(110, expected, NULL, 3);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testInt64ArrayWithinDeltaActualNullAndMessage(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_INT64 expected[] = {12345000, -12344995, 12345005};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_INT64_ARRAY_WITHIN_MESSAGE(110, expected, NULL, 3, "Custom Message.");
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testInt64ArrayWithinDeltaSamePointer(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_INT64 expected[] = {12345000, -12344995, 12345005};
|
||||
|
||||
TEST_ASSERT_UINT64_ARRAY_WITHIN(110, expected, expected, 3);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testInt64ArrayWithinDeltaSamePointerAndMessage(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_INT64 expected[] = {12345000, -12344995, 12345005};
|
||||
|
||||
TEST_ASSERT_INT64_ARRAY_WITHIN_MESSAGE(110, expected, expected, 3, "Custom Message.");
|
||||
#endif
|
||||
}
|
||||
|
||||
void testUInt64ArrayWithinDelta(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 expected[] = {12345000, 12344995, 12345005};
|
||||
UNITY_UINT64 actualSmallDelta[] = {12345001, 12344996, 12345005};
|
||||
UNITY_UINT64 actualBigDelta[] = {12345101, 12344896, 12345055};
|
||||
|
||||
TEST_ASSERT_UINT64_ARRAY_WITHIN(1, expected, actualSmallDelta, 3);
|
||||
TEST_ASSERT_UINT64_ARRAY_WITHIN(110, expected, actualBigDelta, 3);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testUInt64ArrayWithinDeltaAndMessage(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 expected[] = {12345000, 12344995, 12345005};
|
||||
UNITY_UINT64 actualSmallDelta[] = {12345001, 12344996, 12345005};
|
||||
UNITY_UINT64 actualBigDelta[] = {12345101, 12344896, 12345055};
|
||||
|
||||
TEST_ASSERT_UINT64_ARRAY_WITHIN_MESSAGE(1, expected, actualSmallDelta, 3, "Custom Message.");
|
||||
TEST_ASSERT_UINT64_ARRAY_WITHIN_MESSAGE(110, expected, actualBigDelta, 3, "Custom Message.");
|
||||
#endif
|
||||
}
|
||||
|
||||
void testUInt64ArrayNotWithinDelta(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 expected[] = {12345000, 12344995, 12345005};
|
||||
UNITY_UINT64 actualBigDelta[] = {12345101, 12344896, 12345055};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_UINT64_ARRAY_WITHIN(1, expected, actualBigDelta, 3);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testUInt64ArrayNotWithinDeltaAndMessage(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 expected[] = {12345000, 12344995, 12345005};
|
||||
UNITY_UINT64 actualBigDelta[] = {12345101, 12344896, 12345055};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_UINT64_ARRAY_WITHIN_MESSAGE(1, expected, actualBigDelta, 3, "Custom Message.");
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testUInt64ArrayWithinDeltaPointless(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 expected[] = {12345000, 12344995, 12345005};
|
||||
UNITY_UINT64 actualBigDelta[] = {12345101, 12344896, 12345055};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_UINT64_ARRAY_WITHIN(110, expected, actualBigDelta, 0);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testUInt64ArrayWithinDeltaPointlessAndMessage(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 expected[] = {12345000, 12344995, 12345005};
|
||||
UNITY_UINT64 actualBigDelta[] = {12345101, 12344896, 12345055};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_UINT64_ARRAY_WITHIN_MESSAGE(110, expected, actualBigDelta, 0, "Custom Message.");
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testUInt64ArrayWithinDeltaExpectedNull(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 actualBigDelta[] = {12345101, 12344896, 12345055};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_UINT64_ARRAY_WITHIN(110, NULL, actualBigDelta, 3);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testUInt64ArrayWithinDeltaExpectedNullAndMessage(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 actualBigDelta[] = {12345101, 12344896, 12345055};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_UINT64_ARRAY_WITHIN_MESSAGE(110, NULL, actualBigDelta, 3, "Custom Message.");
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testUInt64ArrayWithinDeltaActualNull(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 expected[] = {12345000, 12344995, 12345005};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_UINT64_ARRAY_WITHIN(110, expected, NULL, 3);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testUInt64ArrayWithinDeltaActualNullAndMessage(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 expected[] = {12345000, 12344995, 12345005};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_UINT64_ARRAY_WITHIN_MESSAGE(110, expected, NULL, 3, "Custom Message.");
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testUInt64ArrayWithinDeltaSamePointer(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 expected[] = {12345000, 12344995, 12345005};
|
||||
|
||||
TEST_ASSERT_UINT64_ARRAY_WITHIN(110, expected, expected, 3);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testUInt64ArrayWithinDeltaSamePointerAndMessage(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 expected[] = {12345000, 12344995, 12345005};
|
||||
|
||||
TEST_ASSERT_UINT64_ARRAY_WITHIN_MESSAGE(110, expected, expected, 3, "Custom Message.");
|
||||
#endif
|
||||
}
|
||||
|
||||
void testHEX64ArrayWithinDelta(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 expected[] = {0xABCD123400000000, 0xABCD112200000000, 0xABCD127700000000};
|
||||
UNITY_UINT64 actualSmallDelta[] = {0xABCD123500000000, 0xABCD112100000000, 0xABCD127700000000};
|
||||
UNITY_UINT64 actualBigDelta[] = {0xABCD126700000000, 0xABCD118800000000, 0xABCD12AC00000000};
|
||||
|
||||
TEST_ASSERT_HEX64_ARRAY_WITHIN(0x100000000, expected, actualSmallDelta, 3);
|
||||
TEST_ASSERT_HEX64_ARRAY_WITHIN(0x6E00000000, expected, actualBigDelta, 3);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testHEX64ArrayWithinDeltaAndMessage(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 expected[] = {0xABCD123400000000, 0xABCD112200000000, 0xABCD127700000000};
|
||||
UNITY_UINT64 actualSmallDelta[] = {0xABCD123500000000, 0xABCD112100000000, 0xABCD127700000000};
|
||||
UNITY_UINT64 actualBigDelta[] = {0xABCD126700000000, 0xABCD118800000000, 0xABCD12AC00000000};
|
||||
|
||||
TEST_ASSERT_HEX64_ARRAY_WITHIN_MESSAGE(0x100000000, expected, actualSmallDelta, 3, "Custom Message.");
|
||||
TEST_ASSERT_HEX64_ARRAY_WITHIN_MESSAGE(0x6E00000000, expected, actualBigDelta, 3, "Custom Message.");
|
||||
#endif
|
||||
}
|
||||
|
||||
void testHEX64ArrayNotWithinDelta(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 expected[] = {0xABCD123400000000, 0xABCD112200000000, 0xABCD127700000000};
|
||||
UNITY_UINT64 actualBigDelta[] = {0xABCD126700000000, 0xABCD118800000000, 0xABCD12AC00000000};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_HEX64_ARRAY_WITHIN(0x100000000, expected, actualBigDelta, 3);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testHEX64ArrayNotWithinDeltaAndMessage(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 expected[] = {0xABCD123400000000, 0xABCD112200000000, 0xABCD127700000000};
|
||||
UNITY_UINT64 actualBigDelta[] = {0xABCD126700000000, 0xABCD118800000000, 0xABCD12AC00000000};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_HEX64_ARRAY_WITHIN_MESSAGE(0x100000000, expected, actualBigDelta, 3, "Custom Message.");
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testHEX64ArrayWithinDeltaPointless(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 expected[] = {0xABCD123400000000, 0xABCD112200000000, 0xABCD127700000000};
|
||||
UNITY_UINT64 actualBigDelta[] = {0xABCD126700000000, 0xABCD118800000000, 0xABCD12AC00000000};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_HEX64_ARRAY_WITHIN(0x6E00000000, expected, actualBigDelta, 0);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testHEX64ArrayWithinDeltaPointlessAndMessage(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 expected[] = {0xABCD123400000000, 0xABCD112200000000, 0xABCD127700000000};
|
||||
UNITY_UINT64 actualBigDelta[] = {0xABCD126700000000, 0xABCD118800000000, 0xABCD12AC00000000};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_HEX64_ARRAY_WITHIN_MESSAGE(0x6E00000000, expected, actualBigDelta, 0, "Custom Message.");
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testHEX64ArrayWithinDeltaExpectedNull(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 actualBigDelta[] = {0xABCD126700000000, 0xABCD118800000000, 0xABCD12AC00000000};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_HEX64_ARRAY_WITHIN(0x6E00000000, NULL, actualBigDelta, 3);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testHEX64ArrayWithinDeltaExpectedNullAndMessage(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 actualBigDelta[] = {0xABCD126700000000, 0xABCD118800000000, 0xABCD12AC00000000};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_HEX64_ARRAY_WITHIN_MESSAGE(0x6E00000000, NULL, actualBigDelta, 3, "Custom Message.");
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testHEX64ArrayWithinDeltaActualNull(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 expected[] = {0xABCD123400000000, 0xABCD112200000000, 0xABCD127700000000};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_HEX64_ARRAY_WITHIN(0x6E00000000, expected, NULL, 3);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testHEX64ArrayWithinDeltaActualNullAndMessage(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 expected[] = {0xABCD123400000000, 0xABCD112200000000, 0xABCD127700000000};
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_HEX64_ARRAY_WITHIN_MESSAGE(0x6E00000000, expected, NULL, 3, "Custom Message.");
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testHEX64ArrayWithinDeltaSamePointer(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 expected[] = {0xABCD123400000000, 0xABCD112200000000, 0xABCD127700000000};
|
||||
|
||||
TEST_ASSERT_HEX64_ARRAY_WITHIN(0x6E00000000, expected, expected, 3);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testHEX64ArrayWithinDeltaSamePointerAndMessage(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 expected[] = {0xABCD123400000000, 0xABCD112200000000, 0xABCD127700000000};
|
||||
|
||||
TEST_ASSERT_HEX64_ARRAY_WITHIN_MESSAGE(0x6E00000000, expected, expected, 3, "Custom Message.");
|
||||
#endif
|
||||
}
|
||||
|
||||
void testEqualHex64s(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 v0, v1;
|
||||
UNITY_UINT64 *p0, *p1;
|
||||
|
||||
v0 = 0x9876543201234567;
|
||||
v1 = 0x9876543201234567;
|
||||
p0 = &v0;
|
||||
p1 = &v1;
|
||||
|
||||
TEST_ASSERT_EQUAL_HEX64(0x9876543201234567, 0x9876543201234567);
|
||||
TEST_ASSERT_EQUAL_HEX64(v0, v1);
|
||||
TEST_ASSERT_EQUAL_HEX64(0x9876543201234567, v1);
|
||||
TEST_ASSERT_EQUAL_HEX64(v0, 0x9876543201234567);
|
||||
TEST_ASSERT_EQUAL_HEX64(*p0, v1);
|
||||
TEST_ASSERT_EQUAL_HEX64(*p0, *p1);
|
||||
TEST_ASSERT_EQUAL_HEX64(*p0, 0x9876543201234567);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testEqualUint64s(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 v0, v1;
|
||||
UNITY_UINT64 *p0, *p1;
|
||||
|
||||
v0 = 0x9876543201234567;
|
||||
v1 = 0x9876543201234567;
|
||||
p0 = &v0;
|
||||
p1 = &v1;
|
||||
|
||||
TEST_ASSERT_EQUAL_UINT64(0x9876543201234567, 0x9876543201234567);
|
||||
TEST_ASSERT_EQUAL_UINT64(v0, v1);
|
||||
TEST_ASSERT_EQUAL_UINT64(0x9876543201234567, v1);
|
||||
TEST_ASSERT_EQUAL_UINT64(v0, 0x9876543201234567);
|
||||
TEST_ASSERT_EQUAL_UINT64(*p0, v1);
|
||||
TEST_ASSERT_EQUAL_UINT64(*p0, *p1);
|
||||
TEST_ASSERT_EQUAL_UINT64(*p0, 0x9876543201234567);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testEqualInt64s(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_INT64 v0, v1;
|
||||
UNITY_INT64 *p0, *p1;
|
||||
|
||||
v0 = (UNITY_INT64)0x9876543201234567;
|
||||
v1 = (UNITY_INT64)0x9876543201234567;
|
||||
p0 = &v0;
|
||||
p1 = &v1;
|
||||
|
||||
TEST_ASSERT_EQUAL_INT64(0x9876543201234567, 0x9876543201234567);
|
||||
TEST_ASSERT_EQUAL_INT64(v0, v1);
|
||||
TEST_ASSERT_EQUAL_INT64(0x9876543201234567, v1);
|
||||
TEST_ASSERT_EQUAL_INT64(v0, 0x9876543201234567);
|
||||
TEST_ASSERT_EQUAL_INT64(*p0, v1);
|
||||
TEST_ASSERT_EQUAL_INT64(*p0, *p1);
|
||||
TEST_ASSERT_EQUAL_INT64(*p0, 0x9876543201234567);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void testNotEqualHex64s(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 v0, v1;
|
||||
|
||||
v0 = 9000000000;
|
||||
v1 = 9100000000;
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_HEX64(v0, v1);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualUint64s(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_UINT64 v0, v1;
|
||||
|
||||
v0 = 9000000000;
|
||||
v1 = 9100000000;
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_UINT64(v0, v1);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualInt64s(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_INT64 v0, v1;
|
||||
|
||||
v0 = -9000000000;
|
||||
v1 = 9100000000;
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_INT64(v0, v1);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testNotEqualHex64sIfSigned(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
UNITY_INT64 v0, v1;
|
||||
|
||||
v0 = -9000000000;
|
||||
v1 = 9000000000;
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_HEX64(v0, v1);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testHEX64sWithinDelta(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_HEX64_WITHIN(1, 0x7FFFFFFFFFFFFFFF,0x7FFFFFFFFFFFFFFE);
|
||||
TEST_ASSERT_HEX64_WITHIN(5, 5000, 4996);
|
||||
TEST_ASSERT_HEX64_WITHIN(5, 5000, 5005);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testHEX64sNotWithinDelta(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_HEX64_WITHIN(1, 0x7FFFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFFC);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testHEX64sNotWithinDeltaEvenThoughASignedIntWouldPass(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_HEX64_WITHIN(5, 1, -1);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testUINT64sWithinDelta(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_UINT64_WITHIN(1, 0x7FFFFFFFFFFFFFFF,0x7FFFFFFFFFFFFFFE);
|
||||
TEST_ASSERT_UINT64_WITHIN(5, 5000, 4996);
|
||||
TEST_ASSERT_UINT64_WITHIN(5, 5000, 5005);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testUINT64sNotWithinDelta(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_UINT64_WITHIN(1, 0x7FFFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFFC);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testUINT64sNotWithinDeltaEvenThoughASignedIntWouldPass(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_UINT64_WITHIN(5, 1, -1);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testINT64sWithinDelta(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_INT64_WITHIN(1, 0x7FFFFFFFFFFFFFFF,0x7FFFFFFFFFFFFFFE);
|
||||
TEST_ASSERT_INT64_WITHIN(5, 5000, 4996);
|
||||
TEST_ASSERT_INT64_WITHIN(5, 5000, 5005);
|
||||
#endif
|
||||
}
|
||||
|
||||
void testINT64sNotWithinDelta(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_INT64_WITHIN(1, 0x7FFFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFFC);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testINT64sNotWithinDeltaAndDifferenceOverflows(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_INT64_WITHIN(1, 0x8000000000000000, 0x7FFFFFFFFFFFFFFF);
|
||||
VERIFY_FAILS_END
|
||||
#endif
|
||||
}
|
||||
|
||||
void testPrintNumbersInt64(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
#ifndef USING_OUTPUT_SPY
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_EQUAL_PRINT_NUMBERS("0", 0);
|
||||
TEST_ASSERT_EQUAL_PRINT_NUMBERS("10000000000", 10000000000);
|
||||
TEST_ASSERT_EQUAL_PRINT_NUMBERS("-9223372036854775808", (UNITY_INT)0x8000000000000000);
|
||||
TEST_ASSERT_EQUAL_PRINT_NUMBERS("-1", (UNITY_INT)0xFFFFFFFFFFFFFFFF);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
void testPrintNumbersUInt64(void)
|
||||
{
|
||||
#ifndef UNITY_SUPPORT_64
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
#ifndef USING_OUTPUT_SPY
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
TEST_ASSERT_EQUAL_PRINT_UNSIGNED_NUMBERS("0", 0);
|
||||
TEST_ASSERT_EQUAL_PRINT_UNSIGNED_NUMBERS("70000000000", 70000000000);
|
||||
TEST_ASSERT_EQUAL_PRINT_UNSIGNED_NUMBERS("9223372036854775808", (UNITY_UINT)0x8000000000000000);
|
||||
TEST_ASSERT_EQUAL_PRINT_UNSIGNED_NUMBERS("18446744073709551615", (UNITY_UINT)0xFFFFFFFFFFFFFFFF);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
78
test/tests/test_unity_memory.c
Normal file
78
test/tests/test_unity_memory.c
Normal file
@@ -0,0 +1,78 @@
|
||||
/* ==========================================
|
||||
Unity Project - A Test Framework for C
|
||||
Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
|
||||
[Released under MIT License. Please refer to license.txt for details]
|
||||
========================================== */
|
||||
|
||||
#include "unity.h"
|
||||
#define TEST_INSTANCES
|
||||
#include "self_assessment_utils.h"
|
||||
|
||||
void setUp(void)
|
||||
{
|
||||
SetToOneToFailInTearDown = 0;
|
||||
SetToOneMeanWeAlreadyCheckedThisGuy = 0;
|
||||
}
|
||||
|
||||
void tearDown(void)
|
||||
{
|
||||
endPutcharSpy(); /* Stop suppressing test output */
|
||||
if (SetToOneToFailInTearDown == 1)
|
||||
{
|
||||
/* These will be skipped internally if already failed/ignored */
|
||||
TEST_FAIL_MESSAGE("<= Failed in tearDown");
|
||||
TEST_IGNORE_MESSAGE("<= Ignored in tearDown");
|
||||
}
|
||||
if ((SetToOneMeanWeAlreadyCheckedThisGuy == 0) && (Unity.CurrentTestFailed > 0))
|
||||
{
|
||||
UnityPrint(": [[[[ Test Should Have Passed But Did Not ]]]]");
|
||||
UNITY_OUTPUT_CHAR('\n');
|
||||
}
|
||||
}
|
||||
|
||||
void testEqualMemory(void)
|
||||
{
|
||||
const char *testString = "whatever";
|
||||
|
||||
TEST_ASSERT_EQUAL_MEMORY(testString, testString, 8);
|
||||
TEST_ASSERT_EQUAL_MEMORY("whatever", "whatever", 8);
|
||||
TEST_ASSERT_EQUAL_MEMORY("whatever", testString, 8);
|
||||
TEST_ASSERT_EQUAL_MEMORY(testString, "whatever", 8);
|
||||
TEST_ASSERT_EQUAL_MEMORY(testString, "whatever", 2);
|
||||
TEST_ASSERT_EQUAL_MEMORY(NULL, NULL, 1);
|
||||
}
|
||||
|
||||
void testNotEqualMemory1(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_MEMORY("foo", "bar", 3);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualMemory2(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_MEMORY("fool", "food", 4);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualMemory3(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_MEMORY(NULL, "food", 4);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualMemory4(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_MEMORY("fool", NULL, 4);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualMemoryLengthZero(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_MEMORY(NULL, NULL, 0);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
326
test/tests/test_unity_strings.c
Normal file
326
test/tests/test_unity_strings.c
Normal file
@@ -0,0 +1,326 @@
|
||||
/* ==========================================
|
||||
Unity Project - A Test Framework for C
|
||||
Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
|
||||
[Released under MIT License. Please refer to license.txt for details]
|
||||
========================================== */
|
||||
|
||||
#include "unity.h"
|
||||
#define TEST_INSTANCES
|
||||
#include "self_assessment_utils.h"
|
||||
|
||||
void setUp(void)
|
||||
{
|
||||
SetToOneToFailInTearDown = 0;
|
||||
SetToOneMeanWeAlreadyCheckedThisGuy = 0;
|
||||
}
|
||||
|
||||
void tearDown(void)
|
||||
{
|
||||
endPutcharSpy(); /* Stop suppressing test output */
|
||||
if (SetToOneToFailInTearDown == 1)
|
||||
{
|
||||
/* These will be skipped internally if already failed/ignored */
|
||||
TEST_FAIL_MESSAGE("<= Failed in tearDown");
|
||||
TEST_IGNORE_MESSAGE("<= Ignored in tearDown");
|
||||
}
|
||||
if ((SetToOneMeanWeAlreadyCheckedThisGuy == 0) && (Unity.CurrentTestFailed > 0))
|
||||
{
|
||||
UnityPrint(": [[[[ Test Should Have Passed But Did Not ]]]]");
|
||||
UNITY_OUTPUT_CHAR('\n');
|
||||
}
|
||||
}
|
||||
|
||||
void testEqualStrings(void)
|
||||
{
|
||||
const char *testString = "foo";
|
||||
|
||||
TEST_ASSERT_EQUAL_STRING(testString, testString);
|
||||
TEST_ASSERT_EQUAL_STRING_MESSAGE("foo", "foo", "foo isn't foo");
|
||||
TEST_ASSERT_EQUAL_STRING("foo", testString);
|
||||
TEST_ASSERT_EQUAL_STRING(testString, "foo");
|
||||
TEST_ASSERT_EQUAL_STRING("", "");
|
||||
}
|
||||
|
||||
void testEqualStringsLen(void)
|
||||
{
|
||||
const char *testString = "foobar";
|
||||
TEST_ASSERT_EQUAL_STRING_LEN(testString, testString, strlen(testString));
|
||||
TEST_ASSERT_EQUAL_STRING_LEN_MESSAGE("foobar", "foobaz", 5, "fooba isn't fooba");
|
||||
TEST_ASSERT_EQUAL_STRING_LEN("foo", testString, 3);
|
||||
TEST_ASSERT_EQUAL_STRING_LEN(testString, "foo", 3);
|
||||
TEST_ASSERT_EQUAL_STRING_LEN("", "", 3);
|
||||
}
|
||||
|
||||
void testEqualStringsWithCarriageReturnsAndLineFeeds(void)
|
||||
{
|
||||
const char *testString = "foo\r\nbar";
|
||||
|
||||
TEST_ASSERT_EQUAL_STRING(testString, testString);
|
||||
TEST_ASSERT_EQUAL_STRING("foo\r\nbar", "foo\r\nbar");
|
||||
TEST_ASSERT_EQUAL_STRING("foo\r\nbar", testString);
|
||||
TEST_ASSERT_EQUAL_STRING(testString, "foo\r\nbar");
|
||||
TEST_ASSERT_EQUAL_STRING("", "");
|
||||
}
|
||||
|
||||
void testNotEqualString1(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_STRING("foo", "bar");
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualStringLen1(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_STRING_LEN("foobar", "foobaz", 6);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualString2(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_STRING("foo", "");
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualStringLen2(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_STRING_LEN("foo", "", 3);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualString3(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_STRING("", "bar");
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualStringLen3(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_STRING_LEN("", "bar", 3);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualString4(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_STRING("bar\r", "bar\n");
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualStringLen4(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_STRING_LEN("ba\r\x16", "ba\r\n", 4);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualString5(void)
|
||||
{
|
||||
const char str1[] = { 0x41, 0x42, 0x03, 0x00 };
|
||||
const char str2[] = { 0x41, 0x42, 0x04, 0x00 };
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_STRING(str1, str2);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualString_ExpectedStringIsNull(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_STRING(NULL, "bar");
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualStringLen_ExpectedStringIsNull(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_STRING_LEN(NULL, "bar", 1);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualString_ActualStringIsNull(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_STRING("foo", NULL);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualStringLen_ActualStringIsNull(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_STRING_LEN("foo", NULL, 1);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualString_ExpectedStringIsLonger(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_STRING("foo2", "foo");
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualString_ActualStringIsLonger(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_STRING("foo", "foo2");
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testEqualStringArrays(void)
|
||||
{
|
||||
const char *testStrings[] = { "foo", "boo", "woo", "moo" };
|
||||
const char *expStrings[] = { "foo", "boo", "woo", "zoo" };
|
||||
|
||||
TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, expStrings, 3);
|
||||
TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, testStrings, 3);
|
||||
TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, testStrings, 2);
|
||||
TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, testStrings, 1);
|
||||
}
|
||||
|
||||
void testNotEqualStringArray1(void)
|
||||
{
|
||||
const char *testStrings[] = { "foo", "boo", "woo", "moo" };
|
||||
const char *expStrings[] = { "foo", "boo", "woo", "zoo" };
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, testStrings, 4);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualStringArray2(void)
|
||||
{
|
||||
const char *testStrings[] = { "zoo", "boo", "woo", "moo" };
|
||||
const char *expStrings[] = { "foo", "boo", "woo", "moo" };
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, testStrings, 4);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualStringArray3(void)
|
||||
{
|
||||
const char *testStrings[] = { "foo", "boo", "woo", NULL };
|
||||
const char *expStrings[] = { "foo", "boo", "woo", "zoo" };
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, testStrings, 4);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualStringArray4(void)
|
||||
{
|
||||
const char *testStrings[] = { "foo", "boo", "woo", "moo" };
|
||||
const char *expStrings[] = { "foo", NULL, "woo", "moo" };
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, testStrings, 4);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualStringArray5(void)
|
||||
{
|
||||
const char **testStrings = NULL;
|
||||
const char *expStrings[] = { "foo", "boo", "woo", "zoo" };
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, testStrings, 4);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualStringArray6(void)
|
||||
{
|
||||
const char *testStrings[] = { "foo", "boo", "woo", "zoo" };
|
||||
const char **expStrings = NULL;
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, testStrings, 4);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testEqualStringArrayIfBothNulls(void)
|
||||
{
|
||||
const char **testStrings = NULL;
|
||||
const char **expStrings = NULL;
|
||||
|
||||
TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, testStrings, 4);
|
||||
}
|
||||
|
||||
void testNotEqualStringArrayLengthZero(void)
|
||||
{
|
||||
const char *testStrings[] = {NULL};
|
||||
const char **expStrings = NULL;
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, testStrings, 0);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testEqualStringEachEqual(void)
|
||||
{
|
||||
const char *testStrings1[] = { "foo", "foo", "foo", "foo" };
|
||||
const char *testStrings2[] = { "boo", "boo", "boo", "zoo" };
|
||||
const char *testStrings3[] = { "", "", "", "" };
|
||||
|
||||
TEST_ASSERT_EACH_EQUAL_STRING("foo", testStrings1, 4);
|
||||
TEST_ASSERT_EACH_EQUAL_STRING("foo", testStrings1, 1);
|
||||
TEST_ASSERT_EACH_EQUAL_STRING("boo", testStrings2, 3);
|
||||
TEST_ASSERT_EACH_EQUAL_STRING("", testStrings3, 4);
|
||||
}
|
||||
|
||||
void testNotEqualStringEachEqual1(void)
|
||||
{
|
||||
const char *testStrings[] = { "foo", "foo", "foo", "moo" };
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EACH_EQUAL_STRING("foo", testStrings, 4);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualStringEachEqual2(void)
|
||||
{
|
||||
const char *testStrings[] = { "boo", "foo", "foo", "foo" };
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EACH_EQUAL_STRING("foo", testStrings, 4);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualStringEachEqual3(void)
|
||||
{
|
||||
const char *testStrings[] = { "foo", "foo", "foo", NULL };
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EACH_EQUAL_STRING("foo", testStrings, 4);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualStringEachEqual4(void)
|
||||
{
|
||||
const char *testStrings[] = { "foo", "foo", "woo", "foo" };
|
||||
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EACH_EQUAL_STRING("foo", testStrings, 4);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testNotEqualStringEachEqual5(void)
|
||||
{
|
||||
EXPECT_ABORT_BEGIN
|
||||
TEST_ASSERT_EACH_EQUAL_STRING("foo", NULL, 1);
|
||||
VERIFY_FAILS_END
|
||||
}
|
||||
|
||||
void testCstringsEscapeSequence(void)
|
||||
{
|
||||
#ifndef USING_OUTPUT_SPY
|
||||
TEST_IGNORE();
|
||||
#else
|
||||
startPutcharSpy();
|
||||
UnityPrint("\x16\x10");
|
||||
endPutcharSpy();
|
||||
TEST_ASSERT_EQUAL_STRING("\\x16\\x10", getBufferPutcharSpy());
|
||||
#endif
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user