File indexing completed on 2024-04-28 15:29:28

0001 /*
0002     SPDX-FileCopyrightText: 2012 Benjamin Port <benjamin.port@ben2367.fr>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include <kplotobject.h>
0008 #include <kplotpoint.h>
0009 
0010 #include <QBrush>
0011 #include <QPen>
0012 #include <QTest>
0013 
0014 static const QColor DEFAULT_COLOR = Qt::blue;
0015 static const QColor MODIFIED_COLOR = Qt::red;
0016 
0017 static const double DEFAULT_WIDTH = 2;
0018 
0019 static const QBrush DEFAULT_BRUSH = QBrush(DEFAULT_COLOR);
0020 static const QBrush MODIFIED_BRUSH = QBrush(MODIFIED_COLOR);
0021 
0022 static const QPen DEFAULT_PEN = QPen(DEFAULT_COLOR, 1);
0023 static const QPen MODIFIED_PEN = QPen(MODIFIED_COLOR, 2);
0024 
0025 static const KPlotObject::PlotType DEFAULT_PLOT_TYPE = KPlotObject::Bars;
0026 
0027 static const KPlotObject::PointStyle DEFAULT_POINT_STYLE = KPlotObject::Asterisk;
0028 
0029 class KPlotObjectTest : public QObject
0030 {
0031     Q_OBJECT
0032 
0033 private Q_SLOTS:
0034     void initTestCase()
0035     {
0036         m_kPlotObject = new KPlotObject(DEFAULT_COLOR, DEFAULT_PLOT_TYPE, DEFAULT_WIDTH, DEFAULT_POINT_STYLE);
0037     }
0038 
0039     void cleanupTestCase()
0040     {
0041         delete m_kPlotObject;
0042     }
0043 
0044     void testBrush()
0045     {
0046         // verify default brush
0047         QCOMPARE(m_kPlotObject->brush(), DEFAULT_BRUSH);
0048 
0049         // change brush
0050         m_kPlotObject->setBrush(MODIFIED_BRUSH);
0051         QCOMPARE(m_kPlotObject->brush(), MODIFIED_BRUSH);
0052     }
0053 
0054     void testBarBrush()
0055     {
0056         // verify default brush
0057         QCOMPARE(m_kPlotObject->barBrush(), DEFAULT_BRUSH);
0058 
0059         // change brush
0060         m_kPlotObject->setBarBrush(MODIFIED_BRUSH);
0061         QCOMPARE(m_kPlotObject->barBrush(), MODIFIED_BRUSH);
0062     }
0063 
0064     void testPen()
0065     {
0066         // test default pen
0067         QCOMPARE(m_kPlotObject->pen(), DEFAULT_PEN);
0068 
0069         // change pen
0070         m_kPlotObject->setPen(MODIFIED_PEN);
0071         QCOMPARE(m_kPlotObject->pen(), MODIFIED_PEN);
0072     }
0073 
0074     void testLinePen()
0075     {
0076         // test default pen
0077         QCOMPARE(m_kPlotObject->linePen(), DEFAULT_PEN);
0078 
0079         // change pen
0080         m_kPlotObject->setLinePen(MODIFIED_PEN);
0081         QCOMPARE(m_kPlotObject->linePen(), MODIFIED_PEN);
0082     }
0083 
0084     void testBarPen()
0085     {
0086         // test default pen
0087         QCOMPARE(m_kPlotObject->barPen(), DEFAULT_PEN);
0088 
0089         // change pen
0090         m_kPlotObject->setBarPen(MODIFIED_PEN);
0091         QCOMPARE(m_kPlotObject->barPen(), MODIFIED_PEN);
0092     }
0093 
0094     void testLabelPen()
0095     {
0096         // test default pen
0097         QCOMPARE(m_kPlotObject->labelPen(), DEFAULT_PEN);
0098 
0099         // change pen
0100         m_kPlotObject->setLabelPen(MODIFIED_PEN);
0101         QCOMPARE(m_kPlotObject->labelPen(), MODIFIED_PEN);
0102     }
0103 
0104     void testSize()
0105     {
0106         // verify default size
0107         QCOMPARE(m_kPlotObject->size(), DEFAULT_WIDTH);
0108 
0109         // modify size and test the new one
0110         m_kPlotObject->setSize(3.0);
0111         QCOMPARE(m_kPlotObject->size(), 3.0);
0112     }
0113 
0114     void testDefaultPlotType()
0115     {
0116         QCOMPARE(m_kPlotObject->plotTypes(), DEFAULT_PLOT_TYPE);
0117     }
0118 
0119     void testShowBars()
0120     {
0121         m_kPlotObject->setShowBars(false);
0122         QVERIFY(!(m_kPlotObject->plotTypes() & KPlotObject::Bars));
0123 
0124         m_kPlotObject->setShowBars(true);
0125         QVERIFY(m_kPlotObject->plotTypes() & KPlotObject::Bars);
0126     }
0127 
0128     void testShowLines()
0129     {
0130         m_kPlotObject->setShowLines(false);
0131         QVERIFY(!(m_kPlotObject->plotTypes() & KPlotObject::Lines));
0132 
0133         m_kPlotObject->setShowLines(true);
0134         QVERIFY(m_kPlotObject->plotTypes() & KPlotObject::Lines);
0135     }
0136 
0137     void testShowPoints()
0138     {
0139         m_kPlotObject->setShowPoints(false);
0140         QVERIFY(!(m_kPlotObject->plotTypes() & KPlotObject::Points));
0141 
0142         m_kPlotObject->setShowPoints(true);
0143         QVERIFY(m_kPlotObject->plotTypes() & KPlotObject::Points);
0144     }
0145 
0146     void testPointStyle()
0147     {
0148         QCOMPARE(m_kPlotObject->pointStyle(), DEFAULT_POINT_STYLE);
0149 
0150         m_kPlotObject->setPointStyle(KPlotObject::Star);
0151         QCOMPARE(m_kPlotObject->pointStyle(), KPlotObject::Star);
0152     }
0153 
0154     void testAddPoint()
0155     {
0156         // verify list is empty
0157         QCOMPARE(m_kPlotObject->points().size(), 0);
0158 
0159         // test: void KPlotObject::addPoint( const QPointF &p, const QString &label, double barWidth )
0160         m_kPlotObject->addPoint(QPointF(1, 0), QStringLiteral("label1"), 1.0);
0161         QCOMPARE(m_kPlotObject->points().size(), 1);
0162         KPlotPoint *p1 = m_kPlotObject->points().at(0);
0163         QCOMPARE(p1->position(), QPointF(1, 0));
0164         QCOMPARE(p1->label(), QString::fromLatin1("label1"));
0165         QCOMPARE(p1->barWidth(), 1.0);
0166 
0167         // test void KPlotObject::addPoint( KPlotPoint *p )
0168         KPlotPoint *p2 = new KPlotPoint(2, 2, QStringLiteral("label2"), 2.0);
0169         m_kPlotObject->addPoint(p2);
0170         QCOMPARE(m_kPlotObject->points().size(), 2);
0171         KPlotPoint *p2List = m_kPlotObject->points().at(1);
0172         QCOMPARE(p2, p2List);
0173         delete p2;
0174 
0175         // test void KPlotObject::addPoint( double x, double y, const QString &label, double barWidth )
0176         m_kPlotObject->addPoint(3, 3, QStringLiteral("label3"), 3.0);
0177         QCOMPARE(m_kPlotObject->points().size(), 3);
0178         KPlotPoint *p3 = m_kPlotObject->points().at(2);
0179         QCOMPARE(p3->position(), QPointF(3, 3));
0180         QCOMPARE(p3->label(), QString::fromLatin1("label3"));
0181         QCOMPARE(p3->barWidth(), 3.0);
0182     }
0183 
0184     void testRemovePoint()
0185     {
0186         // currently 3 points
0187         QCOMPARE(m_kPlotObject->points().size(), 3);
0188 
0189         KPlotPoint *p1 = m_kPlotObject->points().at(0);
0190         KPlotPoint *p2 = m_kPlotObject->points().at(1);
0191         KPlotPoint *p3 = m_kPlotObject->points().at(2);
0192 
0193         QCOMPARE(m_kPlotObject->points().at(0), p1);
0194         QCOMPARE(m_kPlotObject->points().at(1), p2);
0195         QCOMPARE(m_kPlotObject->points().at(2), p3);
0196 
0197         m_kPlotObject->removePoint(1);
0198         QCOMPARE(m_kPlotObject->points().size(), 2);
0199         QCOMPARE(m_kPlotObject->points().at(0), p1);
0200         QCOMPARE(m_kPlotObject->points().at(1), p3);
0201     }
0202 
0203     void testClearPoints()
0204     {
0205         // currently 2 points
0206         QCOMPARE(m_kPlotObject->points().size(), 2);
0207         m_kPlotObject->clearPoints();
0208         QCOMPARE(m_kPlotObject->points().size(), 0);
0209     }
0210 
0211 private:
0212     KPlotObject *m_kPlotObject;
0213 };
0214 
0215 QTEST_MAIN(KPlotObjectTest)
0216 
0217 #include "kplotobjecttest.moc"