File indexing completed on 2024-05-12 15:53:55
0001 /** 0002 * Copyright (C) 2001-2015 Klaralvdalens Datakonsult AB. All rights reserved. 0003 * 0004 * This file is part of the KD Chart library. 0005 * 0006 * This program is free software; you can redistribute it and/or 0007 * modify it under the terms of the GNU General Public License as 0008 * published by the Free Software Foundation; either version 2 of 0009 * the License, or (at your option) any later version. 0010 * 0011 * This program is distributed in the hope that it will be useful, 0012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0014 * GNU General Public License for more details. 0015 * 0016 * You should have received a copy of the GNU General Public License 0017 * along with this program. If not, see <https://www.gnu.org/licenses/>. 0018 */ 0019 0020 #include <QtTest/QtTest> 0021 0022 #include <KChartWidget> 0023 #include <KChartGlobal> 0024 //#include <KChartBarDiagram> 0025 //#include <KChartLineDiagram> 0026 //#include <KChartCartesianCoordinatePlane> 0027 //#include <KChartPolarCoordinatePlane> 0028 #include <KChartLegend> 0029 //#include <KChartHeaderFooter> 0030 0031 using namespace KChart; 0032 0033 class TestWidgetElementOwnership: public QObject { 0034 Q_OBJECT 0035 private Q_SLOTS: 0036 0037 void initTestCase() 0038 { 0039 m_widget = new Widget(nullptr); 0040 QVector< qreal > vec0; 0041 vec0.append( -2 ); 0042 vec0.append( -1 ); 0043 vec0.append( 0 ); 0044 vec0.append( 1 ); 0045 vec0.append( 2 ); 0046 m_widget->setDataset( 0, vec0, "Linear" ); 0047 0048 QVector< qreal > vec1; 0049 vec1.append( -4 ); 0050 vec1.append( -2 ); 0051 vec1.append( 0 ); 0052 vec1.append( 2 ); 0053 vec1.append( 4 ); 0054 m_widget->setDataset( 1, vec1, "Quadratic" ); 0055 0056 QVector< qreal > vec2; 0057 vec2.append( -8 ); 0058 vec2.append( -2 ); 0059 vec2.append( 0 ); 0060 vec2.append( 2 ); 0061 vec2.append( 8 ); 0062 m_widget->setDataset( 2, vec2, "Cubic" ); 0063 0064 } 0065 0066 void testPadding() 0067 { 0068 QVERIFY( m_widget->globalLeadingLeft() == false ); 0069 m_widget->setGlobalLeading( 2, 2, 2, 2 ); 0070 QCOMPARE( m_widget->globalLeadingLeft(), 2 ); 0071 QCOMPARE( m_widget->globalLeadingTop(), 2 ); 0072 QCOMPARE( m_widget->globalLeadingRight(), 2 ); 0073 QCOMPARE( m_widget->globalLeadingBottom(), 2 ); 0074 m_widget->setGlobalLeadingLeft( 5 ); 0075 QCOMPARE( m_widget->globalLeadingLeft(), 5 ); 0076 QCOMPARE( m_widget->globalLeadingTop(), 2 ); 0077 QCOMPARE( m_widget->globalLeadingRight(), 2 ); 0078 QCOMPARE( m_widget->globalLeadingBottom(), 2 ); 0079 m_widget->setGlobalLeadingTop( 5 ); 0080 QCOMPARE( m_widget->globalLeadingLeft(), 5 ); 0081 QCOMPARE( m_widget->globalLeadingTop(), 5 ); 0082 QCOMPARE( m_widget->globalLeadingRight(), 2 ); 0083 QCOMPARE( m_widget->globalLeadingBottom(), 2 ); 0084 m_widget->setGlobalLeadingRight( 5 ); 0085 QCOMPARE( m_widget->globalLeadingLeft(), 5 ); 0086 QCOMPARE( m_widget->globalLeadingTop(), 5 ); 0087 QCOMPARE( m_widget->globalLeadingRight(), 5 ); 0088 QCOMPARE( m_widget->globalLeadingBottom(), 2 ); 0089 m_widget->setGlobalLeadingBottom( 5 ); 0090 QCOMPARE( m_widget->globalLeadingLeft(), 5 ); 0091 QCOMPARE( m_widget->globalLeadingTop(), 5 ); 0092 QCOMPARE( m_widget->globalLeadingRight(), 5 ); 0093 QCOMPARE( m_widget->globalLeadingBottom(), 5 ); 0094 m_widget->setGlobalLeading( 2, 2, 2, 2 ); 0095 QCOMPARE( m_widget->globalLeadingLeft(), 2 ); 0096 QCOMPARE( m_widget->globalLeadingTop(), 2 ); 0097 QCOMPARE( m_widget->globalLeadingRight(), 2 ); 0098 QCOMPARE( m_widget->globalLeadingBottom(), 2 ); 0099 } 0100 0101 void testHeaderFooterOwnership() 0102 { 0103 QCOMPARE( m_widget->allHeadersFooters().size(), 0 ); 0104 HeaderFooter * h = new HeaderFooter(); 0105 HeaderFooter * h1 = new HeaderFooter(); 0106 m_widget->addHeaderFooter( h ); 0107 m_widget->addHeaderFooter( h1 ); 0108 QCOMPARE( m_widget->allHeadersFooters().size(), 2 ); 0109 QCOMPARE( m_widget->firstHeaderFooter(), h ); 0110 m_widget->takeHeaderFooter( h ); 0111 QCOMPARE( m_widget->allHeadersFooters().size(), 1 ); 0112 QCOMPARE( m_widget->firstHeaderFooter(), h1 ); 0113 m_widget->replaceHeaderFooter( h , h1 ); 0114 QCOMPARE( m_widget->allHeadersFooters().size(), 1 ); 0115 delete h; 0116 QCOMPARE( m_widget->allHeadersFooters().size(), 0 ); 0117 } 0118 0119 void testLegendOwnerShip() 0120 { 0121 // check no legend 0122 QCOMPARE( m_widget->allLegends().size(), 0 ); 0123 // check add legend - take legend - delete legend 0124 m_widget->addLegend( Position::North ); 0125 QCOMPARE( m_widget->allLegends().size(), 1 ); 0126 Legend* legend = m_widget->legend(); 0127 m_widget->takeLegend( legend ); 0128 QCOMPARE( m_widget->allLegends().size(), 0 ); 0129 m_widget->replaceLegend( legend ); 0130 QCOMPARE( m_widget->allLegends().size(), 1 ); 0131 delete legend; 0132 QCOMPARE( m_widget->allLegends().size(), 0 ); 0133 } 0134 0135 void testRetrieveDiagram() 0136 { 0137 //set Cartesian type 0138 m_widget->setType( Widget::Line ); 0139 QCOMPARE( m_widget->type(), Widget::Line ); 0140 QCOMPARE( m_widget->barDiagram(), static_cast<BarDiagram*>(nullptr) ); 0141 QCOMPARE( m_widget->pieDiagram(), static_cast<PieDiagram*>(nullptr) ); 0142 QCOMPARE( m_widget->ringDiagram(), static_cast<RingDiagram*>(nullptr) ); 0143 QCOMPARE( m_widget->polarDiagram(), static_cast<PolarDiagram*>(nullptr) ); 0144 // set Polar type 0145 m_widget->setType( Widget::Polar ); 0146 QCOMPARE( m_widget->type(), Widget::Polar ); 0147 QCOMPARE( m_widget->barDiagram(), static_cast<BarDiagram*>(nullptr) ); 0148 QCOMPARE( m_widget->lineDiagram(), static_cast<LineDiagram*>(nullptr) ); 0149 QCOMPARE( m_widget->ringDiagram(), static_cast<RingDiagram*>(nullptr) ); 0150 QCOMPARE( m_widget->pieDiagram(), static_cast<PieDiagram*>(nullptr) ); 0151 // reset default 0152 m_widget->setType( Widget::Line ); 0153 } 0154 0155 void testTypeChangeWithLegend() 0156 { 0157 //set Cartesian type 0158 m_widget->addLegend( Position::North ); 0159 QCOMPARE( m_widget->allLegends().size(), 1 ); 0160 m_widget->setType( Widget::Bar, Widget::Stacked ); 0161 Legend *legend = m_widget->legend(); 0162 QVERIFY( legend != nullptr ); 0163 QVERIFY( legend->diagram() != nullptr ); 0164 QCOMPARE( legend->diagram(), m_widget->diagram() ); 0165 QCOMPARE( m_widget->allLegends().size(), 1 ); 0166 m_widget->setType( Widget::Line ); 0167 } 0168 0169 0170 void testDiagramTypeSubType() 0171 { 0172 m_widget->setType( Widget::Line ); 0173 QCOMPARE( m_widget->type(), Widget::Line ); 0174 QCOMPARE( m_widget->subType(), Widget::Normal ); 0175 //check type subtype = default 0176 m_widget->setType( Widget::Bar ); 0177 QCOMPARE( m_widget->type(), Widget::Bar ); 0178 QCOMPARE( m_widget->subType(), Widget::Normal ); 0179 //check type subtype 0180 m_widget->setType( Widget::Line, Widget::Stacked ); 0181 QCOMPARE( m_widget->type(), Widget::Line ); 0182 QCOMPARE( m_widget->subType(), Widget::Stacked ); 0183 //check subtype 0184 m_widget->setSubType( Widget::Percent ); 0185 QCOMPARE( m_widget->subType(), Widget::Percent ); 0186 } 0187 0188 void testPlaneOwnership() 0189 { 0190 // check plane 0191 AbstractCoordinatePlane*orig = m_widget->coordinatePlane(); 0192 QCOMPARE( m_widget->coordinatePlane(), orig ); 0193 } 0194 0195 void testWidgetDeletion() 0196 { 0197 delete m_widget; 0198 } 0199 0200 void cleanupTestCase() 0201 { 0202 0203 } 0204 0205 private: 0206 Widget *m_widget; 0207 0208 }; 0209 0210 QTEST_MAIN(TestWidgetElementOwnership) 0211 0212 #include "main.moc"