mirror of
https://github.com/ThrowTheSwitch/Unity.git
synced 2025-06-22 07:24:28 +08:00
Merge pull request #403 from farrrb/fix-issue-392
Used sizeof operator for pointer increments in UnityAssertEqualIntArray().
This commit is contained in:
45
src/unity.c
45
src/unity.c
@ -1,6 +1,6 @@
|
|||||||
/* =========================================================================
|
/* =========================================================================
|
||||||
Unity Project - A Test Framework for C
|
Unity Project - A Test Framework for C
|
||||||
Copyright (c) 2007-14 Mike Karlesky, Mark VanderVoord, Greg Williams
|
Copyright (c) 2007-19 Mike Karlesky, Mark VanderVoord, Greg Williams
|
||||||
[Released under MIT License. Please refer to license.txt for details]
|
[Released under MIT License. Please refer to license.txt for details]
|
||||||
============================================================================ */
|
============================================================================ */
|
||||||
|
|
||||||
@ -693,7 +693,8 @@ static int UnityIsOneArrayNull(UNITY_INTERNAL_PTR expected,
|
|||||||
const UNITY_LINE_TYPE lineNumber,
|
const UNITY_LINE_TYPE lineNumber,
|
||||||
const char* msg)
|
const char* msg)
|
||||||
{
|
{
|
||||||
if (expected == actual) return 0; /* Both are NULL or same pointer */
|
/* Both are NULL or same pointer */
|
||||||
|
if (expected == actual) { return 0; }
|
||||||
|
|
||||||
/* print and return true if just expected is NULL */
|
/* print and return true if just expected is NULL */
|
||||||
if (expected == NULL)
|
if (expected == NULL)
|
||||||
@ -817,8 +818,9 @@ void UnityAssertEqualIntArray(UNITY_INTERNAL_PTR expected,
|
|||||||
const UNITY_DISPLAY_STYLE_T style,
|
const UNITY_DISPLAY_STYLE_T style,
|
||||||
const UNITY_FLAGS_T flags)
|
const UNITY_FLAGS_T flags)
|
||||||
{
|
{
|
||||||
UNITY_UINT32 elements = num_elements;
|
UNITY_UINT32 elements = num_elements;
|
||||||
unsigned int length = style & 0xF;
|
unsigned int length = style & 0xF;
|
||||||
|
unsigned int increment = 0;
|
||||||
|
|
||||||
RETURN_IF_FAIL_OR_IGNORE;
|
RETURN_IF_FAIL_OR_IGNORE;
|
||||||
|
|
||||||
@ -841,32 +843,41 @@ void UnityAssertEqualIntArray(UNITY_INTERNAL_PTR expected,
|
|||||||
{
|
{
|
||||||
UNITY_INT expect_val;
|
UNITY_INT expect_val;
|
||||||
UNITY_INT actual_val;
|
UNITY_INT actual_val;
|
||||||
|
|
||||||
switch (length)
|
switch (length)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)expected;
|
expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)expected;
|
||||||
actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)actual;
|
actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)actual;
|
||||||
|
increment = sizeof(UNITY_INT8);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)expected;
|
expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)expected;
|
||||||
actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)actual;
|
actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)actual;
|
||||||
|
increment = sizeof(UNITY_INT16);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef UNITY_SUPPORT_64
|
#ifdef UNITY_SUPPORT_64
|
||||||
case 8:
|
case 8:
|
||||||
expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)expected;
|
expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)expected;
|
||||||
actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)actual;
|
actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)actual;
|
||||||
|
increment = sizeof(UNITY_INT64);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
default: /* length 4 bytes */
|
|
||||||
|
default: /* default is length 4 bytes */
|
||||||
|
case 4:
|
||||||
expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)expected;
|
expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)expected;
|
||||||
actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)actual;
|
actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)actual;
|
||||||
|
increment = sizeof(UNITY_INT32);
|
||||||
length = 4;
|
length = 4;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (expect_val != actual_val)
|
if (expect_val != actual_val)
|
||||||
{
|
{
|
||||||
if ((style & UNITY_DISPLAY_RANGE_UINT) && (length < sizeof(expect_val)))
|
if ((style & UNITY_DISPLAY_RANGE_UINT) && (length < (UNITY_INT_WIDTH / 8)))
|
||||||
{ /* For UINT, remove sign extension (padding 1's) from signed type casts above */
|
{ /* For UINT, remove sign extension (padding 1's) from signed type casts above */
|
||||||
UNITY_INT mask = 1;
|
UNITY_INT mask = 1;
|
||||||
mask = (mask << 8 * length) - 1;
|
mask = (mask << 8 * length) - 1;
|
||||||
@ -883,11 +894,12 @@ void UnityAssertEqualIntArray(UNITY_INTERNAL_PTR expected,
|
|||||||
UnityAddMsgIfSpecified(msg);
|
UnityAddMsgIfSpecified(msg);
|
||||||
UNITY_FAIL_AND_BAIL;
|
UNITY_FAIL_AND_BAIL;
|
||||||
}
|
}
|
||||||
|
/* Walk through array by incrementing the pointers */
|
||||||
if (flags == UNITY_ARRAY_TO_ARRAY)
|
if (flags == UNITY_ARRAY_TO_ARRAY)
|
||||||
{
|
{
|
||||||
expected = (UNITY_INTERNAL_PTR)(length + (const char*)expected);
|
expected = (UNITY_INTERNAL_PTR)((const char*)expected + increment);
|
||||||
}
|
}
|
||||||
actual = (UNITY_INTERNAL_PTR)(length + (const char*)actual);
|
actual = (UNITY_INTERNAL_PTR)((const char*)actual + increment);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1602,21 +1614,22 @@ UNITY_INTERNAL_PTR UnityNumToPtr(const UNITY_INT num, const UNITY_UINT8 size)
|
|||||||
switch(size)
|
switch(size)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
UnityQuickCompare.i8 = (UNITY_INT8)num;
|
UnityQuickCompare.i8 = (UNITY_INT8)num;
|
||||||
return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i8);
|
return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i8);
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
UnityQuickCompare.i16 = (UNITY_INT16)num;
|
UnityQuickCompare.i16 = (UNITY_INT16)num;
|
||||||
return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i16);
|
return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i16);
|
||||||
|
|
||||||
#ifdef UNITY_SUPPORT_64
|
#ifdef UNITY_SUPPORT_64
|
||||||
case 8:
|
case 8:
|
||||||
UnityQuickCompare.i64 = (UNITY_INT64)num;
|
UnityQuickCompare.i64 = (UNITY_INT64)num;
|
||||||
return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i64);
|
return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i64);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
default: /* 4 bytes */
|
default: /* 4 bytes */
|
||||||
UnityQuickCompare.i32 = (UNITY_INT32)num;
|
UnityQuickCompare.i32 = (UNITY_INT32)num;
|
||||||
return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i32);
|
return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i32);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* ==========================================
|
/* ==========================================
|
||||||
Unity Project - A Test Framework for C
|
Unity Project - A Test Framework for C
|
||||||
Copyright (c) 2007-14 Mike Karlesky, Mark VanderVoord, Greg Williams
|
Copyright (c) 2007-19 Mike Karlesky, Mark VanderVoord, Greg Williams
|
||||||
[Released under MIT License. Please refer to license.txt for details]
|
[Released under MIT License. Please refer to license.txt for details]
|
||||||
========================================== */
|
========================================== */
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* ==========================================
|
/* ==========================================
|
||||||
Unity Project - A Test Framework for C
|
Unity Project - A Test Framework for C
|
||||||
Copyright (c) 2007-14 Mike Karlesky, Mark VanderVoord, Greg Williams
|
Copyright (c) 2007-19 Mike Karlesky, Mark VanderVoord, Greg Williams
|
||||||
[Released under MIT License. Please refer to license.txt for details]
|
[Released under MIT License. Please refer to license.txt for details]
|
||||||
========================================== */
|
========================================== */
|
||||||
|
|
||||||
@ -375,7 +375,7 @@ typedef void (*UnityTestFunction)(void);
|
|||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
UNITY_DISPLAY_STYLE_INT = sizeof(int)+ UNITY_DISPLAY_RANGE_INT,
|
UNITY_DISPLAY_STYLE_INT = sizeof(int) + UNITY_DISPLAY_RANGE_INT,
|
||||||
UNITY_DISPLAY_STYLE_INT8 = 1 + UNITY_DISPLAY_RANGE_INT,
|
UNITY_DISPLAY_STYLE_INT8 = 1 + UNITY_DISPLAY_RANGE_INT,
|
||||||
UNITY_DISPLAY_STYLE_INT16 = 2 + UNITY_DISPLAY_RANGE_INT,
|
UNITY_DISPLAY_STYLE_INT16 = 2 + UNITY_DISPLAY_RANGE_INT,
|
||||||
UNITY_DISPLAY_STYLE_INT32 = 4 + UNITY_DISPLAY_RANGE_INT,
|
UNITY_DISPLAY_STYLE_INT32 = 4 + UNITY_DISPLAY_RANGE_INT,
|
||||||
@ -383,7 +383,7 @@ UNITY_DISPLAY_STYLE_INT = sizeof(int)+ UNITY_DISPLAY_RANGE_INT,
|
|||||||
UNITY_DISPLAY_STYLE_INT64 = 8 + UNITY_DISPLAY_RANGE_INT,
|
UNITY_DISPLAY_STYLE_INT64 = 8 + UNITY_DISPLAY_RANGE_INT,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
UNITY_DISPLAY_STYLE_UINT = sizeof(unsigned) + UNITY_DISPLAY_RANGE_UINT,
|
UNITY_DISPLAY_STYLE_UINT = sizeof(unsigned) + UNITY_DISPLAY_RANGE_UINT,
|
||||||
UNITY_DISPLAY_STYLE_UINT8 = 1 + UNITY_DISPLAY_RANGE_UINT,
|
UNITY_DISPLAY_STYLE_UINT8 = 1 + UNITY_DISPLAY_RANGE_UINT,
|
||||||
UNITY_DISPLAY_STYLE_UINT16 = 2 + UNITY_DISPLAY_RANGE_UINT,
|
UNITY_DISPLAY_STYLE_UINT16 = 2 + UNITY_DISPLAY_RANGE_UINT,
|
||||||
UNITY_DISPLAY_STYLE_UINT32 = 4 + UNITY_DISPLAY_RANGE_UINT,
|
UNITY_DISPLAY_STYLE_UINT32 = 4 + UNITY_DISPLAY_RANGE_UINT,
|
||||||
|
Reference in New Issue
Block a user