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"