Closed NimaAgm closed 2 years ago
I have unit under test which I should return one value using ReturnArrayThruPtr_buff Code under test
uint32_t AUD_DEC_MP3_GetPcmDataStartOffset( FIL* pInFile ) { uint8_t readBuffer[200]; uint32_t br = 0; uint32_t dataStartOffset = 0; uint32_t dataStartOffsetNew = 0;
f_read(pInFile, readBuffer, 200, (UINT*)&br); /***** First call
if (readBuffer[0] == 'I' && readBuffer[1] == 'D' && readBuffer[2] == '3') { dataStartOffset = ((readBuffer[DECMP3_HEADER_SIZE_POSITION] & 0x7f) << 21) | ((readBuffer[DECMP3_HEADER_SIZE_POSITION + 1] & 0x7f) << 14) | ((readBuffer[DECMP3_HEADER_SIZE_POSITION + 2] & 0x7f) << 7) | (readBuffer[DECMP3_HEADER_SIZE_POSITION + 3] & 0x7f);
dataStartOffset += 10; // ID3 Header SIZE = 10 Byte f_lseek(pInFile, dataStartOffset ); f_read(pInFile , readBuffer, 200, &br); /***** second call if (readBuffer[0] == 'I' && readBuffer[1] == 'D' && readBuffer[2] == '3') { dataStartOffsetNew = ((readBuffer[DECMP3_HEADER_SIZE_POSITION] & 0x7f) << 21) | ((readBuffer[DECMP3_HEADER_SIZE_POSITION + 1] & 0x7f) << 14) | ((readBuffer[DECMP3_HEADER_SIZE_POSITION + 2] & 0x7f) << 7) | (readBuffer[DECMP3_HEADER_SIZE_POSITION + 3] & 0x7f); dataStartOffsetNew += 10; dataStartOffset += dataStartOffsetNew; } f_lseek(pInFile , 0 ) ;
} return dataStartOffset;
Test code
TEST(AUD_DEC_MP3_GetPcmDataStartOffset_MCDC,TC0002) { uint8_t buffer[3]; buffer[0] = 'I'; buffer[1] = 'D'; buffer[2] = '3';
uint8_t buffer2[3]; buffer[0] = 'N' ; buffer[1] = 'D'; buffer[2] = '3'; f_read_ExpectAnyArgsAndReturn(1); f_read_ReturnMemThruPtr_buff(&buffer,sizeof(buffer)); f_lseek_ExpectAnyArgsAndReturn(1); f_read_ExpectAnyArgsAndReturn(2); f_read_ReturnMemThruPtr_buff(&buffer2,sizeof(buffer2)); f_lseek_ExpectAnyArgsAndReturn(1); /* Exercise */ uint32_t RETURN_VAL = AUD_DEC_MP3_GetPcmDataStartOffset(0);
It will always return the second call : it mean buffer2 will be returned but I want return them in order
I have unit under test which I should return one value using ReturnArrayThruPtr_buff Code under test
uint32_t AUD_DEC_MP3_GetPcmDataStartOffset( FIL* pInFile ) { uint8_t readBuffer[200]; uint32_t br = 0; uint32_t dataStartOffset = 0; uint32_t dataStartOffsetNew = 0;
f_read(pInFile, readBuffer, 200, (UINT*)&br); /***** First call
if (readBuffer[0] == 'I' && readBuffer[1] == 'D' && readBuffer[2] == '3') { dataStartOffset = ((readBuffer[DECMP3_HEADER_SIZE_POSITION] & 0x7f) << 21) | ((readBuffer[DECMP3_HEADER_SIZE_POSITION + 1] & 0x7f) << 14) | ((readBuffer[DECMP3_HEADER_SIZE_POSITION + 2] & 0x7f) << 7) | (readBuffer[DECMP3_HEADER_SIZE_POSITION + 3] & 0x7f);
} return dataStartOffset;
}
Test code
TEST(AUD_DEC_MP3_GetPcmDataStartOffset_MCDC,TC0002)
{ uint8_t buffer[3]; buffer[0] = 'I'; buffer[1] = 'D'; buffer[2] = '3';
}
It will always return the second call : it mean buffer2 will be returned but I want return them in order