00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
#include <math.h>
00013
#include <float.h>
00014
00015
#include "../GeneralInclude/CompilerSwitches.h"
00016
#include "../GeneralInclude/Constants.h"
00017
#include "../GeneralInclude/ClassId.h"
00018
#include "../Data/DC_DataItem.h"
00019
#include "../Data/ControlBlock.h"
00020
#include "../Data/DC_DummyDataItemControlBlock.h"
00021
#include "TestCaseDummyDataItemControlBlock_1.h"
00022
00023 TestCaseDummyDataItemControlBlock_1::TestCaseDummyDataItemControlBlock_1(
void) :
00024
TestCaseWithEvtCheck(ID_DUMMYDATAITEMCONTROLBLOCK*10+1,"
TestCaseDummyDataItemControlBlock_1") {
00025
return;
00026 }
00027
00028 void TestCaseDummyDataItemControlBlock_1::runTestCase(
void) {
00029
const unsigned int nEvt =
getNumberOfEvents();
00030
const unsigned int numStates =1;
00031
const unsigned int numInputs =3;
00032
const unsigned int numOutputs =2;
00033
const unsigned int numParameters=2;
00034
const TD_Float testInputs[] ={(
TD_Float)0.3,(
TD_Float)0.04,(
TD_Float)0.005};
00035
DC_DummyDataItemControlBlock *pDCB =
new DC_DummyDataItemControlBlock;
00036
TD_Float inputs[numInputs];
00037
TD_Float outputs[numOutputs];
00038
DC_DataItem *pInputs[numInputs];
00039
DC_DataItem *pOutputs[numOutputs];
00040
00041
00042
for (
int i=0;i<numInputs;i++)
00043 pInputs[i]=
new DC_DataItem(&inputs[i]);
00044
00045
for (
int i=0;i<numOutputs;i++)
00046 pOutputs[i]=
new DC_DataItem(&outputs[i]);
00047
00048
00049
if (pDCB->
getClassId()!=ID_DUMMYDATAITEMCONTROLBLOCK) {
00050 setTestResult(
TEST_FAILURE,
"Wrong class identifier");
00051
return;
00052 }
00053
00054
00055
if (pDCB->
getNumberOfInputs()!=numInputs) {
00056 setTestResult(
TEST_FAILURE,
"Wrong number of inputs");
00057
return;
00058 }
00059
00060
if (pDCB->
getNumberOfOutputs()!=numOutputs) {
00061 setTestResult(
TEST_FAILURE,
"Wrong number of outputs");
00062
return;
00063 }
00064
00065
if (pDCB->
getNumberOfStates()!=numStates) {
00066 setTestResult(
TEST_FAILURE,
"Wrong number of states");
00067
return;
00068 }
00069
00070
if (pDCB->
getNumberOfParameters()!=numParameters) {
00071 setTestResult(
TEST_FAILURE,
"Wrong number of parameters");
00072
return;
00073 }
00074
00075
00076
for (
unsigned int i=0;i<numInputs;i++) {
00077
if (pDCB->
isObjectConfigured()) {
00078 setTestResult(
TEST_FAILURE,
"Wrong configuration status");
00079
return;
00080 }
00081
00082 pDCB->
setInputLink(i,pInputs[i]);
00083 }
00084
00085
for (
unsigned int i=0;i<numOutputs;i++) {
00086
if (pDCB->
isObjectConfigured()) {
00087 setTestResult(
TEST_FAILURE,
"Wrong configuration status");
00088
return;
00089 }
00090
00091 pDCB->
setOutputLink(i,pOutputs[i]);
00092 }
00093
00094
if (!pDCB->
isObjectConfigured()) {
00095 setTestResult(
TEST_FAILURE,
"Wrong configuration status");
00096
return;
00097 }
00098
00099
00100 pDCB->
reset();
00101
00102
00103
00104
00105
00106
if (fabsf((
float)(pDCB->
getState(0)-(
TD_Float)1.0))>=FLT_EPSILON) {
00107 setTestResult(
TEST_FAILURE,
"Wrong initial state");
00108
return;
00109 }
00110
00111
00112
for (
int i=0;i<numParameters;i++) {
00113 pDCB->
setParameter(i,(
TD_Float)2.0);
00114
00115
if (fabsf((
float)(pDCB->
getParameter(i)-(
TD_Float)2.0))>=FLT_EPSILON) {
00116 setTestResult(
TEST_FAILURE,
"Wrong parameter value");
00117
return;
00118 }
00119 }
00120
00121
00122
00123
for (
int i=0;i<numInputs;i++)
00124 inputs[i]=testInputs[i];
00125
00126 pDCB->
propagate();
00127
00128
if (fabsf((
float)(pDCB->
getState(0)-(
TD_Float)2.345))>=FLT_EPSILON) {
00129 setTestResult(
TEST_FAILURE,
"Error in state update");
00130
return;
00131 }
00132
00133
if (fabsf((
float)(outputs[0]-(
TD_Float)2.345))>=FLT_EPSILON ||
00134 fabsf((
float)((outputs[1]-(
TD_Float)4.690)))>=FLT_EPSILON) {
00135 setTestResult(
TEST_FAILURE,
"Error in output update");
00136
return;
00137 }
00138
00139
00140 pDCB->
setState(0,(
TD_Float)4.0);
00141
00142
if (fabsf((
float)(pDCB->
getState(0)-(
TD_Float)4.0))>=FLT_EPSILON) {
00143 setTestResult(
TEST_FAILURE,
"Wrong state value");
00144
return;
00145 }
00146
00147
if (
isNonNominalCheckAllowed()) {
00148
00149
00150 pDCB->
setInputLink(numInputs,pInputs[0]);
00151
if (!verifyLatestEvent(nEvt+1,EVT_ILLEGAL_CB))
00152
return;
00153
00154 pDCB->
setOutputLink(numOutputs,pOutputs[0]);
00155
if (!verifyLatestEvent(nEvt+2,EVT_ILLEGAL_CB))
00156
return;
00157
00158
00159
00160 pDCB->
setState(numStates,(
TD_Float)0.0);
00161
if (!verifyLatestEvent(nEvt+3,EVT_ILLEGAL_CB))
00162
return;
00163
00164 pDCB->
setParameter(numParameters,(
TD_Float)0.0);
00165
if (!verifyLatestEvent(nEvt+4,EVT_ILLEGAL_CB))
00166
return;
00167 }
00168
00169 setTestResult(
TEST_SUCCESS,
"Test Successful");
00170
return;
00171 }