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

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 #include <KChartChart>
0011 #include <KChartGlobal>
0012 #include <KChartBarDiagram>
0013 #include <KChartCartesianCoordinatePlane>
0014 #include <KChartMeasure>
0015 
0016 #include <TableModel.h>
0017 
0018 using namespace KChart;
0019 
0020 class TestMeasure : public QObject {
0021   Q_OBJECT
0022 private Q_SLOTS:
0023 
0024   void initTestCase()
0025   {
0026       m_chart = new Chart(nullptr);
0027       m_model = new TableModel( this );
0028       m_model->loadFromCSV( ":/data" );
0029       m_bars = new BarDiagram();
0030       m_bars->setModel( m_model );
0031       m_chart->coordinatePlane()->replaceDiagram( m_bars );
0032       m_chart->setGeometry(100,100, 300,200);
0033       m_chart->show();
0034   }
0035 
0036   void testMeasureCalculationModeAbsolute()
0037   {
0038       KChart::Measure m( 100.0 );
0039       m.setCalculationMode( KChartEnums::MeasureCalculationModeAbsolute );
0040       QCOMPARE(
0041           m.calculatedValue(nullptr, KChartEnums::MeasureOrientationAuto),
0042           100.0 );
0043   }
0044 
0045   void testMeasureCalculationModeRelativeHorizontalOrientation()
0046   {
0047       KChart::Measure m(
0048           100.0,
0049           KChartEnums::MeasureCalculationModeRelative,
0050           KChartEnums::MeasureOrientationHorizontal );
0051       m.setReferenceArea( m_chart );
0052       QCOMPARE(
0053           m.calculatedValue(nullptr, KChartEnums::MeasureOrientationAuto),
0054           m_chart->size().width() / 10.0 );
0055   }
0056 
0057   void testMeasureCalculationModeRelativeVerticalOrientation()
0058   {
0059       KChart::Measure m(
0060           100.0,
0061           KChartEnums::MeasureCalculationModeRelative,
0062           KChartEnums::MeasureOrientationVertical );
0063       m.setReferenceArea( m_chart );
0064       QCOMPARE(
0065           m.calculatedValue(nullptr, KChartEnums::MeasureOrientationAuto),
0066           m_chart->size().height() / 10.0 );
0067   }
0068 
0069   void testMeasureCalculationModeAuto()
0070   {
0071       KChart::Measure m( 100.0 );
0072       m.setCalculationMode( KChartEnums::MeasureCalculationModeAuto );
0073       QCOMPARE(
0074           m.calculatedValue(m_chart, KChartEnums::MeasureOrientationHorizontal),
0075           m_chart->size().width() / 10.0 );
0076       QCOMPARE(
0077           m.calculatedValue(m_chart, KChartEnums::MeasureOrientationVertical),
0078           m_chart->size().height() / 10.0 );
0079       QCOMPARE(
0080           m.calculatedValue(m_chart, KChartEnums::MeasureOrientationMinimum),
0081           qMin( m_chart->size().width(), m_chart->size().height() ) / 10.0 );
0082       QCOMPARE(
0083           m.calculatedValue(m_chart, KChartEnums::MeasureOrientationMaximum),
0084           qMax( m_chart->size().width(), m_chart->size().height() ) / 10.0 );
0085   }
0086 
0087   void testMeasureCalculationModeAutoArea()
0088   {
0089       KChart::Measure m(
0090           100.0,
0091           KChartEnums::MeasureCalculationModeAutoArea,
0092           KChartEnums::MeasureOrientationHorizontal );
0093       QCOMPARE(
0094           m.calculatedValue(m_chart, KChartEnums::MeasureOrientationAuto),
0095           m_chart->size().width() / 10.0 );
0096       m.setReferenceOrientation( KChartEnums::MeasureOrientationVertical );
0097       QCOMPARE(
0098           m.calculatedValue(m_chart, KChartEnums::MeasureOrientationAuto),
0099           m_chart->size().height() / 10.0 );
0100       m.setReferenceOrientation( KChartEnums::MeasureOrientationMinimum );
0101       QCOMPARE(
0102           m.calculatedValue(m_chart, KChartEnums::MeasureOrientationAuto),
0103           qMin( m_chart->size().width(), m_chart->size().height() ) / 10.0 );
0104       m.setReferenceOrientation( KChartEnums::MeasureOrientationMaximum );
0105       QCOMPARE(
0106           m.calculatedValue(m_chart, KChartEnums::MeasureOrientationAuto),
0107           qMax( m_chart->size().width(), m_chart->size().height() ) / 10.0 );
0108   }
0109 
0110   void testMeasureAutoOrientation()
0111   {
0112       KChart::Measure m(
0113           100.0,
0114           KChartEnums::MeasureCalculationModeAutoOrientation,
0115           KChartEnums::MeasureOrientationAuto );
0116       m.setReferenceArea( m_chart );
0117       QCOMPARE(
0118           m.calculatedValue(nullptr, KChartEnums::MeasureOrientationHorizontal),
0119           m_chart->size().width() / 10.0 );
0120       QCOMPARE(
0121           m.calculatedValue(nullptr, KChartEnums::MeasureOrientationVertical),
0122           m_chart->size().height() / 10.0 );
0123       QCOMPARE(
0124           m.calculatedValue(nullptr, KChartEnums::MeasureOrientationMinimum),
0125           qMin( m_chart->size().width(), m_chart->size().height() ) / 10.0 );
0126       QCOMPARE(
0127           m.calculatedValue(nullptr, KChartEnums::MeasureOrientationMaximum),
0128           qMax( m_chart->size().width(), m_chart->size().height() ) / 10.0 );
0129   }
0130 
0131 
0132   void cleanupTestCase()
0133   {
0134   }
0135 
0136 private:
0137     Chart *m_chart;
0138     BarDiagram *m_bars;
0139     TableModel *m_model;
0140 
0141 };
0142 
0143 QTEST_MAIN(TestMeasure)
0144 
0145 #include "main.moc"