From 7761c6cdedab489325e2ae32e5f151dc6f7f7a56 Mon Sep 17 00:00:00 2001
From: gerald <gerald.moesenlechner@univie.ac.at>
Date: Wed, 31 Jan 2024 18:31:11 +0100
Subject: [PATCH] Release of V1.1

---
 test/DetectorFeatureTest.cpp |  50 +++++++++++++++--
 test/FCUTest.cpp             | 101 +++++++++++++++++++++++++++++------
 test/FCUTest.hpp             |   7 ++-
 test/HFSTest.cpp             |  76 +++++++++++++++++++-------
 test/HFS_config_test.xml     |   6 ++-
 test/UtilityTest.cpp         |  14 ++---
 test/example.cpp             |  63 +++++++++++-----------
 7 files changed, 236 insertions(+), 81 deletions(-)

diff --git a/test/DetectorFeatureTest.cpp b/test/DetectorFeatureTest.cpp
index c152e9a..b6ae68c 100644
--- a/test/DetectorFeatureTest.cpp
+++ b/test/DetectorFeatureTest.cpp
@@ -79,6 +79,16 @@ void DetectorFeaturesTest::testDark()
     std::cout << "Check if single hot pixel is a statistical outlier.\n";
 
     CPPUNIT_ASSERT(dark[100] > (mean + std));
+
+    std::cout << "Check dark mean = 0\n";
+
+    generate_dark(dark, 0, 1, hp, 200, 200);
+
+    mean = 0;
+    for(i = 0; i < 200*200; i++)
+    {
+        CPPUNIT_ASSERT_DOUBLES_EQUAL(dark[i], 0.0, 1e-7);
+    }
 }
 
 void DetectorFeaturesTest::testHotPixels()
@@ -113,13 +123,17 @@ void DetectorFeaturesTest::testFlat()
     }
 
     generate_flat(flat, 0.9, 0.08, 200, 200);
-    std::cout << "Check if flat values are not 0 and below 1.\n";
+    std::cout << "Check if flat values are below 1.\n";
 
     for(i = 0; i < 200*200; i++){
-        CPPUNIT_ASSERT(flat[i] > 0.0);
         CPPUNIT_ASSERT(flat[i] <= 1.0);
     }
+    generate_flat(flat, 0.05, 0.08, 200, 200);
+    std::cout << "Check if flat values are not smaller than 0.\n";
 
+    for(i = 0; i < 200*200; i++){
+        CPPUNIT_ASSERT(flat[i] >= 0.0);
+    }
 }
 
 void DetectorFeaturesTest::testStar()
@@ -284,6 +298,7 @@ void DetectorFeaturesTest::testBkgr()
 void DetectorFeaturesTest::testSmear()
 {
     unsigned int i;
+    int warning;
 
     for(i = 0; i < 125*125; i++){
         kernel[i] = 0.;
@@ -307,8 +322,37 @@ void DetectorFeaturesTest::testSmear()
         kernel[i] = 0.;
     }
 
-    generate_linear_smearing_kernel(kernel, -70, -70, 130, 130, 125);
+    warning = generate_linear_smearing_kernel(kernel, -70, -70, 130, 130, 125);
     std::cout << "Check limit failsave.\n";
     CPPUNIT_ASSERT(kernel[0] > 0.0);
     CPPUNIT_ASSERT(kernel[122 + 122*125] > 0.0);
+    CPPUNIT_ASSERT(warning == 1);
+    
+    for(i = 0; i < 125*125; i++){
+        kernel[i] = 0.;
+    }
+
+    warning = generate_linear_smearing_kernel(kernel, 0, 0, 0, 0, 125);
+    std::cout << "Check 0 lenght smear.\n";
+    CPPUNIT_ASSERT(warning == 0);
+    CPPUNIT_ASSERT(kernel[62 + 62*125] > 0.0);
+
+    for(i = 0; i < 125*125; i++){
+        kernel[i] = 0.;
+    }
+
+    generate_linear_smearing_kernel(kernel, 0, 0, 10, 0, 125);
+    std::cout << "Check linear x smear.\n";
+    CPPUNIT_ASSERT(kernel[62 + 125*62] > 0.0);
+    CPPUNIT_ASSERT(kernel[70 + 125*62] > 0.0);
+    
+    for(i = 0; i < 125*125; i++){
+        kernel[i] = 0.;
+    }
+
+    generate_linear_smearing_kernel(kernel, 0, 0, 0, 10, 125);
+    std::cout << "Check linear y smear.\n";
+    CPPUNIT_ASSERT(kernel[62 + 125*62] > 0.0);
+    CPPUNIT_ASSERT(kernel[62 + 125*70] > 0.0);
+
 }
diff --git a/test/FCUTest.cpp b/test/FCUTest.cpp
index 60a22fe..0aadf3b 100644
--- a/test/FCUTest.cpp
+++ b/test/FCUTest.cpp
@@ -16,6 +16,8 @@ void FCUTest::setUp()
     const char noStarName[128] = "./test/noStar.txt";
     const char acqImgName[128] = "./test/acquisitionTest.txt";
     const char starImgName[128] = "./test/trackingTest.txt";
+    sum_star = 0;
+    sum_acq = 0;
     std::ifstream noStarIf, starImgIf, acqImgIf;
 
     acqImgIf.open(acqImgName, std::ifstream::in);
@@ -24,6 +26,7 @@ void FCUTest::setUp()
         for (i = 0; i < 200*200; i++)
         {
             acqImgIf >> acqImg[i];
+            sum_acq = sum_acq + acqImg[i];
         }
         acqImgIf.close();
     }
@@ -50,6 +53,7 @@ void FCUTest::setUp()
         for (i = 0; i < 64*64; i++)
         {
             starImgIf >> starImg[i];
+            sum_star = sum_star + starImg[i];
         }
         starImgIf.close();
     }
@@ -60,15 +64,25 @@ void FCUTest::tearDown()
 {
 }
 
-void FCUTest::testMin()
+void FCUTest::testMinMean()
 {
     unsigned int testSet[10] = {3, 6, 0, 4, 9, 7, 5, 2, 8, 1};
+    int testSetMean[3] = {3, 6, 0};
     unsigned int res;
+    int resMean;
+    float mean, sig;
 
     res = GetMin(testSet, 10);
 
     CPPUNIT_ASSERT(res == 0);
 
+    resMean = MeanSigma(testSetMean, 0, &mean, &sig);
+    CPPUNIT_ASSERT(resMean == -1);
+
+    resMean = 0;
+    resMean = MeanSigma(testSetMean, 1, &mean, &sig);
+    CPPUNIT_ASSERT(resMean == -1);
+
 }
 
 void FCUTest::testMedianFilter()
@@ -106,58 +120,71 @@ void FCUTest::testValidation()
         
          
     std::cout << "Check Dimension check.\n";
-    package = CheckRoiForStar(noSignal, 0, 64, 100, 100, 0.6, 1, 32., 32.);
+    package = CheckRoiForStar(noSignal, 0, 64, 100, 100, 0.6, 1, 32., 32., 20, sum_star);
     std::cout << package.index << "\n";
     CPPUNIT_ASSERT(package.index == 111);
 
     package.index = 0;
 
-    package = CheckRoiForStar(noSignal, 64, 0, 100, 100, 0.6, 1, 32., 32.);
+    package = CheckRoiForStar(noSignal, 64, 0, 100, 100, 0.6, 1, 32., 32., 20, sum_star);
+    CPPUNIT_ASSERT(package.index == 111);
+    std::cout << package.index << "\n";
+    
+    package.index = 0;
+
+    package = CheckRoiForStar(noSignal, 15, 15, 100, 100, 0.6, 1, 32., 32., 20, sum_star);
     CPPUNIT_ASSERT(package.index == 111);
     std::cout << package.index << "\n";
 
     package.index = 0;
     std::cout << "Check constant image check.\n";
     
-    package = CheckRoiForStar(noSignal, 64, 64, 100, 100, 0.6, 1, 32., 32.);
+    package = CheckRoiForStar(noSignal, 64, 64, 100, 100, 0.6, 1, 32., 32., 20, sum_star);
     std::cout << package.index << "\n";
     CPPUNIT_ASSERT(package.index == 101);
 
     package.index = 0;
     std::cout << "Check no star check.\n";
     
-    package = CheckRoiForStar(noStar, 64, 64, 100, 20, 0.6, 1, 32., 32.);
+    package = CheckRoiForStar(noStar, 64, 64, 100, 20, 0.6, 1, 32., 32., 20, sum_star);
     std::cout << package.index << "\n";
     CPPUNIT_ASSERT(package.index == 102);
     
     package.index = 0;
     std::cout << "Check too low signal check.\n";
     
-    package = CheckRoiForStar(starImg, 64, 64, 10000, 20, 0.6, 1, 32., 32.);
+    package = CheckRoiForStar(starImg, 64, 64, 10000, 20, 0.6, 1, 32., 32., 20, sum_star);
     std::cout << package.index << "\n";
     CPPUNIT_ASSERT(package.index == 104);
     
     package.index = 0;
     std::cout << "Check too low sigma check.\n";
     
-    package = CheckRoiForStar(starImg, 64, 64, 100, 200, 0.6, 1, 32., 32.);
+    package = CheckRoiForStar(starImg, 64, 64, 100, 200, 0.6, 1, 32., 32., 20, sum_star);
     std::cout << package.index << "\n";
     CPPUNIT_ASSERT(package.index == 105);
 
     package.index = 0;
     std::cout << "Check too low pearson check.\n";
 
-    package = CheckRoiForStar(starImg, 64, 64, 100, 20, 1.0, 1, 32., 32.);
+    std_threshold(starImg, 64, 64);
+    package = CheckRoiForStar(starImg, 64, 64, 100, 20, 1.0, 1, 32., 32., 50, 18000);
     std::cout << package.index << "\n";
     CPPUNIT_ASSERT(package.index == 106);
 
     package.index = 0;
     std::cout << "Check valid output.\n";
     
-    package = CheckRoiForStar(starImg, 64, 64, 100, 20, 0.0, 1, 32., 32.);
+    package = CheckRoiForStar(starImg, 64, 64, 100, 20, 0.0, 1, 32., 32., 50, 18000);
+    std::cout << package.index << "\n";
+    CPPUNIT_ASSERT(package.index < 1.0);
+    
+    package.index = 0;
+    std::cout << "Check valid output.\n";
+    
+    package = CheckRoiForStar(starImg, 64, 64, 100, 20, 0.0, 2, 32., 32., 50, 18000);
     std::cout << package.index << "\n";
     CPPUNIT_ASSERT(package.index < 1.0);
-
 }
 
 void FCUTest::testAcquisition()
@@ -165,9 +192,8 @@ void FCUTest::testAcquisition()
     struct coord output;
     
     std::cout << "Check valid output.\n";
-
-    output = SourceDetection(acqImg, 200, 200, 0, 1, 4, 30000, 50, 20, 3, 5., 5., 100, 20, 0.3);
-
+    std_threshold(acqImg, 200, 200);
+    output = SourceDetection(acqImg, 200, 200, 1, 4, 22000, 50, 20, 3, 5., 5., 100, 50, 0.3);
     CPPUNIT_ASSERT(output.x < 100.0);
     CPPUNIT_ASSERT(output.x > 99.0);
     CPPUNIT_ASSERT(output.y < 100.0);
@@ -177,8 +203,15 @@ void FCUTest::testAcquisition()
 
     std::cout << "Check no valid target.\n";
 
-    output = SourceDetection(acqImg, 200, 200, 0, 1, 4, 200000, 50, 20, 3, 5., 5., 100, 20, 0.3);
+    output = SourceDetection(acqImg, 200, 200, 1, 4, 200000, 50, 20, 3, 5., 5., 100, 50, 0.3);
+    CPPUNIT_ASSERT(output.validity.flag == 0); 
+    
+    std::cout << "Check dimension check.\n";
+
+    output = SourceDetection(acqImg, 2, 2, 1, 4, sum_acq, 50, 20, 3, 5., 5., 100, 50, 0.3);
     CPPUNIT_ASSERT(output.validity.flag == 0); 
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(output.x, 0.0, 1e-7);    
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(output.y, 0.0, 1e-7);
 }
 
 void FCUTest::testCentroid()
@@ -186,8 +219,8 @@ void FCUTest::testCentroid()
     struct coord output;
 
     std::cout << "Check valid output.\n";
-
-    output = ArielCoG(starImg, 64, 64, 5, 0, 5., 5., 1, 100, 20, 0.3);
+    std_threshold(starImg, 64, 64);
+    output = ArielCoG(starImg, 64, 64, 5, 5., 5., 1, 100, 20, 0.3, 50, 18000);
     CPPUNIT_ASSERT(output.x < 32.0);
     CPPUNIT_ASSERT(output.x > 31.0);
     CPPUNIT_ASSERT(output.y < 32.0);
@@ -197,8 +230,42 @@ void FCUTest::testCentroid()
 
     std::cout << "Check invalid output.\n";
 
-    output = ArielCoG(noStar, 64, 64, 5, 0, 5., 5., 1, 100, 200, 0.3);
+    output = ArielCoG(noStar, 64, 64, 5, 5., 5., 1, 100, 200, 0.3, 50, sum_star);
     CPPUNIT_ASSERT(output.validity.flag == 0); 
 
 }
 
+void FCUTest::testThreshold()
+{
+    unsigned int i;
+    unsigned int sum, mean, std, sumSquare, min, max, maxOg;
+
+    sum = 0;
+    sumSquare = 0;
+    maxOg = 0;
+    for(i = 0; i < 64*64; i++){
+        sum = sum + starImg[i];
+        sumSquare = sumSquare + (starImg[i] * starImg[i]);
+        if(starImg[i] > maxOg)
+            maxOg = starImg[i];
+    }
+    mean = (unsigned int) (sum / (64 * 64));
+    std = (unsigned int) sqrt((sumSquare / (64 * 64)) - (mean*mean));
+
+    std_threshold(starImg, 64, 64);
+
+    min = starImg[0];
+    max = starImg[0];
+
+    for(i = 0; i < 64*64; i++){
+        if(starImg[i] < min)
+            min = starImg[i];
+        if(starImg[i] > max)
+            max = starImg[i];
+    }
+
+    CPPUNIT_ASSERT(min == 0);
+    CPPUNIT_ASSERT(max == (maxOg - mean - std));
+
+}
+
diff --git a/test/FCUTest.hpp b/test/FCUTest.hpp
index 18e4dfc..23183b9 100644
--- a/test/FCUTest.hpp
+++ b/test/FCUTest.hpp
@@ -6,16 +6,18 @@
 class FCUTest : public CppUnit::TestFixture
 {
   CPPUNIT_TEST_SUITE(FCUTest);
-  CPPUNIT_TEST(testMin);
+  CPPUNIT_TEST(testMinMean);
   CPPUNIT_TEST(testMedianFilter);
   CPPUNIT_TEST(testValidation);
   CPPUNIT_TEST(testAcquisition);
   CPPUNIT_TEST(testCentroid);
+  CPPUNIT_TEST(testThreshold);
   CPPUNIT_TEST_SUITE_END();
   unsigned int noSignal[64*64];
   unsigned int noStar[64*64];
   unsigned int starImg[64*64];
   unsigned int acqImg[200*200];
+  unsigned int sum_star, sum_acq;
 
 
 public:
@@ -24,11 +26,12 @@ public:
   void setUp();
   void tearDown();
 
-  void testMin();
+  void testMinMean();
   void testMedianFilter();
   void testValidation();
   void testAcquisition();
   void testCentroid();
+  void testThreshold();
   };
 
 #endif //FCUTEST_H
diff --git a/test/HFSTest.cpp b/test/HFSTest.cpp
index 72f61e4..e8e8786 100644
--- a/test/HFSTest.cpp
+++ b/test/HFSTest.cpp
@@ -108,6 +108,8 @@ void HFSTest::testConstructor()
 
     CPPUNIT_ASSERT_EQUAL((int)state.med_track, 1);
 
+    CPPUNIT_ASSERT_EQUAL((int)state.tolerance_track, 20);
+
     CPPUNIT_ASSERT_EQUAL((int)state.threshold_track, 1);
 
     CPPUNIT_ASSERT_DOUBLES_EQUAL(state.delay_track, 0.02, 0.001);
@@ -194,33 +196,77 @@ void HFSTest::testTransformation()
     char path[] = "./test/HFS_config_test.xml";
     char* real_path = realpath(path, NULL);
     FGS fgs(real_path);
-    double vecx[3] = {1e-5 ,0 , 0};
-    double vecy[3] = {0 ,1e-5 , 0};
-    double vecz[3] = {0 ,0 , 1e-5};
+    double vecx[3] = {1e-5, 0, 1};
+    double vecy[3] = {0, 1e-5, 1};
+    double vecz[3] = {0, 0, 1};
     double vecVel[3] = {0, 0, 0};
     double output[2];
     double velRes;
 
     fgs.transform_to_detector(vecx, vecVel, 0, 0,  output);
-    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[0], 0, 1e-7);
-    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[1], 1.7*1e-8*(360/TWO_PI)*3600000/176.0, 0.1);
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[0], 1e-5*(360/TWO_PI)*3600000/175.00, 1e-5);
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[1], 0, 1e-7);
 
     fgs.transform_to_detector(vecy, vecVel, 0, 0, output);
-    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[0], 1e-5*(360/TWO_PI)*3600000/176.0, 0.1);
-    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[1], 0, 1e-7);
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[0], 0, 1e-7);
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[1], 1e-5*(360/TWO_PI)*3600000/175.0, 1e-5);
 
     fgs.transform_to_detector(vecz, vecVel, 0, 0, output);
-    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[0], 0, 1e-7);
-    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[1], 0.999998*1e-5*(360/TWO_PI)*3600000/176.0, 0.1);
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[0], 0, 1e-5);
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[1], 0, 1e-5);
+
+    vecVel[0] = 5;
 
-    vecVel[0] = 1000;
+    fgs.transform_to_detector(vecx, vecVel, 0, 0,  output);
+
+    velRes = (1e-5 + 5/CVEL)*(360/TWO_PI)*3600000/175.0;
+
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[0], velRes, 1e-5);
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[1], 0, 1e-5);
+
+    vecVel[0] = 0;
+    vecVel[1] = 5;
 
+    fgs.transform_to_detector(vecy, vecVel, 0, 0,  output);
+    velRes = (1e-5 + 5/CVEL)*(360/TWO_PI)*3600000/175.0;
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[0], 0, 1e-5);
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[1], velRes, 1e-5);
+
+    vecVel[1] = 0;
+    vecVel[0] = 0;
+    fgs.set_mode("Acquisition");
+    
+    vecx[0] = 1e-5;
+    vecx[1] = 0;
+    vecx[2] = 1;
     fgs.transform_to_detector(vecx, vecVel, 0, 0,  output);
-    velRes = 1.7*1e-8 - 1.7/CVEL;
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[0], 1e-5*(360/TWO_PI)*3600000/175.00, 1e-5);
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[1], 0, 1e-7);
+    vecy[0] = 0;
+    vecy[1] = 1e-5;
+    vecy[2] = 1;
+    fgs.transform_to_detector(vecy, vecVel, 0, 0, output);
     CPPUNIT_ASSERT_DOUBLES_EQUAL(output[0], 0, 1e-7);
-    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[1], velRes*(360/TWO_PI)*3600000/176.0, 0.1);
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[1], 1e-5*(360/TWO_PI)*3600000/175.0, 1e-5);
+
+    fgs.transform_to_detector(vecz, vecVel, 0, 0, output);
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[0], 0, 1e-5);
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[1], 0, 1e-5);
+
+    vecVel[0] = 5;
+
+    fgs.transform_to_detector(vecx, vecVel, 0, 0,  output);
+    velRes = (1e-5 + 5/CVEL)*(360/TWO_PI)*3600000/175.0;
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[0], velRes, 1e-5);
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[1], 0, 1e-5);
 
+    vecVel[0] = 0;
+    vecVel[1] = 5;
 
+    fgs.transform_to_detector(vecy, vecVel, 0, 0,  output);
+    velRes = (1e-5 + 5/CVEL)*(360/TWO_PI)*3600000/175.0;
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[0], 0, 1e-5);
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(output[1], velRes, 1e-5);
 }
 
 void HFSTest::testMainLoop()
@@ -290,13 +336,11 @@ void HFSTest::testMainLoop()
     std::cout << "Check time propagation\n";
     CPPUNIT_ASSERT_DOUBLES_EQUAL(state.sim_time, dt, 0.00001);
     CPPUNIT_ASSERT_DOUBLES_EQUAL(state.start_exposure, 0.0, 0.00001);
-
     for(i = 0; i < 10; i++)
     {
         update.time = update.time + dt;    
         fgs.set_params(update, &outPacket);
     }
-    
     state = fgs.get_hfs_state();
 
     std::cout << "Check new integration start\n";
@@ -326,7 +370,6 @@ void HFSTest::testMainLoop()
         update.time = update.time + dt;    
         fgs.set_params(update, &outPacket);
     }
-    
     state = fgs.get_hfs_state();
     CPPUNIT_ASSERT_EQUAL((int )state.channel, 2);
 
@@ -345,7 +388,6 @@ void HFSTest::testMainLoop()
         update.time = update.time + dt;    
         fgs.set_params(update, &outPacket);
     }
-
     state = fgs.get_hfs_state();
 
     CPPUNIT_ASSERT_DOUBLES_EQUAL(state.reset_end, 0.0, 0.0001);
@@ -416,13 +458,11 @@ void HFSTest::testSave()
     fgs.set_params(update, &outPacket);
 
     update.channel = 2;
-    
     for(i = 0; i < 50; i++)
     {
         update.time = update.time + dt;    
         fgs.set_params(update, &outPacket);
     }
-
     update.save = 1;
     fgs.set_params(update, &outPacket);
     update.save = 0;
diff --git a/test/HFS_config_test.xml b/test/HFS_config_test.xml
index 54e7b02..c388fb0 100644
--- a/test/HFS_config_test.xml
+++ b/test/HFS_config_test.xml
@@ -147,6 +147,8 @@
     <delay>0.02</delay>
     <!-- Exposure time for mode Tracking in s, default: 0.1 -->
     <exposure_time>0.1</exposure_time>
+    <!--  Brightness tolerance for Validation default is 20% -->
+    <tolerance>20</tolerance>
     <!-- Dimension of the Tracking window in px, default: 64 -->
     <dim>64</dim>
   </Tracking>
@@ -176,8 +178,8 @@
     <extension_sigma>1000</extension_sigma>
   </Acquisition>
 
-  <!--  Relative path to the star catalouge -->
-  <Star_catalouge>./src/Star_catalouge.csv</Star_catalouge>
+  <!--  Relative path to the star catalogue -->
+  <Star_catalogue>./src/Star_catalogue.csv</Star_catalogue>
 
   <!-- 	Flag indicating if images features shall be generated from existing files. 
   	Only applicable for saved states-->
diff --git a/test/UtilityTest.cpp b/test/UtilityTest.cpp
index 7521ce7..3ada056 100644
--- a/test/UtilityTest.cpp
+++ b/test/UtilityTest.cpp
@@ -92,14 +92,14 @@ void UtilityTest::testUpsampling()
 
     sum = 0.0;
     sumUp = 0.0;
-    for(i = 0; i > 1000*1000; i++){
+    for(i = 0; i < 1000*1000; i++){
         if(i < 200*200){
             sum = sum + array[i];
         }
         sumUp = sumUp  + upArray[i];
     }
 
-    std::cout << "Check sum off upsampled array without copy.\n";
+    std::cout << "Check sum of upsampled array without copy.\n";
     CPPUNIT_ASSERT_DOUBLES_EQUAL(sum, sumUp, 0.0001);
 
     for(i = 0; i < 1000*1000; i++){
@@ -109,14 +109,14 @@ void UtilityTest::testUpsampling()
     upsample_image(array, upArray, 200, 200, 1000, 1000, 5, 1);
     sum = 0.0;
     sumUp = 0.0;
-    for(i = 0; i > 1000*1000; i++){
+    for(i = 0; i < 1000*1000; i++){
         if(i < 200*200){
             sum = sum + array[i];
         }
         sumUp = sumUp  + upArray[i];
     }
 
-    std::cout << "Check sum off upsampled array with copy.\n";
+    std::cout << "Check sum of upsampled array with copy.\n";
     CPPUNIT_ASSERT_DOUBLES_EQUAL(sum * 25, sumUp, 0.0001);
 
 }
@@ -146,15 +146,15 @@ void UtilityTest::testDownsampling()
     CPPUNIT_ASSERT_DOUBLES_EQUAL(dsArray[1], 0.0, 0.0001);
     sum = 0.0;
     sumDown = 0.0;
-    for(i = 0; i > 1000*1000; i++){
+    for(i = 0; i < 1000*1000; i++){
         if(i < 200*200){
             sumDown = sumDown + dsArray[i];
         }
         sum = sum  + array[i];
     }
 
-    std::cout << "Check sum off upsampled array without copy.\n";
-    CPPUNIT_ASSERT_DOUBLES_EQUAL(sum, sumDown, 0.0001);
+    std::cout << "Check sum of downsampled array.\n";
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(1, sumDown, 0.0001);
     for(i = 0; i < 1000*1000; i++){
         array[i] = 0.0;
     }
diff --git a/test/example.cpp b/test/example.cpp
index 727655d..75f300f 100644
--- a/test/example.cpp
+++ b/test/example.cpp
@@ -11,14 +11,14 @@ int main()
   using std::chrono::milliseconds;
   char path[] = "./src/HFS_config.xml";
   char* real_path = realpath(path, NULL);
-  hfs_parameters update;
-  centroid_packet output;
+  hfs_parameters update = hfs_parameters();
+  outputHfs outPacket = outputHfs();
   unsigned int i, ctr_tra, ctr_acq;
   double time;
   double sum_x_tra, sum_y_tra, sum_x_acq, sum_y_acq; /*Values for mean*/
   /*Quaternion to put WASP-11 in the center of the DRF*/
   /*The resuling measurement of the */
-  double quat[4] = {0.8892834993148474, -0.0006038143244162956, 0.2873837014059442, -0.3557880006700909};
+  double quat[4] = {0.8689485897529942 , 0.36411458356110155 , -0.3351849018145181, 0.0};
   double vel[3] = {0.0, 0.0, 0.0};
 
   /*Initialise FGS simulator by calling constructor*/
@@ -30,7 +30,7 @@ int main()
   sum_y_tra = 0.;
   ctr_acq = 0;
   ctr_tra = 0;
-  output.time = 0.;
+  outPacket.time = 0.;
   time = 0.;
 
   /*Parameters of the hfs_parameters input packet*/
@@ -94,15 +94,15 @@ int main()
     /*time step equivilant to 64Hz sampling*/
     /*call update method of FGS class, centroid packet output is
       updated once the measurement packet was sent*/
-    fgs.set_params(update, &output);
+    fgs.set_params(update, &outPacket);
     /*Print measurement if it changed*/
     update.time = update.time + 0.015625;
-    if(time != output.time)
+    if(time != outPacket.time)
     {
-      time = output.time;
-      std::cout << "Packet time: " << output.time << "\tx: " << output.x << "\ty: " << output.y << "\tMode: " << output.mode << "\tvalidity: " << output.validity_flag << "\tIndex: " << output.validity_index << "\n";
-      sum_x_tra += output.x;
-      sum_y_tra += output.y;
+      time = outPacket.time;
+      std::cout << "Packet time: " << outPacket.time << "\tx: " << outPacket.x << "\ty: " << outPacket.y << "\tMode: " << outPacket.mode << "\tvalidity: " << outPacket.validity_flag << "\tIndex: " << outPacket.validity_index << "\n";
+      sum_x_tra += outPacket.x;
+      sum_y_tra += outPacket.y;
       ctr_tra++;
     }
   }
@@ -113,22 +113,21 @@ int main()
   std::cout << "###################################\n";
 
   update.mode = 1;
-  update.validation_signal = 80000;
 
   /*Unit quaternion of the current SC attitude in reference to J2000*/
   update.position_quat[0] = quat[0];
 
   for(i = 0; i < 10000; i++)
   {
-    fgs.set_params(update, &output);
+    fgs.set_params(update, &outPacket);
     update.time = update.time + 0.015625;
 
-    if(time != output.time)
+    if(time != outPacket.time)
     {
-      time = output.time;
-      std::cout << "Packet time: " << output.time << "\tx: " << output.x << "\ty: " << output.y << "\tMode: " << output.mode << "\tvalidity: " << output.validity_flag << "\tIndex: " << output.validity_index << "\n";
-      sum_x_acq += output.x;
-      sum_y_acq += output.y;
+      time = outPacket.time;
+      std::cout << "Packet time: " << outPacket.time << "\tx: " << outPacket.x << "\ty: " << outPacket.y << "\tMode: " << outPacket.mode << "\tvalidity: " << outPacket.validity_flag << "\tIndex: " << outPacket.validity_index << "\n";
+      sum_x_acq += outPacket.x;
+      sum_y_acq += outPacket.y;
       ctr_acq++;
     }
   }
@@ -136,21 +135,20 @@ int main()
   std::cout << "###################################\n";
   std::cout << "Mode Change Acquisition -> Tracking\n";
   std::cout << "Centroids set to invalid\n";
-  std::cout << "##################################\n";
+  std::cout << "###################################\n";
 
   update.mode = 2;
   update.set_invalid = 1;
-  update.validation_signal = 80000;
 
   for(i = 0; i < 1000; i++)
   {
-    fgs.set_params(update, &output);
+    fgs.set_params(update, &outPacket);
     update.time = update.time + 0.015625;
 
-    if(time != output.time)
+    if(time != outPacket.time)
 	{
-      time = output.time;
-      std::cout << "Packet time: " << output.time << "\tx: " << output.x << "\ty: " << output.y << "\tMode: " << output.mode << "\tvalidity: " << output.validity_flag << "\tIndex: " << output.validity_index << "\n";
+      time = outPacket.time;
+      std::cout << "Packet time: " << outPacket.time << "\tx: " << outPacket.x << "\ty: " << outPacket.y << "\tMode: " << outPacket.mode << "\tvalidity: " << outPacket.validity_flag << "\tIndex: " << outPacket.validity_index << "\n";
     }
   }
 
@@ -164,27 +162,28 @@ int main()
 
   for(i = 0; i < 1000; i++)
   {
-    fgs.set_params(update, &output);
+    fgs.set_params(update, &outPacket);
     update.time = update.time + 0.015625; 
-    if(time != output.time)
+    if(time != outPacket.time)
     {
-      time = output.time;
-      std::cout << "Packet time: " << output.time << "\tx: " << output.x << "\ty: " << output.y << "\tMode: " << output.mode << "\tvalidity: " << output.validity_flag << "\tIndex: " << output.validity_index << "\n";
+      time = outPacket.time;
+      std::cout << "Packet time: " << outPacket.time << "\tx: " << outPacket.x << "\ty: " << outPacket.y << "\tMode: " << outPacket.mode << "\tvalidity: " << outPacket.validity_flag << "\tIndex: " << outPacket.validity_index << "\n";
     }
   }
-  
+ 
+    
   
   auto t2 = high_resolution_clock::now();
 
   duration<double, std::milli> ms_double = t2 - t1;
-  std::cout << "\nSimulating " << output.time << "s took: " << ms_double.count() << "ms\n";
+  std::cout << "\nSimulating " << outPacket.time << "s took: " << ms_double.count() << "ms\n";
 
-  std::cout << "Sim is " << output.time / (ms_double.count()/1000) << " times faster than real time!\n";
+  std::cout << "Sim is " << outPacket.time / (ms_double.count()/1000) << " times faster than real time!\n";
 
   std::cout << "Mean Measurement for Tracking: \n x: " << sum_x_tra/ctr_tra << "\n y: " << sum_y_tra/ctr_tra << "\n\n";
-  std::cout << "Tracking Reference Values: \n x: 484.415mas\n y: 805.169mas\n\n";
+  std::cout << "Tracking Reference Values: \n x: 626.992mas\n y: 434.458mas\n\n";
 
   std::cout << "Mean Measurement for Acquisition: \n x: " << sum_x_acq/ctr_acq << "\n y: " << sum_y_acq/ctr_acq << "\n\n";
-  std::cout << "Acquisition Reference Values: \n x: 692.876mas\n y: 1093.11mas\n\n";
+  std::cout << "Acquisition Reference Values: \n x: 797.934mas\n y: 435.655mas\n\n";
 
 }
-- 
GitLab