Bladeren bron

Testcase for #2145 and debug-log (#2151)

* new models ana-cont-11.0.5, ana-class100-1.5.7, dig-class100-1.6.0

* Testcase for #2145
Added debug log, if allowNegativeRates is handeled
Frank Haverland 2 jaren geleden
bovenliggende
commit
512d7f95b4

+ 3 - 1
code/components/jomjol_flowcontroll/ClassFlowPostProcessing.cpp

@@ -402,7 +402,7 @@ void ClassFlowPostProcessing::handleAllowNegativeRate(string _decsep, string _va
         _digit = _decsep.substr(0, _pospunkt);
     else
         _digit = "default";
-
+  
     for (int j = 0; j < NUMBERS.size(); ++j)
     {
         bool _rt = false;
@@ -841,6 +841,7 @@ bool ClassFlowPostProcessing::doFlow(string zwtime)
 
         if (!NUMBERS[j]->AllowNegativeRates)
         {
+            LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "handleAllowNegativeRate for device: " + NUMBERS[j]->name);
             if ((NUMBERS[j]->Value < NUMBERS[j]->PreValue))
             {
                 #ifdef SERIAL_DEBUG
@@ -848,6 +849,7 @@ bool ClassFlowPostProcessing::doFlow(string zwtime)
                      NUMBERS[j]->PreValue-(2/pow(10, NUMBERS[j]->Nachkomma))
                       ) ;
                 #endif
+            
                 // Include inaccuracy of 0.2 for isExtendedResolution.
                 if (NUMBERS[j]->Value >= (NUMBERS[j]->PreValue-(2/pow(10, NUMBERS[j]->Nachkomma))) && NUMBERS[j]->isExtendedResolution) {
                     NUMBERS[j]->Value = NUMBERS[j]->PreValue;

+ 27 - 0
code/test/components/jomjol-flowcontroll/test_flow_pp_negative.cpp

@@ -76,3 +76,30 @@ void testNegative() {
 
 }
 
+/**
+ * @brief Fehlerberichte aus Issues
+ * 
+ */
+void testNegative_Issues() {
+        // Ohne decimal_shift
+        std::vector<float> digits = { 2.0, 2.0, 0.0, 1.0, 7.2, 9.0, 8.0};
+        std::vector<float> analogs = { };
+        double preValue_extended = 22018.080;
+        double preValue = 22018.08;
+        
+        const char* expected = "22017.98";
+
+        // https://github.com/jomjol/AI-on-the-edge-device/issues/2145#issuecomment-1461899094
+        // extendResolution=false
+        // value < preValue
+        // Prüfung eingeschaltet => Fehler
+        preValue = 22018.08; // zu groß
+        UnderTestPost* underTestPost = init_do_flow(analogs, digits, Digital100, false, false, -2);
+        setAllowNegatives(underTestPost, false);
+        setPreValue(underTestPost, preValue_extended);
+        std::string result = process_doFlow(underTestPost);
+        TEST_ASSERT_EQUAL_STRING("Neg. Rate - Read:  - Raw: 22017.98 - Pre: 22018.08 ", underTestPost->getReadoutError().c_str());
+        TEST_ASSERT_EQUAL_STRING(expected, result.c_str());
+        delete underTestPost;
+
+}

+ 4 - 4
code/test/test_suite_flowcontroll.cpp

@@ -108,9 +108,9 @@ extern "C" void app_main()
   esp_log_level_set("*", ESP_LOG_DEBUG);        // set all components to ERROR level
 
   UNITY_BEGIN();
-  
-    RUN_TEST(testNegative);
-  
+    RUN_TEST(testNegative_Issues);
+  /* RUN_TEST(testNegative);
+   
     RUN_TEST(test_analogToDigit_Standard);
     RUN_TEST(test_analogToDigit_Transition);
     RUN_TEST(test_doFlowPP);
@@ -121,6 +121,6 @@ extern "C" void app_main()
 
     // getReadoutRawString test
     RUN_TEST(test_getReadoutRawString);
-  
+  */
   UNITY_END();
 }

BIN
sd-card/config/dig-class100_0160_s2_q.tflite