mirror of
https://github.com/ThrowTheSwitch/Unity
synced 2025-02-02 09:18:44 -05:00
331 lines
8.3 KiB
C
331 lines
8.3 KiB
C
/* =========================================================================
|
|
Unity - A Test Framework for C
|
|
ThrowTheSwitch.org
|
|
Copyright (c) 2007-25 Mike Karlesky, Mark VanderVoord, & Greg Williams
|
|
SPDX-License-Identifier: MIT
|
|
========================================================================= */
|
|
|
|
#include "unity.h"
|
|
#define TEST_INSTANCES
|
|
#include "self_assessment_utils.h"
|
|
|
|
static int SetToOneToFailInTearDown;
|
|
static int SetToOneMeanWeAlreadyCheckedThisGuy;
|
|
|
|
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
|
|
}
|