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"