LCOV - code coverage report
Current view: top level - Mock - TriangleGeneratorFilter.cpp (source / functions) Hit Total Coverage
Test: coverage.info.cleaned Lines: 21 21 100.0 %
Date: 2021-02-18 20:07:22 Functions: 19 28 67.9 %

          Line data    Source code
       1             : /**
       2             :  * \file TriangleGeneratorFilter.cpp
       3             :  */
       4             : 
       5             : #include "TriangleGeneratorFilter.h"
       6             : #include <ATK/Core/TypeTraits.h>
       7             : 
       8             : #include <cstdint>
       9             : #include <complex>
      10             : 
      11             : namespace ATK
      12             : {
      13             :   template<class DataType_>
      14         110 :   TriangleGeneratorFilter<DataType_>::TriangleGeneratorFilter()
      15         110 :   :TypedBaseFilter<DataType_>(0, 1)
      16             :   {
      17         110 :   }
      18             :   
      19             :   template<class DataType_>
      20         108 :   void TriangleGeneratorFilter<DataType_>::set_amplitude(DataType_ amplitude)
      21             :   {
      22         108 :     this->amplitude = amplitude;
      23         108 :   }
      24             : 
      25             :   template<class DataType_>
      26         109 :   void TriangleGeneratorFilter<DataType_>::set_frequency(int frequency)
      27             :   {
      28         109 :     this->frequency = frequency;
      29         109 :   }
      30             :   
      31             :   template<class DataType_>
      32        2156 :   void TriangleGeneratorFilter<DataType_>::process_impl(gsl::index size) const
      33             :   {    
      34        2156 :     double real_increment = 2. / output_sampling_rate * frequency;
      35             :     
      36    22110330 :     for(gsl::index i = 0; i < size; ++i)
      37             :     {
      38    22108190 :       state += real_increment * (ascending ? 1 : -1);
      39    22108190 :       if(state >= 1)
      40             :       {
      41      230329 :         state -= 2 * real_increment;
      42      230329 :         ascending = !ascending;
      43             :       }
      44    21877830 :       else if(state <= -1)
      45             :       {
      46      230227 :         state += 2 * real_increment;
      47      230227 :         ascending = !ascending;
      48             :       }
      49    22108190 :       outputs[0][i] = TypeTraits<DataType>::from_double(TypeTraits<DataType>::to_double(amplitude) * state);
      50             :     }
      51        2156 :   }
      52             : 
      53             :   template class TriangleGeneratorFilter<std::int16_t>;
      54             :   template class TriangleGeneratorFilter<std::int32_t>;
      55             :   template class TriangleGeneratorFilter<std::int64_t>;
      56             :   template class TriangleGeneratorFilter<float>;
      57             :   template class TriangleGeneratorFilter<double>;
      58             :   template class TriangleGeneratorFilter<std::complex<float>>;
      59             :   template class TriangleGeneratorFilter<std::complex<double>>;
      60             : }

Generated by: LCOV version TK-3.3.0-4-gdba42eea