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 <QLabel>
0012 
0013 #include <KChartGlobal>
0014 #include <KChartPosition>
0015 #include <KChartMeasure>
0016 #include <KChartRelativePosition>
0017 
0018 using namespace KChart;
0019 
0020 class TestRelativePosition: public QObject {
0021     Q_OBJECT
0022 private Q_SLOTS:
0023 
0024     void initTestCase()
0025     {
0026         m_window = new QLabel(nullptr);
0027         m_window->setGeometry(100,100, 300,200);
0028         m_window->show();
0029     }
0030 
0031     void testRelativePositionHRelativeVAbsolute()
0032     {
0033         const qreal horizPerMille = 100.0;
0034         KChart::Measure mHoriz(
0035                 horizPerMille,
0036                 KChartEnums::MeasureCalculationModeRelative,
0037                 KChartEnums::MeasureOrientationHorizontal );
0038         mHoriz.setReferenceArea( m_window );
0039 
0040         const qreal vertAbsolute = -50.0;
0041         KChart::Measure mVert(
0042                 vertAbsolute,
0043                 KChartEnums::MeasureCalculationModeAbsolute );
0044 
0045         KChart::RelativePosition relPos;
0046         relPos.setReferenceArea( m_window );
0047         relPos.setReferencePosition( KChart::Position::NorthWest );
0048         relPos.setHorizontalPadding( mHoriz );
0049         relPos.setVerticalPadding(   mVert );
0050 
0051         // no auto mode is active, so we pass an empty QSizeF:
0052         const QPointF pt( relPos.calculatedPoint( QSizeF() ) );
0053         const QRectF geo( m_window->geometry() );
0054         QCOMPARE( pt.x(), geo.topLeft().x() + geo.size().width() / 1000.0 * horizPerMille );
0055         QCOMPARE( pt.y(), geo.topLeft().y() + vertAbsolute );
0056     }
0057 
0058     void testRelativePositionHAbsoluteVRelative()
0059     {
0060         const qreal horizAbsolute = 100.0;
0061         KChart::Measure mHoriz(
0062                 horizAbsolute,
0063                 KChartEnums::MeasureCalculationModeAbsolute );
0064 
0065         const qreal vertRelative = -50.0;
0066         KChart::Measure mVert(
0067                 vertRelative,
0068                 KChartEnums::MeasureCalculationModeRelative,
0069                 KChartEnums::MeasureOrientationVertical );
0070         mVert.setReferenceArea( m_window );
0071 
0072         KChart::RelativePosition relPos;
0073         relPos.setReferenceArea( m_window );
0074         relPos.setReferencePosition( KChart::Position::Center );
0075         relPos.setHorizontalPadding( mHoriz );
0076         relPos.setVerticalPadding(   mVert );
0077 
0078         // no auto mode is active, so we pass an empty QSizeF:
0079         const QPointF pt( relPos.calculatedPoint( QSizeF() ) );
0080         const QRectF geo( m_window->geometry() );
0081         QCOMPARE( pt.x(), geo.center().x() + horizAbsolute );
0082         QCOMPARE( pt.y(), geo.center().y() + geo.size().height() / 1000.0 * vertRelative );
0083     }
0084 
0085 
0086     void cleanupTestCase()
0087     {
0088     }
0089 
0090 private:
0091     QLabel *m_window;
0092 
0093 };
0094 
0095 QTEST_MAIN(TestRelativePosition)
0096 
0097 #include "main.moc"