Instrument doxyCluster
Loading...
Searching...
No Matches
battery.h
Go to the documentation of this file.
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)
19public:
20 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
34class MockPainter : public TestPainter {
35public:
36 MOCK_METHOD(void, drawPixmap, (const QRect &targetRect, const QPixmap &pixmap), (override));
37 MOCK_METHOD(void, drawArc, (int x, int y, int width, int height, int startAngle, int spanAngle), (override)); // Updated
38 MOCK_METHOD(void, setPen, (const QPen &pen), (override));
39 MOCK_METHOD(void, drawText, (const QRectF &rectangle, int flags, const QString &text), (override));
40 MOCK_METHOD(void, setRenderHint, (QPainter::RenderHint hint, bool on), (override));
41 MOCK_METHOD(bool, begin, (QPaintDevice *device), (override));
42 MOCK_METHOD(bool, end, (), (override));
43 MOCK_METHOD(bool, isActive, (), (const, override));
44 MOCK_METHOD(void, setFont, (const QFont &font), (override));
45 MOCK_METHOD(QRect, boundingRect, (const QRect &rect, int flags, const QString &text), (override));
46};
47
48//calling painter functions, overiding MockPainter (the test class)
50public:
51 QPainterCaller(QPainter *painter) : painter(painter) {}
52 void setPen(const QPen &pen) override {
53 painter->setPen(pen);
54 }
55 void drawArc(int x, int y, int width, int height, int startAngle, int spanAngle) override {
56 painter->drawArc(x, y, width, height, startAngle, spanAngle);
57 }
58 void drawPixmap(const QRect &targetRect, const QPixmap &pixmap) override {
59 painter->drawPixmap(targetRect, pixmap);
60 }
61 void drawText(const QRectF &rectangle, int flags, const QString &text) override {
62 painter->drawText(rectangle, flags, text);
63 }
64 void setRenderHint(QPainter::RenderHint hint, bool on) override {
65 painter->setRenderHint(hint, on);
66 }
67 bool begin(QPaintDevice *device) override {
68 return painter->begin(device);
69 }
70 bool end() override {
71 painter->end();
72 return true;
73 }
74 bool isActive() const override {
75 return painter->isActive();
76 }
77 void setFont(const QFont &font) override {
78 painter->setFont(font);
79 }
80 QRect boundingRect(const QRect &rect, int flags, const QString &text) override {
81 return painter->boundingRect(rect, flags, text);
82 }
83private:
84 QPainter *painter;
85};
86
87
88class Battery : public QWidget
89{
90 Q_OBJECT
91public:
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();
100protected:
101 void paintEvent(QPaintEvent *event) override;
102
103private:
104 int current;
105 const int max;
106 int flag = 0;
107 TestPainter* test_painter = nullptr; // Pointer to an external painter for testing
108
109public:
110 void setTestPainter(TestPainter* painter) { test_painter = painter; }
111};
112
113#endif
Definition battery.h:89
void paintEvent(QPaintEvent *event) override
Definition battery.cpp:29
int get_current()
Definition battery.cpp:24
~Battery()
Definition battery.cpp:13
void draw_pixmap(TestPainter *activePainter)
Definition battery.cpp:96
void setTestPainter(TestPainter *painter)
Definition battery.h:110
void draw_arcs(TestPainter *activePainter)
Definition battery.cpp:53
void draw_text(TestPainter *painter, QRect bottomRect)
Definition battery.cpp:115
void set_current(int n)
Definition battery.cpp:18
Definition battery.h:34
MOCK_METHOD(void, setFont,(const QFont &font),(override))
MOCK_METHOD(QRect, boundingRect,(const QRect &rect, int flags, const QString &text),(override))
MOCK_METHOD(void, drawPixmap,(const QRect &targetRect, const QPixmap &pixmap),(override))
MOCK_METHOD(bool, isActive,(),(const, override))
MOCK_METHOD(void, setRenderHint,(QPainter::RenderHint hint, bool on),(override))
MOCK_METHOD(void, setPen,(const QPen &pen),(override))
MOCK_METHOD(void, drawText,(const QRectF &rectangle, int flags, const QString &text),(override))
MOCK_METHOD(void, drawArc,(int x, int y, int width, int height, int startAngle, int spanAngle),(override))
MOCK_METHOD(bool, begin,(QPaintDevice *device),(override))
MOCK_METHOD(bool, end,(),(override))
Definition battery.h:49
bool end() override
Definition battery.h:70
bool isActive() const override
Definition battery.h:74
void drawArc(int x, int y, int width, int height, int startAngle, int spanAngle) override
Definition battery.h:55
QRect boundingRect(const QRect &rect, int flags, const QString &text) override
Definition battery.h:80
void setFont(const QFont &font) override
Definition battery.h:77
void setPen(const QPen &pen) override
Definition battery.h:52
void drawPixmap(const QRect &targetRect, const QPixmap &pixmap) override
Definition battery.h:58
QPainterCaller(QPainter *painter)
Definition battery.h:51
bool begin(QPaintDevice *device) override
Definition battery.h:67
void setRenderHint(QPainter::RenderHint hint, bool on) override
Definition battery.h:64
void drawText(const QRectF &rectangle, int flags, const QString &text) override
Definition battery.h:61
Definition battery.h:18
virtual bool end()=0
virtual void setFont(const QFont &font)=0
virtual QRect boundingRect(const QRect &rect, int flags, const QString &text)=0
virtual ~TestPainter()=default
virtual void drawArc(int x, int y, int width, int height, int startAngle, int spanAngle)=0
virtual bool begin(QPaintDevice *device)=0
virtual void drawPixmap(const QRect &targetRect, const QPixmap &pixmap)=0
virtual void setRenderHint(QPainter::RenderHint hint, bool on)=0
virtual bool isActive() const =0
virtual void setPen(const QPen &pen)=0
virtual void drawText(const QRectF &rectangle, int flags, const QString &text)=0