File indexing completed on 2024-05-12 04:20:16

0001 /**
0002  * SPDX-FileCopyrightText: 2001-2015 Klaralvdalens Datakonsult AB. All rights reserved.
0003  *
0004  * This file is part of the KD Chart library.
0005  *
0006  * SPDX-License-Identifier: GPL-2.0-or-later
0007  */
0008 
0009 #include <QtTest/QtTest>
0010 
0011 #include <KChartWidget>
0012 #include <KChartGlobal>
0013 //#include <KChartBarDiagram>
0014 //#include <KChartLineDiagram>
0015 //#include <KChartCartesianCoordinatePlane>
0016 //#include <KChartPolarCoordinatePlane>
0017 #include <KChartLegend>
0018 //#include <KChartHeaderFooter>
0019 
0020 using namespace KChart;
0021 
0022 class TestWidgetElementOwnership: public QObject {
0023   Q_OBJECT
0024 private Q_SLOTS:
0025 
0026   void initTestCase()
0027   {
0028       m_widget = new Widget(nullptr);
0029       QVector< qreal > vec0;
0030       vec0.append( -2 );
0031       vec0.append( -1 );
0032       vec0.append( 0 );
0033       vec0.append( 1 );
0034       vec0.append( 2 );
0035       m_widget->setDataset( 0, vec0, "Linear" );
0036 
0037       QVector< qreal > vec1;
0038       vec1.append( -4 );
0039       vec1.append( -2 );
0040       vec1.append( 0 );
0041       vec1.append( 2 );
0042       vec1.append( 4 );
0043       m_widget->setDataset( 1, vec1, "Quadratic" );
0044 
0045       QVector< qreal > vec2;
0046       vec2.append( -8 );
0047       vec2.append( -2 );
0048       vec2.append( 0 );
0049       vec2.append( 2 );
0050       vec2.append( 8 );
0051       m_widget->setDataset( 2, vec2, "Cubic" );
0052 
0053   }
0054 
0055   void testPadding()
0056   {
0057       QVERIFY( m_widget->globalLeadingLeft() == false );
0058       m_widget->setGlobalLeading( 2, 2, 2, 2 );
0059       QCOMPARE( m_widget->globalLeadingLeft(), 2 );
0060       QCOMPARE( m_widget->globalLeadingTop(), 2 );
0061       QCOMPARE( m_widget->globalLeadingRight(), 2 );
0062       QCOMPARE( m_widget->globalLeadingBottom(), 2 );
0063       m_widget->setGlobalLeadingLeft( 5 );
0064       QCOMPARE( m_widget->globalLeadingLeft(), 5 );
0065       QCOMPARE( m_widget->globalLeadingTop(), 2 );
0066       QCOMPARE( m_widget->globalLeadingRight(), 2 );
0067       QCOMPARE( m_widget->globalLeadingBottom(), 2 );
0068       m_widget->setGlobalLeadingTop( 5 );
0069       QCOMPARE( m_widget->globalLeadingLeft(), 5 );
0070       QCOMPARE( m_widget->globalLeadingTop(), 5 );
0071       QCOMPARE( m_widget->globalLeadingRight(), 2 );
0072       QCOMPARE( m_widget->globalLeadingBottom(), 2 );
0073       m_widget->setGlobalLeadingRight( 5 );
0074       QCOMPARE( m_widget->globalLeadingLeft(), 5 );
0075       QCOMPARE( m_widget->globalLeadingTop(), 5 );
0076       QCOMPARE( m_widget->globalLeadingRight(), 5 );
0077       QCOMPARE( m_widget->globalLeadingBottom(), 2 );
0078       m_widget->setGlobalLeadingBottom( 5 );
0079       QCOMPARE( m_widget->globalLeadingLeft(), 5 );
0080       QCOMPARE( m_widget->globalLeadingTop(), 5 );
0081       QCOMPARE( m_widget->globalLeadingRight(), 5 );
0082       QCOMPARE( m_widget->globalLeadingBottom(), 5 );
0083       m_widget->setGlobalLeading( 2, 2, 2, 2 );
0084       QCOMPARE( m_widget->globalLeadingLeft(), 2 );
0085       QCOMPARE( m_widget->globalLeadingTop(), 2 );
0086       QCOMPARE( m_widget->globalLeadingRight(), 2 );
0087       QCOMPARE( m_widget->globalLeadingBottom(), 2 );
0088   }
0089 
0090   void testHeaderFooterOwnership()
0091   {
0092       QCOMPARE( m_widget->allHeadersFooters().size(), 0 );
0093       HeaderFooter * h = new HeaderFooter();
0094       HeaderFooter * h1 = new HeaderFooter();
0095       m_widget->addHeaderFooter( h );
0096       m_widget->addHeaderFooter( h1 );
0097       QCOMPARE( m_widget->allHeadersFooters().size(), 2 );
0098       QCOMPARE( m_widget->firstHeaderFooter(),  h );
0099       m_widget->takeHeaderFooter( h );
0100       QCOMPARE( m_widget->allHeadersFooters().size(), 1 );
0101       QCOMPARE( m_widget->firstHeaderFooter(),  h1 );
0102       m_widget->replaceHeaderFooter( h ,  h1 );
0103       QCOMPARE( m_widget->allHeadersFooters().size(), 1 );
0104       delete h;
0105       QCOMPARE( m_widget->allHeadersFooters().size(), 0 );
0106   }
0107 
0108   void testLegendOwnerShip()
0109   {
0110       // check no legend
0111       QCOMPARE( m_widget->allLegends().size(), 0 );
0112       // check add legend - take legend - delete legend
0113       m_widget->addLegend( Position::North );
0114       QCOMPARE( m_widget->allLegends().size(), 1 );
0115       Legend* legend = m_widget->legend();
0116       m_widget->takeLegend( legend );
0117       QCOMPARE( m_widget->allLegends().size(), 0 );
0118       m_widget->replaceLegend( legend );
0119       QCOMPARE( m_widget->allLegends().size(), 1 );
0120       delete legend;
0121       QCOMPARE( m_widget->allLegends().size(), 0 );
0122    }
0123 
0124   void testRetrieveDiagram()
0125   {
0126       //set Cartesian type
0127       m_widget->setType( Widget::Line );
0128       QCOMPARE( m_widget->type(), Widget::Line );
0129       QCOMPARE( m_widget->barDiagram(), static_cast<BarDiagram*>(nullptr) );
0130       QCOMPARE( m_widget->pieDiagram(), static_cast<PieDiagram*>(nullptr) );
0131       QCOMPARE( m_widget->ringDiagram(), static_cast<RingDiagram*>(nullptr) );
0132       QCOMPARE( m_widget->polarDiagram(), static_cast<PolarDiagram*>(nullptr) );
0133       // set Polar type
0134       m_widget->setType( Widget::Polar );
0135       QCOMPARE( m_widget->type(), Widget::Polar );
0136       QCOMPARE( m_widget->barDiagram(), static_cast<BarDiagram*>(nullptr) );
0137       QCOMPARE( m_widget->lineDiagram(), static_cast<LineDiagram*>(nullptr) );
0138       QCOMPARE( m_widget->ringDiagram(), static_cast<RingDiagram*>(nullptr) );
0139       QCOMPARE( m_widget->pieDiagram(), static_cast<PieDiagram*>(nullptr) );
0140       // reset default
0141       m_widget->setType( Widget::Line );
0142   }
0143 
0144   void testTypeChangeWithLegend()
0145   {
0146       //set Cartesian type
0147       m_widget->addLegend( Position::North );
0148       QCOMPARE( m_widget->allLegends().size(), 1 );
0149       m_widget->setType( Widget::Bar, Widget::Stacked );
0150       Legend *legend = m_widget->legend();
0151       QVERIFY( legend != nullptr );
0152       QVERIFY( legend->diagram() != nullptr );
0153       QCOMPARE( legend->diagram(), m_widget->diagram() );
0154       QCOMPARE( m_widget->allLegends().size(), 1 );
0155       m_widget->setType( Widget::Line );
0156   }
0157 
0158 
0159   void testDiagramTypeSubType()
0160   {
0161       m_widget->setType( Widget::Line );
0162       QCOMPARE( m_widget->type(), Widget::Line );
0163       QCOMPARE( m_widget->subType(),  Widget::Normal );
0164       //check type subtype = default
0165       m_widget->setType( Widget::Bar );
0166       QCOMPARE( m_widget->type(), Widget::Bar );
0167       QCOMPARE( m_widget->subType(),  Widget::Normal );
0168       //check type subtype
0169       m_widget->setType( Widget::Line,  Widget::Stacked );
0170       QCOMPARE( m_widget->type(), Widget::Line );
0171       QCOMPARE( m_widget->subType(),  Widget::Stacked );
0172       //check subtype
0173       m_widget->setSubType( Widget::Percent );
0174       QCOMPARE( m_widget->subType(),  Widget::Percent );
0175   }
0176 
0177   void testPlaneOwnership()
0178   {
0179       // check plane
0180       AbstractCoordinatePlane*orig = m_widget->coordinatePlane();
0181       QCOMPARE( m_widget->coordinatePlane(), orig );
0182   }
0183 
0184   void testWidgetDeletion()
0185   {
0186       delete m_widget;
0187   }
0188 
0189   void cleanupTestCase()
0190   {
0191 
0192   }
0193 
0194 private:
0195   Widget *m_widget;
0196 
0197 };
0198 
0199 QTEST_MAIN(TestWidgetElementOwnership)
0200 
0201 #include "main.moc"