Переглянути джерело

Test case for postprocessing

Frank Haverland 3 роки тому
батько
коміт
b6bf8d992f

+ 3 - 3
code/main/version.cpp

@@ -1,4 +1,4 @@
-const char* GIT_REV="bfe8d3b";
+const char* GIT_REV="7315f9a+";
 const char* GIT_TAG="";
 const char* GIT_TAG="";
-const char* GIT_BRANCH="master";
-const char* BUILD_TIME="2022-08-13 14:22";
+const char* GIT_BRANCH="analogtodig_as_float";
+const char* BUILD_TIME="2022-08-21 15:32";

+ 3 - 15
code/test/components/jomjol-flowcontroll/test_cnnflowcontroll.cpp

@@ -1,7 +1,7 @@
 #include <unity.h>
 #include <unity.h>
 #include <ClassFlowCNNGeneral.h>
 #include <ClassFlowCNNGeneral.h>
 
 
-class UnderTest : public ClassFlowCNNGeneral {
+class UnderTestCNN : public ClassFlowCNNGeneral {
     public:
     public:
     using ClassFlowCNNGeneral::ZeigerEval;
     using ClassFlowCNNGeneral::ZeigerEval;
     using ClassFlowCNNGeneral::ZeigerEvalHybrid;
     using ClassFlowCNNGeneral::ZeigerEvalHybrid;
@@ -10,25 +10,13 @@ class UnderTest : public ClassFlowCNNGeneral {
 };
 };
 
 
 
 
-void setUp(void)
-{
-  // set stuff up here
-}
-
-void tearDown(void)
-{
-  // clean stuff up here
-}
-
-
-
 /**
 /**
  * @brief test if all combinations of digit 
  * @brief test if all combinations of digit 
  * evaluation are running correctly
  * evaluation are running correctly
  */
  */
 void test_ZeigerEval() 
 void test_ZeigerEval() 
 {
 {
-    UnderTest undertest = UnderTest(nullptr, Digital100);
+    UnderTestCNN undertest = UnderTestCNN(nullptr, Digital100);
 
 
     // the 5.2 is already above 5.0 and the previous digit too (3)
     // the 5.2 is already above 5.0 and the previous digit too (3)
     int result = undertest.ZeigerEval(5.2, 3);
     int result = undertest.ZeigerEval(5.2, 3);
@@ -51,7 +39,7 @@ void test_ZeigerEval()
  * evaluation are running correctly
  * evaluation are running correctly
  */
  */
 void test_ZeigerEvalHybrid() {
 void test_ZeigerEvalHybrid() {
-    UnderTest undertest = UnderTest(nullptr, Digital100);
+    UnderTestCNN undertest = UnderTestCNN(nullptr, Digital100);
 
 
     // the 5.2 and no previous should round down
     // the 5.2 and no previous should round down
     TEST_ASSERT_EQUAL(5, undertest.ZeigerEvalHybrid(5.2, 0, -1));
     TEST_ASSERT_EQUAL(5, undertest.ZeigerEvalHybrid(5.2, 0, -1));

+ 98 - 0
code/test/components/jomjol-flowcontroll/test_flowpostprocessing.cpp

@@ -0,0 +1,98 @@
+#include <unity.h>
+#include <ClassFlowPostProcessing.h>
+#include <ClassFlowCNNGeneral.h>
+#include <ClassFlowCNNGeneral.h>
+#include <ClassFlowMakeImage.h>
+
+
+ClassFlowCNNGeneral* _analog;
+ClassFlowCNNGeneral* _digit;
+std::vector<ClassFlow*> FlowControll;
+ClassFlowMakeImage* flowmakeimage;
+
+
+class UnderTestPost : public ClassFlowPostProcessing {
+    public:
+        UnderTestPost(std::vector<ClassFlow*>* lfc, ClassFlowCNNGeneral *_analog, ClassFlowCNNGeneral *_digit)
+            : ClassFlowPostProcessing::ClassFlowPostProcessing(lfc, _analog, _digit) {}
+        using ClassFlowPostProcessing::InitNUMBERS;
+};
+
+UnderTestPost* undertestPost;
+
+
+void setUpClassFlowPostprocessing(void)
+{
+    
+    // wird im doFlow verwendet
+    flowmakeimage = new ClassFlowMakeImage(&FlowControll);
+    FlowControll.push_back(flowmakeimage);
+
+    // Die Modeltypen werden gesetzt, da keine Modelle verwendet werden.
+    _analog = new ClassFlowCNNGeneral(nullptr, Analogue100);
+    
+    _digit =  new ClassFlowCNNGeneral(nullptr, Digital100);
+
+    undertestPost = new UnderTestPost(&FlowControll, _analog, _digit);
+  
+}
+
+
+/**
+ * @brief getestet wird das Ergebnis von
+ * digit1 = 1.2
+ * digit2 = 6.7
+ * analog1 = 9.5
+ * analog2 = 8.4
+ * 
+ * Das Ergebnis sollte "16.984" sein.
+ */
+void test_doFlow() {
+    // setup the classundertest
+    setUpClassFlowPostprocessing();
+
+    printf("SetupClassFlowPostprocessing completed.\n");
+
+    general* gen_digit = _digit->GetGENERAL("default", true);
+    // digit1
+    roi* digit1 = new roi();
+    digit1->name = "digit1";
+    digit1->result_float = 1.2;
+    gen_digit->ROI.push_back(digit1);
+    // digit2
+    roi* digit2 = new roi();
+    digit2->name = "digit2";
+    digit2->result_float = 6.7;
+    gen_digit->ROI.push_back(digit2);
+    
+    general* gen_analog = _analog->GetGENERAL("default", true);
+    // analog1
+    roi* analog1 = new roi();
+    analog1->name = "analog1";
+    analog1->result_float = 9.5;
+    gen_analog->ROI.push_back(analog1);
+    
+    // analog2
+    roi* analog2 = new roi();
+    analog2->name = "analog2";
+    analog2->result_float = 8.4;
+    gen_analog->ROI.push_back(analog2);
+ 
+    printf("Setup ROIs completed.\n");
+
+    undertestPost->InitNUMBERS();
+
+
+    string time;
+    // run test
+    TEST_ASSERT_TRUE(undertestPost->doFlow(time));
+
+    printf("DoFlow completed.\n");
+
+
+    TEST_ASSERT_EQUAL_STRING("0000", undertestPost->getReadout(0).c_str());
+
+}
+
+
+

+ 75 - 0
code/test/test_suite_flowcontroll.cpp

@@ -1,5 +1,78 @@
 #include <unity.h>
 #include <unity.h>
 #include "components/jomjol-flowcontroll/test_cnnflowcontroll.cpp"
 #include "components/jomjol-flowcontroll/test_cnnflowcontroll.cpp"
+#include "components/jomjol-flowcontroll/test_flowpostprocessing.cpp"
+// SD-Card ////////////////////
+#include "nvs_flash.h"
+#include "esp_vfs_fat.h"
+#include "sdmmc_cmd.h"
+#include "driver/sdmmc_host.h"
+#include "driver/sdmmc_defs.h"
+static const char *TAGMAIN = "main";
+
+bool Init_NVS_SDCard()
+{
+    esp_err_t ret = nvs_flash_init();
+    if (ret == ESP_ERR_NVS_NO_FREE_PAGES) {
+        ESP_ERROR_CHECK(nvs_flash_erase());
+        ret = nvs_flash_init();
+    }
+////////////////////////////////////////////////
+
+    ESP_LOGI(TAGMAIN, "Using SDMMC peripheral");
+    sdmmc_host_t host = SDMMC_HOST_DEFAULT();
+
+    // This initializes the slot without card detect (CD) and write protect (WP) signals.
+    // Modify slot_config.gpio_cd and slot_config.gpio_wp if your board has these signals.
+    sdmmc_slot_config_t slot_config = SDMMC_SLOT_CONFIG_DEFAULT();
+
+    // To use 1-line SD mode, uncomment the following line:
+
+#ifdef __SD_USE_ONE_LINE_MODE__
+    slot_config.width = 1;
+#endif
+
+    // GPIOs 15, 2, 4, 12, 13 should have external 10k pull-ups.
+    // Internal pull-ups are not sufficient. However, enabling internal pull-ups
+    // does make a difference some boards, so we do that here.
+    gpio_set_pull_mode(GPIO_NUM_15, GPIO_PULLUP_ONLY);   // CMD, needed in 4- and 1- line modes
+    gpio_set_pull_mode(GPIO_NUM_2, GPIO_PULLUP_ONLY);    // D0, needed in 4- and 1-line modes
+#ifndef __SD_USE_ONE_LINE_MODE__
+    gpio_set_pull_mode(GPIO_NUM_4, GPIO_PULLUP_ONLY);    // D1, needed in 4-line mode only
+    gpio_set_pull_mode(GPIO_NUM_12, GPIO_PULLUP_ONLY);   // D2, needed in 4-line mode only
+#endif
+    gpio_set_pull_mode(GPIO_NUM_13, GPIO_PULLUP_ONLY);   // D3, needed in 4- and 1-line modes
+
+    // Options for mounting the filesystem.
+    // If format_if_mount_failed is set to true, SD card will be partitioned and
+    // formatted in case when mounting fails.
+    esp_vfs_fat_sdmmc_mount_config_t mount_config = {
+        .format_if_mount_failed = false,
+        .max_files = 5,
+        .allocation_unit_size = 16 * 1024
+    };
+
+    // Use settings defined above to initialize SD card and mount FAT filesystem.
+    // Note: esp_vfs_fat_sdmmc_mount is an all-in-one convenience function.
+    // Please check its source code and implement error recovery when developing
+    // production applications.
+    sdmmc_card_t* card;
+    ret = esp_vfs_fat_sdmmc_mount("/sdcard", &host, &slot_config, &mount_config, &card);
+
+    if (ret != ESP_OK) {
+        if (ret == ESP_FAIL) {
+            ESP_LOGE(TAGMAIN, "Failed to mount filesystem. "
+                "If you want the card to be formatted, set format_if_mount_failed = true.");
+        } else {
+            ESP_LOGE(TAGMAIN, "Failed to initialize the card (%s). "
+                "Make sure SD card lines have pull-up resistors in place.", esp_err_to_name(ret));
+        }
+        return false;
+    }
+    sdmmc_card_print_info(stdout, card);
+
+    return true;
+}
+
 
 
 /**
 /**
  * @brief startup the test. Like a test-suite 
  * @brief startup the test. Like a test-suite 
@@ -7,10 +80,12 @@
  */
  */
 extern "C" void app_main()
 extern "C" void app_main()
 {
 {
+  Init_NVS_SDCard();
   UNITY_BEGIN();
   UNITY_BEGIN();
 
 
   RUN_TEST(test_ZeigerEval);
   RUN_TEST(test_ZeigerEval);
   RUN_TEST(test_ZeigerEvalHybrid);
   RUN_TEST(test_ZeigerEvalHybrid);
+  RUN_TEST(test_doFlow);
   
   
   UNITY_END();
   UNITY_END();
 }
 }

+ 3 - 3
code/version.cpp

@@ -1,4 +1,4 @@
-const char* GIT_REV="bfe8d3b";
+const char* GIT_REV="7315f9a+";
 const char* GIT_TAG="";
 const char* GIT_TAG="";
-const char* GIT_BRANCH="master";
-const char* BUILD_TIME="2022-08-13 14:22";
+const char* GIT_BRANCH="analogtodig_as_float";
+const char* BUILD_TIME="2022-08-21 15:32";