LCOV - code coverage report
Current view: top level - include - battery.h (source / functions) Coverage Total Hit
Test: coverage.info Lines: 80.0 % 40 32
Test Date: 2025-07-25 14:54:22 Functions: 84.8 % 33 28

            Line data    Source code
       1              : #ifndef BATTERY_H
       2              : #define BATTERY_H
       3              : 
       4              : #include <QWidget>
       5              : #include <QPainter>
       6              : #include <QPen>
       7              : #include <QBrush>
       8              : #include <QTimer>
       9              : #include <QPaintEvent>
      10              : #include <gmock/gmock.h>
      11              : #include <iostream>
      12              : #include <QPixmap>
      13              : #include <QDebug>
      14              : #include <QDir>
      15              : #include <QCoreApplication>
      16              : 
      17              : //test class (mock)
      18              : class TestPainter {
      19              : public:
      20            4 :     virtual ~TestPainter() = default;
      21              :     virtual void drawPixmap(const QRect &targetRect, const QPixmap &pixmap) = 0;
      22              :     virtual void drawArc(int x, int y, int width, int height, int startAngle, int spanAngle) = 0;
      23              :     virtual void setPen(const QPen &pen) = 0;
      24              :     virtual void drawText(const QRectF &rectangle, int flags, const QString &text) = 0;
      25              :     virtual void setRenderHint(QPainter::RenderHint hint, bool on) = 0;
      26              :     virtual bool begin(QPaintDevice *device) = 0;
      27              :     virtual bool end() = 0;
      28              :     virtual bool isActive() const = 0;
      29              :     virtual void setFont(const QFont &font) = 0;
      30              :     virtual QRect boundingRect(const QRect &rect, int flags, const QString &text) = 0;
      31              : };
      32              : 
      33              : //mock painter methods for testing purposes
      34              : class MockPainter : public TestPainter {
      35              : public:
      36            2 :     MOCK_METHOD(void, drawPixmap, (const QRect &targetRect, const QPixmap &pixmap), (override));
      37          601 :     MOCK_METHOD(void, drawArc, (int x, int y, int width, int height, int startAngle, int spanAngle), (override)); // Updated
      38          603 :     MOCK_METHOD(void, setPen, (const QPen &pen), (override));
      39            3 :     MOCK_METHOD(void, drawText, (const QRectF &rectangle, int flags, const QString &text), (override));
      40            2 :     MOCK_METHOD(void, setRenderHint, (QPainter::RenderHint hint, bool on), (override));
      41            2 :     MOCK_METHOD(bool, begin, (QPaintDevice *device), (override));
      42            2 :     MOCK_METHOD(bool, end, (), (override));
      43            0 :     MOCK_METHOD(bool, isActive, (), (const, override));
      44            3 :     MOCK_METHOD(void, setFont, (const QFont &font), (override));
      45            2 :     MOCK_METHOD(QRect, boundingRect, (const QRect &rect, int flags, const QString &text), (override));
      46              : };
      47              : 
      48              : //calling painter functions, overiding MockPainter (the test class)
      49              : class QPainterCaller : public TestPainter {
      50              : public:
      51            3 :     QPainterCaller(QPainter *painter) : painter(painter) {}
      52         1506 :       void setPen(const QPen &pen) override {
      53         1506 :         painter->setPen(pen);
      54         1506 :     }
      55         1500 :     void drawArc(int x, int y, int width, int height, int startAngle, int spanAngle) override {
      56         1500 :         painter->drawArc(x, y, width, height, startAngle, spanAngle);
      57         1500 :     }
      58            3 :     void drawPixmap(const QRect &targetRect, const QPixmap &pixmap) override {
      59            3 :         painter->drawPixmap(targetRect, pixmap);
      60            3 :     }
      61            6 :     void drawText(const QRectF &rectangle, int flags, const QString &text) override {
      62            6 :         painter->drawText(rectangle, flags, text);
      63            6 :     }
      64            3 :     void setRenderHint(QPainter::RenderHint hint, bool on) override {
      65            3 :         painter->setRenderHint(hint, on);
      66            3 :     }
      67            0 :     bool begin(QPaintDevice *device) override {
      68            0 :         return painter->begin(device);
      69              :     }
      70            0 :     bool end() override {
      71            0 :         painter->end();
      72            0 :         return true;
      73              :     }
      74            0 :     bool isActive() const override {
      75            0 :         return painter->isActive();
      76              :     }
      77            6 :     void setFont(const QFont &font) override {
      78            6 :         painter->setFont(font);
      79            6 :     }
      80            3 :     QRect boundingRect(const QRect &rect, int flags, const QString &text) override {
      81            3 :         return painter->boundingRect(rect, flags, text);
      82              :     }
      83              : private:
      84              :     QPainter *painter;
      85              : };
      86              : 
      87              : 
      88              : class Battery : public QWidget
      89              : {
      90              :     Q_OBJECT
      91              : public:
      92              :     Battery(QWidget *parent = nullptr);
      93              :     ~Battery();
      94              :     void set_current(int n);
      95              : 
      96              :     void draw_text(TestPainter *painter, QRect bottomRect);
      97              :     void draw_arcs(TestPainter *activePainter);
      98              :     void draw_pixmap(TestPainter *activePainter);
      99              :     int get_current();
     100              : protected:
     101              :     void paintEvent(QPaintEvent *event) override;
     102              : 
     103              : private:
     104              :     int current;
     105              :     const int max;
     106              :     int flag = 0;
     107              :     TestPainter* test_painter = nullptr;  // Pointer to an external painter for testing
     108              : 
     109              : public:
     110            2 :     void setTestPainter(TestPainter* painter) { test_painter = painter; }
     111              : };
     112              : 
     113              : #endif // BATTERY_H
        

Generated by: LCOV version 2.0-1