330 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			330 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* ==========================================
 | 
						|
    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"
 | 
						|
 | 
						|
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
 | 
						|
}
 |