135375f98Sopenharmony_ci 235375f98Sopenharmony_ci#include "ProductionCode.h" 335375f98Sopenharmony_ci#include "unity.h" 435375f98Sopenharmony_ci 535375f98Sopenharmony_ci//sometimes you may want to get at local data in a module. 635375f98Sopenharmony_ci//for example: If you plan to pass by reference, this could be useful 735375f98Sopenharmony_ci//however, it should often be avoided 835375f98Sopenharmony_ciextern int Counter; 935375f98Sopenharmony_ci 1035375f98Sopenharmony_civoid setUp(void) 1135375f98Sopenharmony_ci{ 1235375f98Sopenharmony_ci //This is run before EACH TEST 1335375f98Sopenharmony_ci Counter = 0x5a5a; 1435375f98Sopenharmony_ci} 1535375f98Sopenharmony_ci 1635375f98Sopenharmony_civoid tearDown(void) 1735375f98Sopenharmony_ci{ 1835375f98Sopenharmony_ci} 1935375f98Sopenharmony_ci 2035375f98Sopenharmony_civoid test_FindFunction_WhichIsBroken_ShouldReturnZeroIfItemIsNotInList_WhichWorksEvenInOurBrokenCode(void) 2135375f98Sopenharmony_ci{ 2235375f98Sopenharmony_ci //All of these should pass 2335375f98Sopenharmony_ci TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(78)); 2435375f98Sopenharmony_ci TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(1)); 2535375f98Sopenharmony_ci TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(33)); 2635375f98Sopenharmony_ci TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(999)); 2735375f98Sopenharmony_ci TEST_ASSERT_EQUAL(0, FindFunction_WhichIsBroken(-1)); 2835375f98Sopenharmony_ci} 2935375f98Sopenharmony_ci 3035375f98Sopenharmony_civoid test_FindFunction_WhichIsBroken_ShouldReturnTheIndexForItemsInList_WhichWillFailBecauseOurFunctionUnderTestIsBroken(void) 3135375f98Sopenharmony_ci{ 3235375f98Sopenharmony_ci // You should see this line fail in your test summary 3335375f98Sopenharmony_ci TEST_ASSERT_EQUAL(1, FindFunction_WhichIsBroken(34)); 3435375f98Sopenharmony_ci 3535375f98Sopenharmony_ci // Notice the rest of these didn't get a chance to run because the line above failed. 3635375f98Sopenharmony_ci // Unit tests abort each test function on the first sign of trouble. 3735375f98Sopenharmony_ci // Then NEXT test function runs as normal. 3835375f98Sopenharmony_ci TEST_ASSERT_EQUAL(8, FindFunction_WhichIsBroken(8888)); 3935375f98Sopenharmony_ci} 4035375f98Sopenharmony_ci 4135375f98Sopenharmony_civoid test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValue(void) 4235375f98Sopenharmony_ci{ 4335375f98Sopenharmony_ci //This should be true because setUp set this up for us before this test 4435375f98Sopenharmony_ci TEST_ASSERT_EQUAL_HEX(0x5a5a, FunctionWhichReturnsLocalVariable()); 4535375f98Sopenharmony_ci 4635375f98Sopenharmony_ci //This should be true because we can still change our answer 4735375f98Sopenharmony_ci Counter = 0x1234; 4835375f98Sopenharmony_ci TEST_ASSERT_EQUAL_HEX(0x1234, FunctionWhichReturnsLocalVariable()); 4935375f98Sopenharmony_ci} 5035375f98Sopenharmony_ci 5135375f98Sopenharmony_civoid test_FunctionWhichReturnsLocalVariable_ShouldReturnTheCurrentCounterValueAgain(void) 5235375f98Sopenharmony_ci{ 5335375f98Sopenharmony_ci //This should be true again because setup was rerun before this test (and after we changed it to 0x1234) 5435375f98Sopenharmony_ci TEST_ASSERT_EQUAL_HEX(0x5a5a, FunctionWhichReturnsLocalVariable()); 5535375f98Sopenharmony_ci} 5635375f98Sopenharmony_ci 5735375f98Sopenharmony_civoid test_FunctionWhichReturnsLocalVariable_ShouldReturnCurrentCounter_ButFailsBecauseThisTestIsActuallyFlawed(void) 5835375f98Sopenharmony_ci{ 5935375f98Sopenharmony_ci //Sometimes you get the test wrong. When that happens, you get a failure too... and a quick look should tell 6035375f98Sopenharmony_ci // you what actually happened...which in this case was a failure to setup the initial condition. 6135375f98Sopenharmony_ci TEST_ASSERT_EQUAL_HEX(0x1234, FunctionWhichReturnsLocalVariable()); 6235375f98Sopenharmony_ci} 63