test_flow_postrocess_helper.cpp 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. #include "test_flow_postrocess_helper.h"
  2. #include "esp_log.h"
  3. static const char *TAG = "FLOW CTRL POSTPROC TEST";
  4. UnderTestPost* setUpClassFlowPostprocessing(t_CNNType digType, t_CNNType anaType)
  5. {
  6. ClassFlowCNNGeneral* _analog;
  7. ClassFlowCNNGeneral* _digit;
  8. std::vector<ClassFlow*> FlowControll;
  9. ClassFlowMakeImage* flowmakeimage;
  10. // wird im doFlow verwendet
  11. flowmakeimage = new ClassFlowMakeImage(&FlowControll);
  12. FlowControll.push_back(flowmakeimage);
  13. // Die Modeltypen werden gesetzt, da keine Modelle verwendet werden.
  14. _analog = new ClassFlowCNNGeneral(nullptr, anaType);
  15. _digit = new ClassFlowCNNGeneral(nullptr, digType);
  16. return new UnderTestPost(&FlowControll, _analog, _digit);
  17. }
  18. std::string process_doFlow(UnderTestPost* _underTestPost) {
  19. string time;
  20. // run test
  21. TEST_ASSERT_TRUE(_underTestPost->doFlow(time));
  22. return _underTestPost->getReadout(0);
  23. }
  24. std::string process_doFlow(std::vector<float> analog, std::vector<float> digits, t_CNNType digType,
  25. bool checkConsistency, bool extendedResolution, int decimal_shift) {
  26. // setup the classundertest
  27. UnderTestPost* _undertestPost = init_do_flow(analog, digits, digType, checkConsistency, extendedResolution, decimal_shift);
  28. ESP_LOGD(TAG, "SetupClassFlowPostprocessing completed.");
  29. string time;
  30. // run test
  31. TEST_ASSERT_TRUE(_undertestPost->doFlow(time));
  32. std::string result = _undertestPost->getReadout(0);
  33. delete _undertestPost;
  34. return result;
  35. }
  36. UnderTestPost* init_do_flow(std::vector<float> analog, std::vector<float> digits, t_CNNType digType,
  37. bool checkConsistency, bool extendedResolution, int decimal_shift) {
  38. UnderTestPost* _undertestPost = setUpClassFlowPostprocessing(digType, Analogue100);
  39. // digits
  40. if (digits.size()>0) {
  41. general* gen_digit = _undertestPost->flowDigit->GetGENERAL("default", true);
  42. gen_digit->ROI.clear();
  43. for (int i = 0; i<digits.size(); i++) {
  44. roi* digitROI = new roi();
  45. string name = "digit_" + std::to_string(i);
  46. digitROI->name = name;
  47. digitROI->result_klasse = (int) digits[i];
  48. digitROI->result_float = digits[i];
  49. gen_digit->ROI.push_back(digitROI);
  50. }
  51. }
  52. // analog
  53. if (analog.size()>0) {
  54. general* gen_analog = _undertestPost->flowAnalog->GetGENERAL("default", true);
  55. gen_analog->ROI.clear();
  56. for (int i = 0; i<analog.size(); i++) {
  57. roi* anaROI = new roi();
  58. string name = "ana_1" + std::to_string(i);
  59. anaROI->name = name;
  60. anaROI->result_float = analog[i];
  61. gen_analog->ROI.push_back(anaROI);
  62. }
  63. } else {
  64. _undertestPost->flowAnalog = NULL;
  65. }
  66. ESP_LOGD(TAG, "Setting up of ROIs completed.");
  67. _undertestPost->InitNUMBERS();
  68. setConsitencyCheck(_undertestPost, checkConsistency);
  69. setExtendedResolution(_undertestPost, extendedResolution);
  70. setDecimalShift(_undertestPost, decimal_shift);
  71. return _undertestPost;
  72. }
  73. void setPreValue(UnderTestPost* _underTestPost, double _preValue) {
  74. if (_preValue>0) {
  75. ESP_LOGD(TAG, "preValue=%f", _preValue);
  76. std::vector<NumberPost*>* NUMBERS = _underTestPost->GetNumbers();
  77. for (int _n = 0; _n < (*NUMBERS).size(); ++_n) {
  78. (*NUMBERS)[_n]->PreValue = _preValue;
  79. }
  80. }
  81. }
  82. void setAllowNegatives(UnderTestPost* _underTestPost, bool _allowNegatives) {
  83. ESP_LOGD(TAG, "checkConsistency=true");
  84. std::vector<NumberPost*>* NUMBERS = _underTestPost->GetNumbers();
  85. for (int _n = 0; _n < (*NUMBERS).size(); ++_n) {
  86. (*NUMBERS)[_n]->AllowNegativeRates = _allowNegatives;
  87. }
  88. }
  89. void setConsitencyCheck(UnderTestPost* _underTestPost, bool _checkConsistency) {
  90. if (_checkConsistency) {
  91. ESP_LOGD(TAG, "checkConsistency=true");
  92. std::vector<NumberPost*>* NUMBERS = _underTestPost->GetNumbers();
  93. for (int _n = 0; _n < (*NUMBERS).size(); ++_n) {
  94. (*NUMBERS)[_n]->checkDigitIncreaseConsistency = true;
  95. }
  96. }
  97. }
  98. void setExtendedResolution(UnderTestPost* _underTestPost, bool _extendedResolution) {
  99. if (_extendedResolution ) {
  100. std::vector<NumberPost*>* NUMBERS = _underTestPost->GetNumbers();
  101. for (int _n = 0; _n < (*NUMBERS).size(); ++_n) {
  102. (*NUMBERS)[_n]->isExtendedResolution = true;
  103. }
  104. }
  105. }
  106. void setDecimalShift(UnderTestPost* _underTestPost, int _decimal_shift) {
  107. if (_decimal_shift!=0) {
  108. std::vector<NumberPost*>* NUMBERS = _underTestPost->GetNumbers();
  109. for (int _n = 0; _n < (*NUMBERS).size(); ++_n) {
  110. ESP_LOGD(TAG, "Setting decimal shift on number: %d to %d", _n, _decimal_shift);
  111. (*NUMBERS)[_n]->DecimalShift = _decimal_shift;
  112. (*NUMBERS)[_n]->DecimalShiftInitial = _decimal_shift;
  113. }
  114. }
  115. }
  116. void setAnalogdigitTransistionStart(UnderTestPost* _underTestPost, float _analogdigitTransistionStart) {
  117. if (_analogdigitTransistionStart!=0) {
  118. std::vector<NumberPost*>* NUMBERS = _underTestPost->GetNumbers();
  119. for (int _n = 0; _n < (*NUMBERS).size(); ++_n) {
  120. ESP_LOGD(TAG, "Setting decimal shift on number: %d to %f", _n, _analogdigitTransistionStart);
  121. (*NUMBERS)[_n]->AnalogDigitalTransitionStart = _analogdigitTransistionStart;
  122. }
  123. }
  124. }