test_flow_postrocess_helper.cpp 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. #include "test_flow_postrocess_helper.h"
  2. #include "esp_log.h"
  3. static const char *TAG = "test_flow_postproc_helper";
  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_" + std::to_string(i);
  59. anaROI->name = name;
  60. anaROI->result_float = analog[i];
  61. gen_analog->ROI.push_back(anaROI);
  62. }
  63. }
  64. ESP_LOGD(TAG, "Setting up of ROIs completed.");
  65. _undertestPost->InitNUMBERS();
  66. setConsitencyCheck(_undertestPost, checkConsistency);
  67. setExtendedResolution(_undertestPost, extendedResolution);
  68. setDecimalShift(_undertestPost, decimal_shift);
  69. return _undertestPost;
  70. }
  71. void setPreValue(UnderTestPost* _underTestPost, double _preValue) {
  72. if (_preValue>0) {
  73. ESP_LOGD(TAG, "preValue=%f", _preValue);
  74. std::vector<NumberPost*>* NUMBERS = _underTestPost->GetNumbers();
  75. for (int _n = 0; _n < (*NUMBERS).size(); ++_n) {
  76. (*NUMBERS)[_n]->PreValue = _preValue;
  77. }
  78. }
  79. }
  80. void setAllowNegatives(UnderTestPost* _underTestPost, bool _allowNegatives) {
  81. ESP_LOGD(TAG, "checkConsistency=true");
  82. std::vector<NumberPost*>* NUMBERS = _underTestPost->GetNumbers();
  83. for (int _n = 0; _n < (*NUMBERS).size(); ++_n) {
  84. (*NUMBERS)[_n]->AllowNegativeRates = _allowNegatives;
  85. }
  86. }
  87. void setConsitencyCheck(UnderTestPost* _underTestPost, bool _checkConsistency) {
  88. if (_checkConsistency) {
  89. ESP_LOGD(TAG, "checkConsistency=true");
  90. std::vector<NumberPost*>* NUMBERS = _underTestPost->GetNumbers();
  91. for (int _n = 0; _n < (*NUMBERS).size(); ++_n) {
  92. (*NUMBERS)[_n]->checkDigitIncreaseConsistency = true;
  93. }
  94. }
  95. }
  96. void setExtendedResolution(UnderTestPost* _underTestPost, bool _extendedResolution) {
  97. if (_extendedResolution ) {
  98. std::vector<NumberPost*>* NUMBERS = _underTestPost->GetNumbers();
  99. for (int _n = 0; _n < (*NUMBERS).size(); ++_n) {
  100. (*NUMBERS)[_n]->isExtendedResolution = true;
  101. }
  102. }
  103. }
  104. void setDecimalShift(UnderTestPost* _underTestPost, int _decimal_shift) {
  105. if (_decimal_shift!=0) {
  106. std::vector<NumberPost*>* NUMBERS = _underTestPost->GetNumbers();
  107. for (int _n = 0; _n < (*NUMBERS).size(); ++_n) {
  108. ESP_LOGD(TAG, "Setting decimal shift on number: %d to %d", _n, _decimal_shift);
  109. (*NUMBERS)[_n]->DecimalShift = _decimal_shift;
  110. (*NUMBERS)[_n]->DecimalShiftInitial = _decimal_shift;
  111. }
  112. }
  113. }
  114. void setAnalogdigitTransistionStart(UnderTestPost* _underTestPost, float _analogdigitTransistionStart) {
  115. if (_analogdigitTransistionStart!=0) {
  116. std::vector<NumberPost*>* NUMBERS = _underTestPost->GetNumbers();
  117. for (int _n = 0; _n < (*NUMBERS).size(); ++_n) {
  118. ESP_LOGD(TAG, "Setting decimal shift on number: %d to %f", _n, _analogdigitTransistionStart);
  119. (*NUMBERS)[_n]->AnalogDigitalTransitionStart = _analogdigitTransistionStart;
  120. }
  121. }
  122. }