LCOV - code coverage report
Current view: top level - JCmeasure - MeasureBase.cpp (source / functions) Hit Total Coverage
Test: runTests_coverage.info.cleaned Lines: 22 22 100.0 %
Date: 2020-08-02 02:02:29 Functions: 6 6 100.0 %
Branches: 18 32 56.2 %

           Branch data     Line data    Source code
       1                 :            : /**
       2                 :            :  * @file MeasureBase.h
       3                 :            :  * @author Kai KRETSCHMANN
       4                 :            :  *
       5                 :            :  * @copyright SPDX-License-Identifier: MIT
       6                 :            :  *
       7                 :            :  * @brief Base class for doing measurements.
       8                 :            :  *
       9                 :            :  **/
      10                 :            : 
      11                 :            : #include <iostream>
      12                 :            : #include <fstream>
      13                 :            : #include <cstring>
      14                 :            : #include "spdlog/spdlog.h"
      15                 :            : 
      16                 :            : #include "MeasureBase.h"
      17                 :            : 
      18                 :            : using namespace std;
      19                 :            : 
      20                 :            : namespace jastacry {
      21                 :            : 
      22                 :         17 : MeasureBase::MeasureBase(const string& filename) : _filename(filename) {
      23         [ +  - ]:          8 :         spdlog::debug("CTOR MeasureBase normal");
      24         [ +  + ]:          8 :         readFile();
      25                 :          7 : }
      26                 :            : 
      27                 :          2 : std::string& MeasureBase::getFilename() {
      28                 :          2 :         return _filename;
      29                 :            : }
      30                 :            : 
      31                 :          4 : size_t MeasureBase::getFilesize() {
      32                 :          4 :         return _filesize;
      33                 :            : }
      34                 :            : 
      35                 :          8 : bool MeasureBase::readFile() {
      36         [ +  - ]:         16 :         ifstream file(_filename, ios::binary);
      37 [ +  - ][ +  + ]:          8 :             if (file.fail()) {
      38         [ +  - ]:          1 :                 spdlog::error("error reading '{}': {}", _filename, strerror(errno));
      39         [ +  - ]:          1 :                 throw std::invalid_argument(_filename);
      40                 :            :             }
      41                 :            : 
      42                 :            :             //seek to the end
      43         [ +  - ]:          7 :             file.seekg(0, ios::end);
      44                 :            : 
      45                 :            :             //Get the file size
      46         [ +  - ]:          7 :             _filesize = file.tellg();
      47         [ +  - ]:          7 :             file.seekg(0, ios::beg);
      48                 :            : 
      49                 :            :             //Reduce the file size by any header bytes that might be present
      50         [ +  - ]:          7 :             _filesize -= file.tellg();
      51                 :            : 
      52         [ +  - ]:          7 :             _buffer.resize(_filesize);
      53         [ +  - ]:          7 :             file.read((char *)&(_buffer[0]), _filesize);
      54         [ +  - ]:          7 :             file.close();
      55                 :            : 
      56                 :          7 :             return true;
      57                 :            : }
      58                 :            : 
      59 [ +  - ][ +  - ]:          4 : } /* namespace jastacry */

Generated by: LCOV version 1.13