File indexing completed on 2024-05-12 16:35:57
0001 /* This file is part of the KDE project 0002 Copyright 2007 Stefan Nikolaus <stefan.nikolaus@kdemail.net> 0003 0004 This library is free software; you can redistribute it and/or 0005 modify it under the terms of the GNU Library General Public 0006 License as published by the Free Software Foundation; only 0007 version 2 of the License. 0008 0009 This library is distributed in the hope that it will be useful, 0010 but WITHOUT ANY WARRANTY; without even the implied warranty of 0011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0012 Library General Public License for more details. 0013 0014 You should have received a copy of the GNU Library General Public License 0015 along with this library; see the file COPYING.LIB. If not, write to 0016 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 0017 Boston, MA 02110-1301, USA. 0018 */ 0019 0020 #include "TestRegion.h" 0021 0022 #include <QTest> 0023 0024 #include "calligra_sheets_limits.h" 0025 #include "Map.h" 0026 #include "Region.h" 0027 #include "Sheet.h" 0028 0029 using namespace Calligra::Sheets; 0030 0031 void TestRegion::initTestCase() 0032 { 0033 m_map = new Map(0 /* no Doc*/); 0034 Sheet* sheet = m_map->addNewSheet(); 0035 sheet->setSheetName("Sheet1"); 0036 sheet = m_map->addNewSheet(); 0037 sheet->setSheetName("Sheet2"); 0038 sheet = m_map->addNewSheet(); 0039 sheet->setSheetName("Sheet3"); 0040 sheet = m_map->addNewSheet(); 0041 sheet->setSheetName("Sheet 4"); 0042 } 0043 0044 void TestRegion::testComparison() 0045 { 0046 Region region1; 0047 Region region2; 0048 region1 = Region("A1"); 0049 region2 = Region("A1"); 0050 QVERIFY(region1 == region2); 0051 region1 = Region("A1:A5"); 0052 region2 = Region("A1:A5"); 0053 QVERIFY(region1 == region2); 0054 region1 = Region("A1:A5;B4"); 0055 region2 = Region("A1:A5;B4"); 0056 QVERIFY(region1 == region2); 0057 region2 = Region("A1"); 0058 QVERIFY(region1 != region2); 0059 region2 = Region("A1:A5"); 0060 QVERIFY(region1 != region2); 0061 } 0062 0063 void TestRegion::testFixation() 0064 { 0065 Region region; 0066 region = Region("$A1", m_map, m_map->sheet(0)); 0067 QCOMPARE(region.name(), QString("Sheet1!$A1")); 0068 region = Region("A$1", m_map, m_map->sheet(0)); 0069 QCOMPARE(region.name(), QString("Sheet1!A$1")); 0070 region = Region("$A$1", m_map, m_map->sheet(0)); 0071 QCOMPARE(region.name(), QString("Sheet1!$A$1")); 0072 region = Region("$A1:B4", m_map, m_map->sheet(0)); 0073 QCOMPARE(region.name(), QString("Sheet1!$A1:B4")); 0074 region = Region("A$1:B4", m_map, m_map->sheet(0)); 0075 QCOMPARE(region.name(), QString("Sheet1!A$1:B4")); 0076 region = Region("$A$1:B4", m_map, m_map->sheet(0)); 0077 QCOMPARE(region.name(), QString("Sheet1!$A$1:B4")); 0078 region = Region("A1:$B4", m_map, m_map->sheet(0)); 0079 QCOMPARE(region.name(), QString("Sheet1!A1:$B4")); 0080 region = Region("A1:B$4", m_map, m_map->sheet(0)); 0081 QCOMPARE(region.name(), QString("Sheet1!A1:B$4")); 0082 region = Region("A1:$B$4", m_map, m_map->sheet(0)); 0083 QCOMPARE(region.name(), QString("Sheet1!A1:$B$4")); 0084 } 0085 0086 void TestRegion::testSheet() 0087 { 0088 Region region; 0089 region = Region(QPoint(1, 1), m_map->sheet(0)); 0090 QCOMPARE(region.name(), QString("Sheet1!A1")); 0091 QCOMPARE(region.firstSheet(), m_map->sheet(0)); 0092 region = Region("A1"); 0093 QCOMPARE(region.name(), QString("A1")); 0094 QCOMPARE(region.firstSheet(), (Sheet*)0); 0095 region = Region("A1", m_map, m_map->sheet(0)); 0096 QCOMPARE(region.name(), QString("Sheet1!A1")); 0097 QCOMPARE(region.firstSheet(), m_map->sheet(0)); 0098 region = Region("Sheet1!A1", m_map, m_map->sheet(1)); 0099 QCOMPARE(region.name(), QString("Sheet1!A1")); 0100 QCOMPARE(region.firstSheet(), m_map->sheet(0)); 0101 region = Region("Sheet2!A1", m_map); 0102 QCOMPARE(region.name(), QString("Sheet2!A1")); 0103 QCOMPARE(region.firstSheet(), m_map->sheet(1)); 0104 region = Region("Sheet2!A1", m_map, m_map->sheet(0)); 0105 QCOMPARE(region.name(), QString("Sheet2!A1")); 0106 QCOMPARE(region.firstSheet(), m_map->sheet(1)); 0107 region = Region("Sheet 4!A1", m_map, m_map->sheet(0)); 0108 QCOMPARE(region.name(), QString("'Sheet 4'!A1")); 0109 QCOMPARE(region.firstSheet(), m_map->sheet(3)); 0110 region = Region("'Sheet 4'!A1", m_map, m_map->sheet(0)); 0111 QCOMPARE(region.name(), QString("'Sheet 4'!A1")); 0112 QCOMPARE(region.firstSheet(), m_map->sheet(3)); 0113 // Multiple quotas should be compressed, use-case that 0114 // was visible in the xls from bug 284325. 0115 region = Region("'''Sheet 4'''!A1", m_map, m_map->sheet(0)); 0116 QCOMPARE(region.name(), QString("'Sheet 4'!A1")); 0117 // invalid calls: 0118 region = Region("!A1", m_map, m_map->sheet(0)); 0119 QVERIFY(region.isEmpty()); 0120 region = Region("Sheet99!A1", m_map, m_map->sheet(0)); 0121 QVERIFY(region.isEmpty()); 0122 } 0123 0124 void TestRegion::testExtrem() 0125 { 0126 Region region1 = Region(QPoint(-1, -1), m_map->sheet(0)); 0127 QVERIFY(region1.isEmpty()); 0128 QVERIFY(!region1.isValid()); 0129 0130 Region region2 = Region("A1:A6553634523563453456356"); 0131 QVERIFY(region2.isValid()); 0132 0133 Region region3 = Region(QRect(1,1,KS_colMax,KS_rowMax), m_map->sheet(0)); 0134 QVERIFY(region3.isValid()); 0135 0136 Region region4 = Region(QRect(1,1,KS_colMax,KS_rowMax), m_map->sheet(0)); 0137 QVERIFY(region4.isValid()); 0138 Region region5 = Region(QRect(1,1,KS_colMax+12345,KS_rowMax+12345), m_map->sheet(0)); 0139 QVERIFY(region5.isValid()); 0140 QCOMPARE(region4.name(), region5.name()); 0141 0142 Region region6 = Region(QPoint(KS_colMax, KS_rowMax), m_map->sheet(0)); 0143 QVERIFY(region6.isValid()); 0144 Region region7 = Region(QPoint(KS_colMax+22, KS_rowMax+22), m_map->sheet(0)); 0145 QVERIFY(region7.isValid()); 0146 QCOMPARE(region6.name(), region7.name()); 0147 } 0148 0149 void TestRegion::cleanupTestCase() 0150 { 0151 delete m_map; 0152 } 0153 0154 QTEST_MAIN(TestRegion)