135375f98Sopenharmony_ci/* ========================================== 235375f98Sopenharmony_ci Unity Project - A Test Framework for C 335375f98Sopenharmony_ci Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams 435375f98Sopenharmony_ci [Released under MIT License. Please refer to license.txt for details] 535375f98Sopenharmony_ci========================================== */ 635375f98Sopenharmony_ci 735375f98Sopenharmony_ci#include "unity.h" 835375f98Sopenharmony_ci#define TEST_INSTANCES 935375f98Sopenharmony_ci#include "self_assessment_utils.h" 1035375f98Sopenharmony_ci 1135375f98Sopenharmony_cistatic int SetToOneToFailInTearDown; 1235375f98Sopenharmony_cistatic int SetToOneMeanWeAlreadyCheckedThisGuy; 1335375f98Sopenharmony_ci 1435375f98Sopenharmony_civoid setUp(void) 1535375f98Sopenharmony_ci{ 1635375f98Sopenharmony_ci SetToOneToFailInTearDown = 0; 1735375f98Sopenharmony_ci SetToOneMeanWeAlreadyCheckedThisGuy = 0; 1835375f98Sopenharmony_ci} 1935375f98Sopenharmony_ci 2035375f98Sopenharmony_civoid tearDown(void) 2135375f98Sopenharmony_ci{ 2235375f98Sopenharmony_ci endPutcharSpy(); /* Stop suppressing test output */ 2335375f98Sopenharmony_ci if (SetToOneToFailInTearDown == 1) 2435375f98Sopenharmony_ci { 2535375f98Sopenharmony_ci /* These will be skipped internally if already failed/ignored */ 2635375f98Sopenharmony_ci TEST_FAIL_MESSAGE("<= Failed in tearDown"); 2735375f98Sopenharmony_ci TEST_IGNORE_MESSAGE("<= Ignored in tearDown"); 2835375f98Sopenharmony_ci } 2935375f98Sopenharmony_ci if ((SetToOneMeanWeAlreadyCheckedThisGuy == 0) && (Unity.CurrentTestFailed > 0)) 3035375f98Sopenharmony_ci { 3135375f98Sopenharmony_ci UnityPrint(": [[[[ Test Should Have Passed But Did Not ]]]]"); 3235375f98Sopenharmony_ci UNITY_OUTPUT_CHAR('\n'); 3335375f98Sopenharmony_ci } 3435375f98Sopenharmony_ci} 3535375f98Sopenharmony_ci 3635375f98Sopenharmony_civoid testEqualStrings(void) 3735375f98Sopenharmony_ci{ 3835375f98Sopenharmony_ci const char *testString = "foo"; 3935375f98Sopenharmony_ci 4035375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING(testString, testString); 4135375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_MESSAGE("foo", "foo", "foo isn't foo"); 4235375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING("foo", testString); 4335375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING(testString, "foo"); 4435375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING("", ""); 4535375f98Sopenharmony_ci} 4635375f98Sopenharmony_ci 4735375f98Sopenharmony_civoid testEqualStringsLen(void) 4835375f98Sopenharmony_ci{ 4935375f98Sopenharmony_ci const char *testString = "foobar"; 5035375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_LEN(testString, testString, strlen(testString)); 5135375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_LEN_MESSAGE("foobar", "foobaz", 5, "fooba isn't fooba"); 5235375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_LEN("foo", testString, 3); 5335375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_LEN(testString, "foo", 3); 5435375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_LEN("", "", 3); 5535375f98Sopenharmony_ci} 5635375f98Sopenharmony_ci 5735375f98Sopenharmony_civoid testEqualStringsWithCarriageReturnsAndLineFeeds(void) 5835375f98Sopenharmony_ci{ 5935375f98Sopenharmony_ci const char *testString = "foo\r\nbar"; 6035375f98Sopenharmony_ci 6135375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING(testString, testString); 6235375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING("foo\r\nbar", "foo\r\nbar"); 6335375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING("foo\r\nbar", testString); 6435375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING(testString, "foo\r\nbar"); 6535375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING("", ""); 6635375f98Sopenharmony_ci} 6735375f98Sopenharmony_ci 6835375f98Sopenharmony_civoid testNotEqualString1(void) 6935375f98Sopenharmony_ci{ 7035375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 7135375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING("foo", "bar"); 7235375f98Sopenharmony_ci VERIFY_FAILS_END 7335375f98Sopenharmony_ci} 7435375f98Sopenharmony_ci 7535375f98Sopenharmony_civoid testNotEqualStringLen1(void) 7635375f98Sopenharmony_ci{ 7735375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 7835375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_LEN("foobar", "foobaz", 6); 7935375f98Sopenharmony_ci VERIFY_FAILS_END 8035375f98Sopenharmony_ci} 8135375f98Sopenharmony_ci 8235375f98Sopenharmony_civoid testNotEqualString2(void) 8335375f98Sopenharmony_ci{ 8435375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 8535375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING("foo", ""); 8635375f98Sopenharmony_ci VERIFY_FAILS_END 8735375f98Sopenharmony_ci} 8835375f98Sopenharmony_ci 8935375f98Sopenharmony_civoid testNotEqualStringLen2(void) 9035375f98Sopenharmony_ci{ 9135375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 9235375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_LEN("foo", "", 3); 9335375f98Sopenharmony_ci VERIFY_FAILS_END 9435375f98Sopenharmony_ci} 9535375f98Sopenharmony_ci 9635375f98Sopenharmony_civoid testNotEqualString3(void) 9735375f98Sopenharmony_ci{ 9835375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 9935375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING("", "bar"); 10035375f98Sopenharmony_ci VERIFY_FAILS_END 10135375f98Sopenharmony_ci} 10235375f98Sopenharmony_ci 10335375f98Sopenharmony_civoid testNotEqualStringLen3(void) 10435375f98Sopenharmony_ci{ 10535375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 10635375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_LEN("", "bar", 3); 10735375f98Sopenharmony_ci VERIFY_FAILS_END 10835375f98Sopenharmony_ci} 10935375f98Sopenharmony_ci 11035375f98Sopenharmony_civoid testNotEqualString4(void) 11135375f98Sopenharmony_ci{ 11235375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 11335375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING("bar\r", "bar\n"); 11435375f98Sopenharmony_ci VERIFY_FAILS_END 11535375f98Sopenharmony_ci} 11635375f98Sopenharmony_ci 11735375f98Sopenharmony_civoid testNotEqualStringLen4(void) 11835375f98Sopenharmony_ci{ 11935375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 12035375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_LEN("ba\r\x16", "ba\r\n", 4); 12135375f98Sopenharmony_ci VERIFY_FAILS_END 12235375f98Sopenharmony_ci} 12335375f98Sopenharmony_ci 12435375f98Sopenharmony_civoid testNotEqualString5(void) 12535375f98Sopenharmony_ci{ 12635375f98Sopenharmony_ci const char str1[] = { 0x41, 0x42, 0x03, 0x00 }; 12735375f98Sopenharmony_ci const char str2[] = { 0x41, 0x42, 0x04, 0x00 }; 12835375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 12935375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING(str1, str2); 13035375f98Sopenharmony_ci VERIFY_FAILS_END 13135375f98Sopenharmony_ci} 13235375f98Sopenharmony_ci 13335375f98Sopenharmony_civoid testNotEqualString_ExpectedStringIsNull(void) 13435375f98Sopenharmony_ci{ 13535375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 13635375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING(NULL, "bar"); 13735375f98Sopenharmony_ci VERIFY_FAILS_END 13835375f98Sopenharmony_ci} 13935375f98Sopenharmony_ci 14035375f98Sopenharmony_civoid testNotEqualStringLen_ExpectedStringIsNull(void) 14135375f98Sopenharmony_ci{ 14235375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 14335375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_LEN(NULL, "bar", 1); 14435375f98Sopenharmony_ci VERIFY_FAILS_END 14535375f98Sopenharmony_ci} 14635375f98Sopenharmony_ci 14735375f98Sopenharmony_civoid testNotEqualString_ActualStringIsNull(void) 14835375f98Sopenharmony_ci{ 14935375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 15035375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING("foo", NULL); 15135375f98Sopenharmony_ci VERIFY_FAILS_END 15235375f98Sopenharmony_ci} 15335375f98Sopenharmony_ci 15435375f98Sopenharmony_civoid testNotEqualStringLen_ActualStringIsNull(void) 15535375f98Sopenharmony_ci{ 15635375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 15735375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_LEN("foo", NULL, 1); 15835375f98Sopenharmony_ci VERIFY_FAILS_END 15935375f98Sopenharmony_ci} 16035375f98Sopenharmony_ci 16135375f98Sopenharmony_civoid testNotEqualString_ExpectedStringIsLonger(void) 16235375f98Sopenharmony_ci{ 16335375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 16435375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING("foo2", "foo"); 16535375f98Sopenharmony_ci VERIFY_FAILS_END 16635375f98Sopenharmony_ci} 16735375f98Sopenharmony_ci 16835375f98Sopenharmony_civoid testNotEqualString_ActualStringIsLonger(void) 16935375f98Sopenharmony_ci{ 17035375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 17135375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING("foo", "foo2"); 17235375f98Sopenharmony_ci VERIFY_FAILS_END 17335375f98Sopenharmony_ci} 17435375f98Sopenharmony_ci 17535375f98Sopenharmony_civoid testEqualStringArrays(void) 17635375f98Sopenharmony_ci{ 17735375f98Sopenharmony_ci const char *testStrings[] = { "foo", "boo", "woo", "moo" }; 17835375f98Sopenharmony_ci const char *expStrings[] = { "foo", "boo", "woo", "zoo" }; 17935375f98Sopenharmony_ci 18035375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, expStrings, 3); 18135375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, testStrings, 3); 18235375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, testStrings, 2); 18335375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, testStrings, 1); 18435375f98Sopenharmony_ci} 18535375f98Sopenharmony_ci 18635375f98Sopenharmony_civoid testNotEqualStringArray1(void) 18735375f98Sopenharmony_ci{ 18835375f98Sopenharmony_ci const char *testStrings[] = { "foo", "boo", "woo", "moo" }; 18935375f98Sopenharmony_ci const char *expStrings[] = { "foo", "boo", "woo", "zoo" }; 19035375f98Sopenharmony_ci 19135375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 19235375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, testStrings, 4); 19335375f98Sopenharmony_ci VERIFY_FAILS_END 19435375f98Sopenharmony_ci} 19535375f98Sopenharmony_ci 19635375f98Sopenharmony_civoid testNotEqualStringArray2(void) 19735375f98Sopenharmony_ci{ 19835375f98Sopenharmony_ci const char *testStrings[] = { "zoo", "boo", "woo", "moo" }; 19935375f98Sopenharmony_ci const char *expStrings[] = { "foo", "boo", "woo", "moo" }; 20035375f98Sopenharmony_ci 20135375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 20235375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, testStrings, 4); 20335375f98Sopenharmony_ci VERIFY_FAILS_END 20435375f98Sopenharmony_ci} 20535375f98Sopenharmony_ci 20635375f98Sopenharmony_civoid testNotEqualStringArray3(void) 20735375f98Sopenharmony_ci{ 20835375f98Sopenharmony_ci const char *testStrings[] = { "foo", "boo", "woo", NULL }; 20935375f98Sopenharmony_ci const char *expStrings[] = { "foo", "boo", "woo", "zoo" }; 21035375f98Sopenharmony_ci 21135375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 21235375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, testStrings, 4); 21335375f98Sopenharmony_ci VERIFY_FAILS_END 21435375f98Sopenharmony_ci} 21535375f98Sopenharmony_ci 21635375f98Sopenharmony_civoid testNotEqualStringArray4(void) 21735375f98Sopenharmony_ci{ 21835375f98Sopenharmony_ci const char *testStrings[] = { "foo", "boo", "woo", "moo" }; 21935375f98Sopenharmony_ci const char *expStrings[] = { "foo", NULL, "woo", "moo" }; 22035375f98Sopenharmony_ci 22135375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 22235375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, testStrings, 4); 22335375f98Sopenharmony_ci VERIFY_FAILS_END 22435375f98Sopenharmony_ci} 22535375f98Sopenharmony_ci 22635375f98Sopenharmony_civoid testNotEqualStringArray5(void) 22735375f98Sopenharmony_ci{ 22835375f98Sopenharmony_ci const char **testStrings = NULL; 22935375f98Sopenharmony_ci const char *expStrings[] = { "foo", "boo", "woo", "zoo" }; 23035375f98Sopenharmony_ci 23135375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 23235375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, testStrings, 4); 23335375f98Sopenharmony_ci VERIFY_FAILS_END 23435375f98Sopenharmony_ci} 23535375f98Sopenharmony_ci 23635375f98Sopenharmony_civoid testNotEqualStringArray6(void) 23735375f98Sopenharmony_ci{ 23835375f98Sopenharmony_ci const char *testStrings[] = { "foo", "boo", "woo", "zoo" }; 23935375f98Sopenharmony_ci const char **expStrings = NULL; 24035375f98Sopenharmony_ci 24135375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 24235375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, testStrings, 4); 24335375f98Sopenharmony_ci VERIFY_FAILS_END 24435375f98Sopenharmony_ci} 24535375f98Sopenharmony_ci 24635375f98Sopenharmony_civoid testEqualStringArrayIfBothNulls(void) 24735375f98Sopenharmony_ci{ 24835375f98Sopenharmony_ci const char **testStrings = NULL; 24935375f98Sopenharmony_ci const char **expStrings = NULL; 25035375f98Sopenharmony_ci 25135375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, testStrings, 4); 25235375f98Sopenharmony_ci} 25335375f98Sopenharmony_ci 25435375f98Sopenharmony_civoid testNotEqualStringArrayLengthZero(void) 25535375f98Sopenharmony_ci{ 25635375f98Sopenharmony_ci const char *testStrings[] = {NULL}; 25735375f98Sopenharmony_ci const char **expStrings = NULL; 25835375f98Sopenharmony_ci 25935375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 26035375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING_ARRAY(expStrings, testStrings, 0); 26135375f98Sopenharmony_ci VERIFY_FAILS_END 26235375f98Sopenharmony_ci} 26335375f98Sopenharmony_ci 26435375f98Sopenharmony_civoid testEqualStringEachEqual(void) 26535375f98Sopenharmony_ci{ 26635375f98Sopenharmony_ci const char *testStrings1[] = { "foo", "foo", "foo", "foo" }; 26735375f98Sopenharmony_ci const char *testStrings2[] = { "boo", "boo", "boo", "zoo" }; 26835375f98Sopenharmony_ci const char *testStrings3[] = { "", "", "", "" }; 26935375f98Sopenharmony_ci 27035375f98Sopenharmony_ci TEST_ASSERT_EACH_EQUAL_STRING("foo", testStrings1, 4); 27135375f98Sopenharmony_ci TEST_ASSERT_EACH_EQUAL_STRING("foo", testStrings1, 1); 27235375f98Sopenharmony_ci TEST_ASSERT_EACH_EQUAL_STRING("boo", testStrings2, 3); 27335375f98Sopenharmony_ci TEST_ASSERT_EACH_EQUAL_STRING("", testStrings3, 4); 27435375f98Sopenharmony_ci} 27535375f98Sopenharmony_ci 27635375f98Sopenharmony_civoid testNotEqualStringEachEqual1(void) 27735375f98Sopenharmony_ci{ 27835375f98Sopenharmony_ci const char *testStrings[] = { "foo", "foo", "foo", "moo" }; 27935375f98Sopenharmony_ci 28035375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 28135375f98Sopenharmony_ci TEST_ASSERT_EACH_EQUAL_STRING("foo", testStrings, 4); 28235375f98Sopenharmony_ci VERIFY_FAILS_END 28335375f98Sopenharmony_ci} 28435375f98Sopenharmony_ci 28535375f98Sopenharmony_civoid testNotEqualStringEachEqual2(void) 28635375f98Sopenharmony_ci{ 28735375f98Sopenharmony_ci const char *testStrings[] = { "boo", "foo", "foo", "foo" }; 28835375f98Sopenharmony_ci 28935375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 29035375f98Sopenharmony_ci TEST_ASSERT_EACH_EQUAL_STRING("foo", testStrings, 4); 29135375f98Sopenharmony_ci VERIFY_FAILS_END 29235375f98Sopenharmony_ci} 29335375f98Sopenharmony_ci 29435375f98Sopenharmony_civoid testNotEqualStringEachEqual3(void) 29535375f98Sopenharmony_ci{ 29635375f98Sopenharmony_ci const char *testStrings[] = { "foo", "foo", "foo", NULL }; 29735375f98Sopenharmony_ci 29835375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 29935375f98Sopenharmony_ci TEST_ASSERT_EACH_EQUAL_STRING("foo", testStrings, 4); 30035375f98Sopenharmony_ci VERIFY_FAILS_END 30135375f98Sopenharmony_ci} 30235375f98Sopenharmony_ci 30335375f98Sopenharmony_civoid testNotEqualStringEachEqual4(void) 30435375f98Sopenharmony_ci{ 30535375f98Sopenharmony_ci const char *testStrings[] = { "foo", "foo", "woo", "foo" }; 30635375f98Sopenharmony_ci 30735375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 30835375f98Sopenharmony_ci TEST_ASSERT_EACH_EQUAL_STRING("foo", testStrings, 4); 30935375f98Sopenharmony_ci VERIFY_FAILS_END 31035375f98Sopenharmony_ci} 31135375f98Sopenharmony_ci 31235375f98Sopenharmony_civoid testNotEqualStringEachEqual5(void) 31335375f98Sopenharmony_ci{ 31435375f98Sopenharmony_ci EXPECT_ABORT_BEGIN 31535375f98Sopenharmony_ci TEST_ASSERT_EACH_EQUAL_STRING("foo", NULL, 1); 31635375f98Sopenharmony_ci VERIFY_FAILS_END 31735375f98Sopenharmony_ci} 31835375f98Sopenharmony_ci 31935375f98Sopenharmony_civoid testCstringsEscapeSequence(void) 32035375f98Sopenharmony_ci{ 32135375f98Sopenharmony_ci#ifndef USING_OUTPUT_SPY 32235375f98Sopenharmony_ci TEST_IGNORE(); 32335375f98Sopenharmony_ci#else 32435375f98Sopenharmony_ci startPutcharSpy(); 32535375f98Sopenharmony_ci UnityPrint("\x16\x10"); 32635375f98Sopenharmony_ci endPutcharSpy(); 32735375f98Sopenharmony_ci TEST_ASSERT_EQUAL_STRING("\\x16\\x10", getBufferPutcharSpy()); 32835375f98Sopenharmony_ci#endif 32935375f98Sopenharmony_ci} 330