00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
#include "../GeneralInclude/CompilerSwitches.h"
00011
#include "../GeneralInclude/ClassId.h"
00012
#include "../GeneralInclude/BasicTypes.h"
00013
#include "../GeneralInclude/Constants.h"
00014
#include "../Telecommand/DC_PUSMemoryLoadOffset.h"
00015
#include "../Utilities/TestCaseWithEvtCheck.h"
00016
#include "TestCasePUSMemoryLoadOffset_2.h"
00017
00018
#include <assert.h>
00019
#include <string.h>
00020
00021 TestCasePUSMemoryLoadOffset_2::TestCasePUSMemoryLoadOffset_2(
void) :
00022
TestCaseWithEvtCheck(ID_PUSMEMORYLOADOFFSET*10+2,"
TestCasePUSMemoryLoadOffset_2") {
00023
return;
00024 }
00025
00026 void TestCasePUSMemoryLoadOffset_2::runTestCase(
void) {
00027
00028
DC_PUSMemoryLoadOffset* pML =
new DC_PUSMemoryLoadOffset();
00029
00030
00031
00032 pML->
setTimeTag(0);
00033 pML->
setSource(1);
00034 pML->
setTelecommandId(2);
00035
00036
00037
const unsigned int paSize =100;
00038
TD_PUSMemData pa[paSize];
00039
for (
unsigned int i=0; i<paSize; i++)
00040 pa[i]=0;
00041
00042
00043
const unsigned short defPacketSize = 100;
00044
unsigned char packet[defPacketSize];
00045
00046
00047 pML->
setMaxNumberBlocks(3);
00048
if ( pML->
getMaxNumberBlocks()!=3 )
00049 { setTestResult(
TEST_FAILURE,
"Wrong configuration parameter");
00050
return;
00051 }
00052
00053
00054 pML->
setMaxNumberData(10);
00055
if ( pML->
getMaxNumberData()!=10 )
00056 { setTestResult(
TEST_FAILURE,
"Wrong configuration parameter");
00057
return;
00058 }
00059
00060
00061
if ( !pML->
isObjectConfigured() )
00062 { setTestResult(
TEST_FAILURE,
"Wrong configuration status after initialization");
00063
return;
00064 }
00065
00066
00067
unsigned int offset = 0;
00068
TD_PUSMemId id = 12;
00069
TD_PUSMemData* base = pa;
00070 memcpy(packet+offset,&
id,
sizeof(
TD_PUSMemId));
00071 offset +=
sizeof(
TD_PUSMemId);
00072 memcpy(packet+offset,&base,
sizeof(
TD_PUSMemData*));
00073 offset +=
sizeof(
TD_PUSMemData*);
00074
00075
00076
00077
00078
TD_PUSMemOffset os1 = 2;
00079
TD_PUSMemLength len1 = 4;
00080
TD_PUSMemData d1 = 0xAB;
00081
TD_PUSMemData d2 = 0xCD;
00082
TD_PUSMemData d3 = 0xEF;
00083
TD_PUSMemData d4 = 0x01;
00084
TD_PUSNumberMemBlocks nmb = 1;
00085
unsigned short checkSum = 0x9CF8;
00086
00087 memcpy(packet+offset,&nmb,
sizeof(
TD_PUSNumberMemBlocks));
00088 offset +=
sizeof(
TD_PUSNumberMemBlocks);
00089 memcpy(packet+offset,&os1,
sizeof(
TD_PUSMemLength));
00090 offset +=
sizeof(
TD_PUSMemLength);
00091 memcpy(packet+offset,&len1,
sizeof(
TD_PUSMemLength));
00092 offset +=
sizeof(
TD_PUSMemLength);
00093 memcpy(packet+offset,&d1,
sizeof(
TD_PUSMemData));
00094 offset +=
sizeof(
TD_PUSMemData);
00095 memcpy(packet+offset,&d2,
sizeof(
TD_PUSMemData));
00096 offset +=
sizeof(
TD_PUSMemData);
00097 memcpy(packet+offset,&d3,
sizeof(
TD_PUSMemData));
00098 offset +=
sizeof(
TD_PUSMemData);
00099 memcpy(packet+offset,&d4,
sizeof(
TD_PUSMemData));
00100 offset +=
sizeof(
TD_PUSMemData);
00101 memcpy(packet+offset,&checkSum,2);
00102 offset +=
sizeof(
unsigned short);
00103
00104
00105
if ( pML->
getValidityCheckCode()!=0 )
00106 { setTestResult(
TEST_FAILURE,
"Wrong validity code");
00107
return;
00108 }
00109 pML->
setRawData(packet,offset);
00110
if ( pML->
getValidityCheckCode()!=0 )
00111 { setTestResult(
TEST_FAILURE,
"Wrong validity code");
00112
return;
00113 }
00114
00115
00116
if ( pML->
execute()!=ACTION_SUCCESS )
00117 { setTestResult(
TEST_FAILURE,
"Wrong execution outcome");
00118
return;
00119 }
00120
if ( (pa[os1]!=d1) || (pa[os1+1]!=d2) || (pa[os1+2]!=d3) || (pa[os1+3]!=d4) )
00121 { setTestResult(
TEST_FAILURE,
"Wrong loaded data");
00122
return;
00123 }
00124
00125
00126
for (
unsigned int i=0; i<paSize; i++)
00127 pa[i]=0;
00128
00129
00130
00131
00132 offset =
sizeof(
TD_PUSMemId)+
sizeof(
unsigned char*);
00133 os1 = 2;
00134 len1 = 4;
00135 d1 = 0xAB;
00136 d2 = 0xCD;
00137 d3 = 0xEF;
00138 d4 = 0x01;
00139 nmb = 1;
00140 checkSum = 0x9CF9;
00141
00142 memcpy(packet+offset,&nmb,
sizeof(
TD_PUSNumberMemBlocks));
00143 offset +=
sizeof(
TD_PUSNumberMemBlocks);
00144 memcpy(packet+offset,&os1,
sizeof(
TD_PUSMemLength));
00145 offset +=
sizeof(
TD_PUSMemLength);
00146 memcpy(packet+offset,&len1,
sizeof(
TD_PUSMemLength));
00147 offset +=
sizeof(
TD_PUSMemLength);
00148 memcpy(packet+offset,&d1,
sizeof(
TD_PUSMemData));
00149 offset +=
sizeof(
TD_PUSMemData);
00150 memcpy(packet+offset,&d2,
sizeof(
TD_PUSMemData));
00151 offset +=
sizeof(
TD_PUSMemData);
00152 memcpy(packet+offset,&d3,
sizeof(
TD_PUSMemData));
00153 offset +=
sizeof(
TD_PUSMemData);
00154 memcpy(packet+offset,&d4,
sizeof(
TD_PUSMemData));
00155 offset +=
sizeof(
TD_PUSMemData);
00156 memcpy(packet+offset,&checkSum,2);
00157 offset +=
sizeof(
unsigned short);
00158
00159
00160
if ( pML->
getValidityCheckCode()!=0 )
00161 { setTestResult(
TEST_FAILURE,
"Wrong validity code");
00162
return;
00163 }
00164 pML->
setRawData(packet,offset);
00165
if ( pML->
getValidityCheckCode()!=0 )
00166 { setTestResult(
TEST_FAILURE,
"Wrong validity code");
00167
return;
00168 }
00169
00170
00171
if ( pML->
execute()!=MEM_LOAD_PRE_CHECKSUM_FAILED )
00172 { setTestResult(
TEST_FAILURE,
"Wrong execution outcome");
00173
return;
00174 }
00175
00176
00177
for (
unsigned int i=0; i<paSize; i++)
00178
if (pa[i]!=0)
00179 { setTestResult(
TEST_FAILURE,
"Wrong loaded data");
00180
return;
00181 }
00182
00183
00184 setTestResult(
TEST_SUCCESS,
"Test Successful");
00185
return;
00186 }