File indexing completed on 2024-05-12 05:40:49
0001 /*************************************************************************** 0002 * Copyright (C) 2020 by Renaud Guezennec * 0003 * http://www.rolisteam.org/contact * 0004 * * 0005 * This software is free software; you can redistribute it and/or modify * 0006 * it under the terms of the GNU General Public License as published by * 0007 * the Free Software Foundation; either version 2 of the License, or * 0008 * (at your option) any later version. * 0009 * * 0010 * This program is distributed in the hope that it will be useful, * 0011 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 0012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 0013 * GNU General Public License for more details. * 0014 * * 0015 * You should have received a copy of the GNU General Public License * 0016 * along with this program; if not, write to the * 0017 * Free Software Foundation, Inc., * 0018 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * 0019 ***************************************************************************/ 0020 0021 #include "controller/item_controllers/vmapitemfactory.h" 0022 #include "controller/view_controller/vectorialmapcontroller.h" 0023 #include "media/mediafactory.h" 0024 #include "media/mediatype.h" 0025 #include "model/vmapitemmodel.h" 0026 #include "worker/iohelper.h" 0027 #include "network/networkmessagereader.h" 0028 #include "updater/vmapitem/characteritemupdater.h" 0029 #include "updater/vmapitem/ellipsecontrollerupdater.h" 0030 #include "updater/vmapitem/imagecontrollerupdater.h" 0031 #include "updater/vmapitem/linecontrollerupdater.h" 0032 #include "updater/vmapitem/pathcontrollerupdater.h" 0033 #include "updater/vmapitem/rectcontrollerupdater.h" 0034 #include "updater/vmapitem/textcontrollerupdater.h" 0035 #include "updater/vmapitem/vmapitemcontrollerupdater.h" 0036 #include "worker/vectorialmapmessagehelper.h" 0037 #include "worker/messagehelper.h" 0038 0039 #include <QColor> 0040 #include <QRectF> 0041 #include <QSignalSpy> 0042 #include <QTest> 0043 #include <QUndoStack> 0044 #include <helper.h> 0045 0046 #include <map> 0047 #include <memory> 0048 #include <vector> 0049 0050 class VectorialMapControllerTest : public QObject 0051 { 0052 Q_OBJECT 0053 public: 0054 VectorialMapControllerTest() 0055 { 0056 std::string duration("3600000"); // 3600 seconds -> 60 min 0057 QByteArray timeoutDuration(duration.c_str(), static_cast<int>(duration.length())); 0058 qputenv("QTEST_FUNCTION_TIMEOUT", timeoutDuration); 0059 { // just for checking .. 0060 auto result= qgetenv("QTEST_FUNCTION_TIMEOUT"); 0061 qDebug() << "timeout set to:" << result << "ms"; 0062 } 0063 }; 0064 0065 private slots: 0066 void init(); 0067 void cleanupTestCase(); 0068 0069 void serialization300(); 0070 void serialization300_data(); 0071 void propertyTest(); 0072 void propertiesTest(); 0073 0074 void addItemTest(); 0075 void addItemTest_data(); 0076 0077 void normalSize(); 0078 void normalSize_data(); 0079 0080 void serialization(); 0081 void serialization_data(); 0082 0083 void networkMessage(); 0084 void networkMessage_data(); 0085 0086 void serialization_network(); 0087 void serialization_network_data(); 0088 0089 private: 0090 std::unique_ptr<VectorialMapController> m_ctrl; 0091 std::unique_ptr<QUndoStack> m_stack; 0092 std::unique_ptr<Helper::TestMessageSender> m_sender; 0093 std::map<Core::SelectableTool, std::unique_ptr<VMapItemControllerUpdater>> m_updaters; 0094 }; 0095 0096 void VectorialMapControllerTest::init() 0097 { 0098 qRegisterMetaType<QUndoCommand*>("QUndoCommand*"); 0099 m_ctrl.reset(new VectorialMapController("map")); 0100 m_stack.reset(new QUndoStack); 0101 m_sender.reset(new Helper::TestMessageSender); 0102 0103 NetworkMessage::setMessageSender(m_sender.get()); 0104 0105 connect(m_ctrl.get(), &VectorialMapController::performCommand, m_stack.get(), 0106 [this](QUndoCommand* cmd) { m_stack->push(cmd); }); 0107 0108 0109 m_updaters.insert( 0110 {Core::SelectableTool::LINE, std::unique_ptr<LineControllerUpdater>(new LineControllerUpdater)}); 0111 m_updaters.insert( 0112 {Core::SelectableTool::PATH, std::unique_ptr<PathControllerUpdater>(new PathControllerUpdater)}); 0113 m_updaters.insert( 0114 {Core::SelectableTool::FILLRECT, std::unique_ptr<RectControllerUpdater>(new RectControllerUpdater)}); 0115 m_updaters.insert( 0116 {Core::SelectableTool::EMPTYRECT, std::unique_ptr<RectControllerUpdater>(new RectControllerUpdater)}); 0117 m_updaters.insert( 0118 {Core::SelectableTool::IMAGE, std::unique_ptr<ImageControllerUpdater>(new ImageControllerUpdater)}); 0119 m_updaters.insert( 0120 {Core::SelectableTool::NonPlayableCharacter, std::unique_ptr<CharacterItemUpdater>(new CharacterItemUpdater)}); 0121 m_updaters.insert( 0122 {Core::SelectableTool::FILLEDELLIPSE, std::unique_ptr<EllipseControllerUpdater>(new EllipseControllerUpdater)}); 0123 m_updaters.insert( 0124 {Core::SelectableTool::EMPTYELLIPSE, std::unique_ptr<EllipseControllerUpdater>(new EllipseControllerUpdater)}); 0125 m_updaters.insert( 0126 {Core::SelectableTool::TEXT, std::unique_ptr<TextControllerUpdater>(new TextControllerUpdater)}); 0127 m_updaters.insert( 0128 {Core::SelectableTool::TEXTBORDER, std::unique_ptr<TextControllerUpdater>(new TextControllerUpdater)}); 0129 } 0130 0131 void VectorialMapControllerTest::cleanupTestCase() 0132 { 0133 m_stack->clear(); 0134 } 0135 0136 void VectorialMapControllerTest::propertyTest() 0137 { 0138 { // NpcNameVisible 0139 QCOMPARE(m_ctrl->npcNameVisible(), true); 0140 0141 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::npcNameVisibleChanged); 0142 0143 m_ctrl->setNpcNameVisible(false); 0144 0145 QCOMPARE(m_ctrl->npcNameVisible(), false); 0146 QCOMPARE(spy.count(), 1); 0147 0148 m_ctrl->setNpcNameVisible(false); 0149 0150 QCOMPARE(m_ctrl->npcNameVisible(), false); 0151 QCOMPARE(spy.count(), 1); 0152 } 0153 0154 { // PcNameVisible 0155 QCOMPARE(m_ctrl->pcNameVisible(), true); 0156 0157 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::pcNameVisibleChanged); 0158 0159 m_ctrl->setPcNameVisible(false); 0160 0161 QCOMPARE(m_ctrl->pcNameVisible(), false); 0162 QCOMPARE(spy.count(), 1); 0163 0164 m_ctrl->setPcNameVisible(false); 0165 0166 QCOMPARE(m_ctrl->pcNameVisible(), false); 0167 QCOMPARE(spy.count(), 1); 0168 } 0169 0170 { // npcNumberVisible 0171 QCOMPARE(m_ctrl->npcNumberVisible(), true); 0172 0173 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::npcNumberVisibleChanged); 0174 0175 m_ctrl->setNpcNumberVisible(false); 0176 0177 QCOMPARE(m_ctrl->npcNumberVisible(), false); 0178 QCOMPARE(spy.count(), 1); 0179 0180 m_ctrl->setNpcNumberVisible(false); 0181 0182 QCOMPARE(m_ctrl->npcNumberVisible(), false); 0183 QCOMPARE(spy.count(), 1); 0184 } 0185 0186 { // healthBarVisible 0187 QCOMPARE(m_ctrl->healthBarVisible(), true); 0188 0189 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::healthBarVisibleChanged); 0190 0191 m_ctrl->setHealthBarVisible(false); 0192 0193 QCOMPARE(m_ctrl->healthBarVisible(), false); 0194 QCOMPARE(spy.count(), 1); 0195 0196 m_ctrl->setHealthBarVisible(false); 0197 0198 QCOMPARE(m_ctrl->healthBarVisible(), false); 0199 QCOMPARE(spy.count(), 1); 0200 } 0201 0202 { // initScoreVisible 0203 QCOMPARE(m_ctrl->initScoreVisible(), true); 0204 0205 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::initScoreVisibleChanged); 0206 0207 m_ctrl->setInitScoreVisible(false); 0208 0209 QCOMPARE(m_ctrl->initScoreVisible(), false); 0210 QCOMPARE(spy.count(), 1); 0211 0212 m_ctrl->setInitScoreVisible(false); 0213 0214 QCOMPARE(m_ctrl->initScoreVisible(), false); 0215 QCOMPARE(spy.count(), 1); 0216 } 0217 0218 { // stateLabelVisible 0219 QCOMPARE(m_ctrl->stateLabelVisible(), false); 0220 0221 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::stateLabelVisibleChanged); 0222 0223 m_ctrl->setStateLabelVisible(true); 0224 0225 QCOMPARE(m_ctrl->stateLabelVisible(), true); 0226 QCOMPARE(spy.count(), 1); 0227 0228 m_ctrl->setStateLabelVisible(true); 0229 0230 QCOMPARE(m_ctrl->stateLabelVisible(), true); 0231 QCOMPARE(spy.count(), 1); 0232 } 0233 0234 { // collision 0235 QCOMPARE(m_ctrl->collision(), false); 0236 0237 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::collisionChanged); 0238 0239 m_ctrl->setCollision(true); 0240 0241 QCOMPARE(m_ctrl->collision(), true); 0242 QCOMPARE(spy.count(), 1); 0243 0244 m_ctrl->setCollision(true); 0245 0246 QCOMPARE(m_ctrl->collision(), true); 0247 QCOMPARE(spy.count(), 1); 0248 } 0249 0250 { // characterVision 0251 QCOMPARE(m_ctrl->characterVision(), false); 0252 0253 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::characterVisionChanged); 0254 0255 m_ctrl->setCharacterVision(true); 0256 0257 QCOMPARE(m_ctrl->characterVision(), true); 0258 QCOMPARE(spy.count(), 1); 0259 0260 m_ctrl->setCharacterVision(true); 0261 0262 QCOMPARE(m_ctrl->characterVision(), true); 0263 QCOMPARE(spy.count(), 1); 0264 } 0265 0266 { // gridColor 0267 QCOMPARE(m_ctrl->gridColor(), QColor(Qt::black)); 0268 0269 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::gridColorChanged); 0270 0271 m_ctrl->setGridColor(QColor(Qt::red)); 0272 0273 QCOMPARE(m_ctrl->gridColor(), QColor(Qt::red)); 0274 QCOMPARE(spy.count(), 1); 0275 0276 m_ctrl->setGridColor(QColor(Qt::red)); 0277 0278 QCOMPARE(m_ctrl->gridColor(), QColor(Qt::red)); 0279 QCOMPARE(spy.count(), 1); 0280 } 0281 0282 { // gridScale 0283 QCOMPARE(m_ctrl->gridScale(), 5.0); 0284 0285 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::gridScaleChanged); 0286 0287 m_ctrl->setGridScale(100.0); 0288 0289 QCOMPARE(m_ctrl->gridScale(), 100.0); 0290 QCOMPARE(spy.count(), 1); 0291 0292 m_ctrl->setGridScale(100.0); 0293 0294 QCOMPARE(m_ctrl->gridScale(), 100.0); 0295 QCOMPARE(spy.count(), 1); 0296 } 0297 0298 { // gridSize 0299 QCOMPARE(m_ctrl->gridSize(), 50); 0300 0301 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::gridSizeChanged); 0302 0303 m_ctrl->setGridSize(100.0); 0304 0305 QCOMPARE(m_ctrl->gridSize(), 100.0); 0306 QCOMPARE(spy.count(), 1); 0307 0308 m_ctrl->setGridSize(100.0); 0309 0310 QCOMPARE(m_ctrl->gridSize(), 100.0); 0311 QCOMPARE(spy.count(), 1); 0312 } 0313 0314 { // gridVisibility 0315 QCOMPARE(m_ctrl->gridVisibility(), false); 0316 0317 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::gridVisibilityChanged); 0318 0319 m_ctrl->setGridVisibility(true); 0320 0321 QCOMPARE(m_ctrl->gridVisibility(), true); 0322 QCOMPARE(spy.count(), 1); 0323 0324 m_ctrl->setGridVisibility(true); 0325 0326 QCOMPARE(m_ctrl->gridVisibility(), true); 0327 QCOMPARE(spy.count(), 1); 0328 } 0329 0330 { // gridAbove 0331 QCOMPARE(m_ctrl->gridAbove(), false); 0332 0333 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::gridAboveChanged); 0334 0335 m_ctrl->setGridAbove(true); 0336 0337 QCOMPARE(m_ctrl->gridAbove(), true); 0338 QCOMPARE(spy.count(), 1); 0339 0340 m_ctrl->setGridAbove(true); 0341 0342 QCOMPARE(m_ctrl->gridAbove(), true); 0343 QCOMPARE(spy.count(), 1); 0344 } 0345 0346 { // scaleUnit 0347 QCOMPARE(m_ctrl->scaleUnit(), Core::M); 0348 0349 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::scaleUnitChanged); 0350 0351 m_ctrl->setScaleUnit(Core::KM); 0352 0353 QCOMPARE(m_ctrl->scaleUnit(), Core::KM); 0354 QCOMPARE(spy.count(), 1); 0355 0356 m_ctrl->setScaleUnit(Core::KM); 0357 0358 QCOMPARE(m_ctrl->scaleUnit(), Core::KM); 0359 QCOMPARE(spy.count(), 1); 0360 } 0361 0362 { // npcName 0363 QCOMPARE(m_ctrl->npcName(), ""); 0364 0365 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::npcNameChanged); 0366 0367 m_ctrl->setNpcName("tata"); 0368 0369 QCOMPARE(m_ctrl->npcName(), "tata"); 0370 QCOMPARE(spy.count(), 1); 0371 0372 m_ctrl->setNpcName("tata"); 0373 0374 QCOMPARE(m_ctrl->npcName(), "tata"); 0375 QCOMPARE(spy.count(), 1); 0376 } 0377 0378 { // permission 0379 QCOMPARE(m_ctrl->permission(), Core::GM_ONLY); 0380 0381 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::permissionChanged); 0382 0383 m_ctrl->setPermission(Core::PC_ALL); 0384 0385 QCOMPARE(m_ctrl->permission(), Core::PC_ALL); 0386 QCOMPARE(spy.count(), 1); 0387 0388 m_ctrl->setPermission(Core::PC_ALL); 0389 0390 QCOMPARE(m_ctrl->permission(), Core::PC_ALL); 0391 QCOMPARE(spy.count(), 1); 0392 } 0393 0394 { // gridPattern 0395 QCOMPARE(m_ctrl->gridPattern(), Core::GridPattern::NONE); 0396 0397 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::gridPatternChanged); 0398 0399 m_ctrl->setGridPattern(Core::GridPattern::SQUARE); 0400 0401 QCOMPARE(m_ctrl->gridPattern(), Core::GridPattern::SQUARE); 0402 QCOMPARE(spy.count(), 1); 0403 0404 m_ctrl->setGridPattern(Core::GridPattern::SQUARE); 0405 0406 QCOMPARE(m_ctrl->gridPattern(), Core::GridPattern::SQUARE); 0407 QCOMPARE(spy.count(), 1); 0408 } 0409 { // visibility 0410 QCOMPARE(m_ctrl->visibility(), Core::HIDDEN); 0411 0412 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::visibilityChanged); 0413 0414 m_ctrl->setVisibility(Core::ALL); 0415 0416 QCOMPARE(m_ctrl->visibility(), Core::ALL); 0417 QCOMPARE(spy.count(), 1); 0418 0419 m_ctrl->setVisibility(Core::ALL); 0420 0421 QCOMPARE(m_ctrl->visibility(), Core::ALL); 0422 QCOMPARE(spy.count(), 1); 0423 } 0424 0425 { // backgroundColor 0426 QCOMPARE(m_ctrl->backgroundColor(), Qt::white); 0427 0428 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::backgroundColorChanged); 0429 0430 m_ctrl->setBackgroundColor(Qt::red); 0431 0432 QCOMPARE(m_ctrl->backgroundColor(), Qt::red); 0433 QCOMPARE(spy.count(), 1); 0434 0435 m_ctrl->setBackgroundColor(Qt::red); 0436 0437 QCOMPARE(m_ctrl->backgroundColor(), Qt::red); 0438 QCOMPARE(spy.count(), 1); 0439 } 0440 0441 { // toolColor 0442 QCOMPARE(m_ctrl->toolColor(), Qt::black); 0443 0444 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::toolColorChanged); 0445 0446 m_ctrl->setToolColor(Qt::red); 0447 0448 QCOMPARE(m_ctrl->toolColor(), Qt::red); 0449 QCOMPARE(spy.count(), 1); 0450 0451 m_ctrl->setToolColor(Qt::red); 0452 0453 QCOMPARE(m_ctrl->toolColor(), Qt::red); 0454 QCOMPARE(spy.count(), 1); 0455 } 0456 0457 { // penSize 0458 QCOMPARE(m_ctrl->penSize(), 15); 0459 0460 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::penSizeChanged); 0461 0462 m_ctrl->setPenSize(100); 0463 0464 QCOMPARE(m_ctrl->penSize(), 100); 0465 QCOMPARE(spy.count(), 1); 0466 0467 m_ctrl->setPenSize(100); 0468 0469 QCOMPARE(m_ctrl->penSize(), 100); 0470 QCOMPARE(spy.count(), 1); 0471 } 0472 0473 { // npcNumber 0474 QCOMPARE(m_ctrl->npcNumber(), 1); 0475 0476 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::npcNumberChanged); 0477 0478 m_ctrl->setNpcNumber(100); 0479 0480 QCOMPARE(m_ctrl->npcNumber(), 100); 0481 QCOMPARE(spy.count(), 1); 0482 0483 m_ctrl->setNpcNumber(100); 0484 0485 QCOMPARE(m_ctrl->npcNumber(), 100); 0486 QCOMPARE(spy.count(), 1); 0487 } 0488 0489 { // zoomLevel 0490 QCOMPARE(m_ctrl->zoomLevel(), 1.0); 0491 0492 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::zoomLevelChanged); 0493 0494 m_ctrl->setZoomLevel(4.0); 0495 0496 QCOMPARE(m_ctrl->zoomLevel(), 4.0); 0497 QCOMPARE(spy.count(), 1); 0498 0499 m_ctrl->setZoomLevel(10.0); 0500 0501 QCOMPARE(m_ctrl->zoomLevel(), 4.0); 0502 QCOMPARE(spy.count(), 1); 0503 } 0504 0505 { // layer 0506 QCOMPARE(m_ctrl->layer(), Core::Layer::GROUND); 0507 0508 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::layerChanged); 0509 0510 m_ctrl->setLayer(Core::Layer::OBJECT); 0511 0512 QCOMPARE(m_ctrl->layer(), Core::Layer::OBJECT); 0513 QCOMPARE(spy.count(), 1); 0514 0515 m_ctrl->setLayer(Core::Layer::OBJECT); 0516 0517 QCOMPARE(m_ctrl->layer(), Core::Layer::OBJECT); 0518 QCOMPARE(spy.count(), 1); 0519 } 0520 0521 { // SelectableTool 0522 QCOMPARE(m_ctrl->tool(), Core::HANDLER); 0523 0524 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::toolChanged); 0525 0526 m_ctrl->setTool(Core::PEN); 0527 0528 QCOMPARE(m_ctrl->tool(), Core::PEN); 0529 QCOMPARE(spy.count(), 1); 0530 0531 m_ctrl->setTool(Core::PEN); 0532 0533 QCOMPARE(m_ctrl->tool(), Core::PEN); 0534 QCOMPARE(spy.count(), 1); 0535 } 0536 0537 { // editionMode 0538 QCOMPARE(m_ctrl->editionMode(), Core::EditionMode::Painting); 0539 0540 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::editionModeChanged); 0541 0542 m_ctrl->setEditionMode(Core::EditionMode::Unmask); 0543 0544 QCOMPARE(m_ctrl->editionMode(), Core::EditionMode::Unmask); 0545 QCOMPARE(spy.count(), 1); 0546 0547 m_ctrl->setEditionMode(Core::EditionMode::Unmask); 0548 0549 QCOMPARE(m_ctrl->editionMode(), Core::EditionMode::Unmask); 0550 QCOMPARE(spy.count(), 1); 0551 } 0552 0553 { // opacity 0554 QCOMPARE(m_ctrl->opacity(), 1.0); 0555 0556 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::opacityChanged); 0557 0558 m_ctrl->setOpacity(0.4); 0559 0560 QCOMPARE(m_ctrl->opacity(), 0.4); 0561 QCOMPARE(spy.count(), 1); 0562 0563 m_ctrl->setOpacity(0.4); 0564 0565 QCOMPARE(m_ctrl->opacity(), 0.4); 0566 QCOMPARE(spy.count(), 1); 0567 } 0568 0569 { // visualRect 0570 QCOMPARE(m_ctrl->visualRect(), QRectF()); 0571 0572 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::visualRectChanged); 0573 0574 m_ctrl->setVisualRect(QRectF(0, 0, 100, 100)); 0575 0576 QCOMPARE(m_ctrl->visualRect(), QRectF(0, 0, 100, 100)); 0577 QCOMPARE(spy.count(), 1); 0578 0579 m_ctrl->setVisualRect(QRectF(0, 0, 100, 100)); 0580 0581 QCOMPARE(m_ctrl->visualRect(), QRectF(0, 0, 100, 100)); 0582 QCOMPARE(spy.count(), 1); 0583 } 0584 0585 { // idle 0586 QCOMPARE(m_ctrl->idle(), true); 0587 0588 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::idleChanged); 0589 0590 m_ctrl->setIdle(false); 0591 0592 QCOMPARE(m_ctrl->idle(), false); 0593 QCOMPARE(spy.count(), 1); 0594 0595 m_ctrl->setIdle(false); 0596 0597 QCOMPARE(m_ctrl->idle(), false); 0598 QCOMPARE(spy.count(), 1); 0599 } 0600 0601 { // zIndex 0602 QCOMPARE(m_ctrl->zIndex(), 0); 0603 0604 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::zIndexChanged); 0605 0606 m_ctrl->setZindex(2); 0607 0608 QCOMPARE(m_ctrl->zIndex(), 2); 0609 QCOMPARE(spy.count(), 1); 0610 0611 m_ctrl->setZindex(2); 0612 0613 QCOMPARE(m_ctrl->zIndex(), 2); 0614 QCOMPARE(spy.count(), 1); 0615 } 0616 } 0617 0618 void VectorialMapControllerTest::addItemTest() {} 0619 0620 void VectorialMapControllerTest::addItemTest_data() 0621 { 0622 // QTest::addColumn(""); 0623 } 0624 0625 void VectorialMapControllerTest::normalSize() 0626 { 0627 QFETCH(QList<vmap::VisualItemController*>, list); 0628 QFETCH(VectorialMapController::Method, method); 0629 QFETCH(QPointF, click); 0630 QFETCH(QRectF, result); 0631 QFETCH(int, call); 0632 m_stack.reset(nullptr); 0633 0634 connect(m_ctrl.get(), &VectorialMapController::performCommand, this, 0635 [list, result](QUndoCommand* cmd) 0636 { 0637 QUndoStack stack; 0638 stack.push(cmd); 0639 0640 std::for_each(list.begin(), list.end(), 0641 [result](vmap::VisualItemController* ctrl) { QCOMPARE(ctrl->rect(), result); }); 0642 }); 0643 0644 QSignalSpy spy(m_ctrl.get(), &VectorialMapController::performCommand); 0645 0646 m_ctrl->normalizeSize(list, method, click); 0647 0648 QCOMPARE(spy.count(), call); 0649 spy.wait(1000); 0650 } 0651 0652 void VectorialMapControllerTest::normalSize_data() 0653 { 0654 QTest::addColumn<QList<vmap::VisualItemController*>>("list"); 0655 QTest::addColumn<VectorialMapController::Method>("method"); 0656 QTest::addColumn<QPointF>("click"); 0657 QTest::addColumn<QRectF>("result"); 0658 QTest::addColumn<int>("call"); 0659 0660 QTest::addRow("cmd1") << QList<vmap::VisualItemController*>() << VectorialMapController::Bigger << QPointF() 0661 << QRectF() << 0; 0662 QTest::addRow("cmd2") << QList<vmap::VisualItemController*>() << VectorialMapController::Smaller << QPointF() 0663 << QRectF() << 0; 0664 QTest::addRow("cmd3") << QList<vmap::VisualItemController*>() << VectorialMapController::UnderMouse << QPointF() 0665 << QRectF() << 0; 0666 QTest::addRow("cmd4") << QList<vmap::VisualItemController*>() << VectorialMapController::Average << QPointF() 0667 << QRectF() << 0; 0668 0669 { 0670 QList<vmap::VisualItemController*> vec; 0671 vec.push_back(vmap::VmapItemFactory::createVMapItem(m_ctrl.get(), Core::SelectableTool::FILLRECT, 0672 Helper::buildRectController(true, QRectF(0, 0, 100, 100)))); 0673 QTest::addRow("cmd5") << vec << VectorialMapController::Bigger << QPointF() << QRectF(0, 0, 100, 100) << 1; 0674 } 0675 { 0676 QList<vmap::VisualItemController*> vec; 0677 vec.push_back(vmap::VmapItemFactory::createVMapItem(m_ctrl.get(), Core::SelectableTool::FILLRECT, 0678 Helper::buildRectController(true, QRectF(0, 0, 100, 100)))); 0679 QTest::addRow("cmd6") << vec << VectorialMapController::Smaller << QPointF() << QRectF(0, 0, 100, 100) << 1; 0680 } 0681 { 0682 QList<vmap::VisualItemController*> vec; 0683 vec.push_back(vmap::VmapItemFactory::createVMapItem(m_ctrl.get(), Core::SelectableTool::FILLRECT, 0684 Helper::buildRectController(true, QRectF(0, 0, 100, 100)))); 0685 QTest::addRow("cmd7") << vec << VectorialMapController::UnderMouse << QPointF(0, 0) << QRectF(0, 0, 100, 100) 0686 << 1; 0687 } 0688 { 0689 QList<vmap::VisualItemController*> vec; 0690 vec.push_back(vmap::VmapItemFactory::createVMapItem(m_ctrl.get(), Core::SelectableTool::FILLRECT, 0691 Helper::buildRectController(true, QRectF(0, 0, 100, 100)))); 0692 QTest::addRow("cmd8") << vec << VectorialMapController::Average << QPointF() << QRectF(0, 0, 100, 100) << 1; 0693 } 0694 0695 { 0696 QList<vmap::VisualItemController*> vec; 0697 vec.push_back(vmap::VmapItemFactory::createVMapItem(m_ctrl.get(), Core::SelectableTool::FILLRECT, 0698 Helper::buildRectController(true, QRectF(0, 0, 10, 10)))); 0699 vec.push_back(vmap::VmapItemFactory::createVMapItem(m_ctrl.get(), Core::SelectableTool::FILLRECT, 0700 Helper::buildRectController(true, QRectF(0, 0, 100, 100)))); 0701 QTest::addRow("cmd9") << vec << VectorialMapController::Bigger << QPointF() << QRectF(0, 0, 100, 100) << 1; 0702 } 0703 { 0704 QList<vmap::VisualItemController*> vec; 0705 vec.push_back(vmap::VmapItemFactory::createVMapItem(m_ctrl.get(), Core::SelectableTool::FILLRECT, 0706 Helper::buildRectController(true, QRectF(0, 0, 10, 10)))); 0707 vec.push_back(vmap::VmapItemFactory::createVMapItem(m_ctrl.get(), Core::SelectableTool::FILLRECT, 0708 Helper::buildRectController(true, QRectF(0, 0, 100, 100)))); 0709 QTest::addRow("cmd10") << vec << VectorialMapController::Smaller << QPointF() << QRectF(0, 0, 10, 10) << 1; 0710 } 0711 { 0712 QList<vmap::VisualItemController*> vec; 0713 vec.push_back(vmap::VmapItemFactory::createVMapItem(m_ctrl.get(), Core::SelectableTool::FILLRECT, 0714 Helper::buildRectController(true, QRectF(0, 0, 100, 100)))); 0715 vec.push_back(vmap::VmapItemFactory::createVMapItem(m_ctrl.get(), Core::SelectableTool::FILLRECT, 0716 Helper::buildRectController(true, QRectF(0, 0, 10, 10)))); 0717 QTest::addRow("cmd11") << vec << VectorialMapController::UnderMouse << QPointF(0, 0) << QRectF(0, 0, 100, 100) 0718 << 1; 0719 } 0720 { 0721 QList<vmap::VisualItemController*> vec; 0722 vec.push_back(vmap::VmapItemFactory::createVMapItem(m_ctrl.get(), Core::SelectableTool::FILLRECT, 0723 Helper::buildRectController(true, QRectF(0, 0, 10, 10)))); 0724 vec.push_back(vmap::VmapItemFactory::createVMapItem(m_ctrl.get(), Core::SelectableTool::FILLRECT, 0725 Helper::buildRectController(true, QRectF(0, 0, 100, 100)))); 0726 QTest::addRow("cmd12") << vec << VectorialMapController::Average << QPointF() << QRectF(0, 0, 55, 55) << 1; 0727 } 0728 0729 { 0730 QList<vmap::VisualItemController*> vec; 0731 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0732 m_ctrl.get(), Core::SelectableTool::FILLRECT, 0733 Helper::buildRectController(true, QRectF(0, 0, 10, 10), QPointF(0, 0)))); 0734 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0735 m_ctrl.get(), Core::SelectableTool::FILLRECT, 0736 Helper::buildRectController(true, QRectF(0, 0, 100, 100), QPointF(20, 20)))); 0737 QTest::addRow("cmd13") << vec << VectorialMapController::Bigger << QPointF() << QRectF(0, 0, 100, 100) << 1; 0738 } 0739 { 0740 QList<vmap::VisualItemController*> vec; 0741 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0742 m_ctrl.get(), Core::SelectableTool::FILLRECT, 0743 Helper::buildRectController(true, QRectF(0, 0, 10, 10), QPointF(0, 0)))); 0744 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0745 m_ctrl.get(), Core::SelectableTool::FILLRECT, 0746 Helper::buildRectController(true, QRectF(0, 0, 100, 100), QPointF(20, 20)))); 0747 QTest::addRow("cmd14") << vec << VectorialMapController::Smaller << QPointF() << QRectF(0, 0, 10, 10) << 1; 0748 } 0749 { 0750 QList<vmap::VisualItemController*> vec; 0751 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0752 m_ctrl.get(), Core::SelectableTool::FILLRECT, 0753 Helper::buildRectController(true, QRectF(0, 0, 15, 15), QPointF(0, 0)))); 0754 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0755 m_ctrl.get(), Core::SelectableTool::FILLRECT, 0756 Helper::buildRectController(true, QRectF(0, 0, 100, 100), QPointF(20, 20)))); 0757 QTest::addRow("cmd15") << vec << VectorialMapController::UnderMouse << QPointF(10, 10) << QRectF(0, 0, 15, 15) 0758 << 1; 0759 } 0760 { 0761 QList<vmap::VisualItemController*> vec; 0762 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0763 m_ctrl.get(), Core::SelectableTool::FILLRECT, 0764 Helper::buildRectController(true, QRectF(0, 0, 10, 10), QPointF(0, 0)))); 0765 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0766 m_ctrl.get(), Core::SelectableTool::FILLRECT, 0767 Helper::buildRectController(true, QRectF(0, 0, 100, 100), QPointF(20, 20)))); 0768 QTest::addRow("cmd16") << vec << VectorialMapController::UnderMouse << QPointF(30, 30) << QRectF(0, 0, 100, 100) 0769 << 1; 0770 } 0771 { 0772 QList<vmap::VisualItemController*> vec; 0773 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0774 m_ctrl.get(), Core::SelectableTool::FILLRECT, 0775 Helper::buildRectController(true, QRectF(0, 0, 10, 10), QPointF(0, 0)))); 0776 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0777 m_ctrl.get(), Core::SelectableTool::FILLRECT, 0778 Helper::buildRectController(true, QRectF(0, 0, 100, 100), QPointF(20, 20)))); 0779 QTest::addRow("cmd17") << vec << VectorialMapController::Average << QPointF() << QRectF(0, 0, 55, 55) << 1; 0780 } 0781 0782 { 0783 QList<vmap::VisualItemController*> vec; 0784 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0785 m_ctrl.get(), Core::SelectableTool::FILLRECT, 0786 Helper::buildRectController(true, QRectF(0, 0, 10, 10), QPointF(0, 0)))); 0787 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0788 m_ctrl.get(), Core::SelectableTool::TEXTBORDER, 0789 Helper::buildTextController(true, "hello world", QRectF(0, 0, 100, 100), QPointF(20, 20)))); 0790 QTest::addRow("cmd18") << vec << VectorialMapController::Bigger << QPointF() << QRectF(0, 0, 100, 100) << 1; 0791 } 0792 { 0793 QList<vmap::VisualItemController*> vec; 0794 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0795 m_ctrl.get(), Core::SelectableTool::FILLRECT, 0796 Helper::buildRectController(true, QRectF(0, 0, 1000, 1000), QPointF(0, 0)))); 0797 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0798 m_ctrl.get(), Core::SelectableTool::TEXTBORDER, 0799 Helper::buildTextController(true, "hello world", QRectF(0, 0, 100, 100), QPointF(20, 20)))); 0800 QTest::addRow("cmd19") << vec << VectorialMapController::Smaller << QPointF() << QRectF(0, 0, 100, 100) << 1; 0801 } 0802 { 0803 QList<vmap::VisualItemController*> vec; 0804 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0805 m_ctrl.get(), Core::SelectableTool::TEXTBORDER, 0806 Helper::buildTextController(true, "hello world", QRectF(0, 0, 300, 300), QPointF(20, 20)))); 0807 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0808 m_ctrl.get(), Core::SelectableTool::FILLRECT, 0809 Helper::buildRectController(true, QRectF(0, 0, 200, 200), QPointF(0, 0)))); 0810 QTest::addRow("cmd20") << vec << VectorialMapController::UnderMouse << QPointF(30, 30) << QRectF(0, 0, 300, 300) 0811 << 1; 0812 } 0813 { 0814 QList<vmap::VisualItemController*> vec; 0815 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0816 m_ctrl.get(), Core::SelectableTool::TEXTBORDER, 0817 Helper::buildTextController(true, "hello world", QRectF(0, 0, 100, 100), QPointF(20, 20)))); 0818 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0819 m_ctrl.get(), Core::SelectableTool::FILLRECT, 0820 Helper::buildRectController(true, QRectF(0, 0, 10, 10), QPointF(0, 0)))); 0821 QTest::addRow("cmd21") << vec << VectorialMapController::UnderMouse << QPointF(30, 30) << QRectF(0, 0, 100, 100) 0822 << 1; 0823 } 0824 { 0825 QList<vmap::VisualItemController*> vec; 0826 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0827 m_ctrl.get(), Core::SelectableTool::FILLRECT, 0828 Helper::buildRectController(true, QRectF(0, 0, 10, 10), QPointF(0, 0)))); 0829 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0830 m_ctrl.get(), Core::SelectableTool::TEXTBORDER, 0831 Helper::buildTextController(true, "hello world", QRectF(0, 0, 100, 100), QPointF(20, 20)))); 0832 QTest::addRow("cmd22") << vec << VectorialMapController::Average << QPointF() << QRectF(0, 0, 55, 55) << 1; 0833 } 0834 0835 { 0836 QList<vmap::VisualItemController*> vec; 0837 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0838 m_ctrl.get(), Core::SelectableTool::TEXTBORDER, 0839 Helper::buildTextController(true, "hello world", QRectF(0, 0, 10, 10), QPointF(0, 0)))); 0840 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0841 m_ctrl.get(), Core::SelectableTool::TEXTBORDER, 0842 Helper::buildTextController(true, "hello world", QRectF(0, 0, 100, 100), QPointF(20, 20)))); 0843 QTest::addRow("cmd23") << vec << VectorialMapController::Bigger << QPointF() << QRectF(0, 0, 100, 100) << 1; 0844 } 0845 { 0846 QList<vmap::VisualItemController*> vec; 0847 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0848 m_ctrl.get(), Core::SelectableTool::TEXTBORDER, 0849 Helper::buildTextController(true, "hello world", QRectF(0, 0, 10, 10), QPointF(0, 0)))); 0850 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0851 m_ctrl.get(), Core::SelectableTool::TEXTBORDER, 0852 Helper::buildTextController(true, "hello world", QRectF(0, 0, 100, 100), QPointF(20, 20)))); 0853 QTest::addRow("cmd24") << vec << VectorialMapController::Smaller << QPointF() << QRectF(0, 0, 10, 10) << 1; 0854 } 0855 { 0856 QList<vmap::VisualItemController*> vec; 0857 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0858 m_ctrl.get(), Core::SelectableTool::TEXTBORDER, 0859 Helper::buildTextController(true, "hello world", QRectF(0, 0, 10, 10), QPointF(0, 0)))); 0860 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0861 m_ctrl.get(), Core::SelectableTool::TEXTBORDER, 0862 Helper::buildTextController(true, "hello world", QRectF(0, 0, 100, 100), QPointF(20, 20)))); 0863 QTest::addRow("cmd25") << vec << VectorialMapController::UnderMouse << QPointF(0, 0) << QRectF(0, 0, 10, 10) 0864 << 1; 0865 } 0866 { 0867 QList<vmap::VisualItemController*> vec; 0868 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0869 m_ctrl.get(), Core::SelectableTool::TEXTBORDER, 0870 Helper::buildTextController(true, "hello world", QRectF(0, 0, 10, 10), QPointF(0, 0)))); 0871 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0872 m_ctrl.get(), Core::SelectableTool::TEXTBORDER, 0873 Helper::buildTextController(true, "hello world", QRectF(0, 0, 100, 100), QPointF(20, 20)))); 0874 QTest::addRow("cmd26") << vec << VectorialMapController::UnderMouse << QPointF(30, 30) << QRectF(0, 0, 100, 100) 0875 << 1; 0876 } 0877 { 0878 QList<vmap::VisualItemController*> vec; 0879 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0880 m_ctrl.get(), Core::SelectableTool::TEXTBORDER, 0881 Helper::buildTextController(true, "hello world", QRectF(0, 0, 10, 10), QPointF(0, 0)))); 0882 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0883 m_ctrl.get(), Core::SelectableTool::TEXTBORDER, 0884 Helper::buildTextController(true, "hello world", QRectF(0, 0, 100, 100), QPointF(20, 20)))); 0885 QTest::addRow("cmd27") << vec << VectorialMapController::Average << QPointF() << QRectF(0, 0, 55, 55) << 1; 0886 } 0887 0888 { 0889 QList<vmap::VisualItemController*> vec; 0890 vec.push_back( 0891 vmap::VmapItemFactory::createVMapItem(m_ctrl.get(), Core::SelectableTool::FILLEDELLIPSE, 0892 Helper::buildEllipseController(true, 10, 10, QPointF(0, 0)))); 0893 vec.push_back( 0894 vmap::VmapItemFactory::createVMapItem(m_ctrl.get(), Core::SelectableTool::FILLEDELLIPSE, 0895 Helper::buildEllipseController(true, 100, 100, QPointF(0, 0)))); 0896 QTest::addRow("cmd28") << vec << VectorialMapController::Bigger << QPointF() << QRectF(-100, -100, 200, 200) 0897 << 1; 0898 } 0899 { 0900 QList<vmap::VisualItemController*> vec; 0901 vec.push_back( 0902 vmap::VmapItemFactory::createVMapItem(m_ctrl.get(), Core::SelectableTool::FILLEDELLIPSE, 0903 Helper::buildEllipseController(true, 10, 10, QPointF(0, 0)))); 0904 vec.push_back( 0905 vmap::VmapItemFactory::createVMapItem(m_ctrl.get(), Core::SelectableTool::FILLEDELLIPSE, 0906 Helper::buildEllipseController(true, 100, 100, QPointF(20, 20)))); 0907 QTest::addRow("cmd29") << vec << VectorialMapController::Smaller << QPointF() << QRectF(-10, -10, 20, 20) << 1; 0908 } 0909 { 0910 QList<vmap::VisualItemController*> vec; 0911 vec.push_back( 0912 vmap::VmapItemFactory::createVMapItem(m_ctrl.get(), Core::SelectableTool::FILLEDELLIPSE, 0913 Helper::buildEllipseController(true, 10, 10, QPointF(0, 0)))); 0914 vec.push_back( 0915 vmap::VmapItemFactory::createVMapItem(m_ctrl.get(), Core::SelectableTool::FILLEDELLIPSE, 0916 Helper::buildEllipseController(true, 100, 100, QPointF(20, 20)))); 0917 QTest::addRow("cmd30") << vec << VectorialMapController::UnderMouse << QPointF(0, 0) << QRectF(-10, -10, 20, 20) 0918 << 1; 0919 } 0920 { 0921 QList<vmap::VisualItemController*> vec; 0922 vec.push_back( 0923 vmap::VmapItemFactory::createVMapItem(m_ctrl.get(), Core::SelectableTool::FILLEDELLIPSE, 0924 Helper::buildEllipseController(true, 10, 10, QPointF(0, 0)))); 0925 vec.push_back( 0926 vmap::VmapItemFactory::createVMapItem(m_ctrl.get(), Core::SelectableTool::FILLEDELLIPSE, 0927 Helper::buildEllipseController(true, 100, 100, QPointF(20, 20)))); 0928 QTest::addRow("cmd31") << vec << VectorialMapController::UnderMouse << QPointF(30, 30) 0929 << QRectF(-100, -100, 200, 200) << 1; 0930 } 0931 { 0932 QList<vmap::VisualItemController*> vec; 0933 vec.push_back(vmap::VmapItemFactory::createVMapItem(m_ctrl.get(), Core::SelectableTool::FILLEDELLIPSE, 0934 Helper::buildEllipseController(true, 10., 10.))); 0935 vec.push_back( 0936 vmap::VmapItemFactory::createVMapItem(m_ctrl.get(), Core::SelectableTool::FILLEDELLIPSE, 0937 Helper::buildEllipseController(true, 100, 100, QPointF(0, 0)))); 0938 QTest::addRow("cmd32") << vec << VectorialMapController::Average << QPointF() << QRectF(-55, -55, 110, 110) 0939 << 1; 0940 } 0941 0942 { 0943 QList<vmap::VisualItemController*> vec; 0944 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0945 m_ctrl.get(), Core::SelectableTool::IMAGE, 0946 Helper::buildImageController(":/img/girafe3.jpg", QRectF(0, 0, 100, 100), QPointF(2000, 2000)))); 0947 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0948 m_ctrl.get(), Core::SelectableTool::IMAGE, 0949 Helper::buildImageController(":/img/lion3.jpg", QRectF(0, 0, 700, 700), QPointF(300, 300)))); 0950 QTest::addRow("cmd33") << vec << VectorialMapController::Bigger << QPointF() << QRectF(0, 0, 700, 700) << 1; 0951 } 0952 { 0953 QList<vmap::VisualItemController*> vec; 0954 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0955 m_ctrl.get(), Core::SelectableTool::IMAGE, 0956 Helper::buildImageController(":/img/girafe3.jpg", QRectF(0, 0, 100, 100), QPointF(2000, 2000)))); 0957 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0958 m_ctrl.get(), Core::SelectableTool::IMAGE, 0959 Helper::buildImageController(":/img/lion3.jpg", QRectF(0, 0, 700, 700), QPointF(300, 300)))); 0960 QTest::addRow("cmd34") << vec << VectorialMapController::Smaller << QPointF() << QRectF(0, 0, 100, 100) << 1; 0961 } 0962 { 0963 QList<vmap::VisualItemController*> vec; 0964 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0965 m_ctrl.get(), Core::SelectableTool::IMAGE, 0966 Helper::buildImageController(":/img/girafe3.jpg", QRectF(0, 0, 100, 100), QPointF(2000, 2000)))); 0967 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0968 m_ctrl.get(), Core::SelectableTool::IMAGE, 0969 Helper::buildImageController(":/img/lion3.jpg", QRectF(0, 0, 700, 700), QPointF(300, 300)))); 0970 QTest::addRow("cmd35") << vec << VectorialMapController::UnderMouse << QPointF(2010, 2010) 0971 << QRectF(0, 0, 100, 100) << 1; 0972 } 0973 { 0974 QList<vmap::VisualItemController*> vec; 0975 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0976 m_ctrl.get(), Core::SelectableTool::IMAGE, 0977 Helper::buildImageController(":/img/girafe3.jpg", QRectF(0, 0, 100, 100), QPointF(2000, 2000)))); 0978 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0979 m_ctrl.get(), Core::SelectableTool::IMAGE, 0980 Helper::buildImageController(":/img/lion3.jpg", QRectF(0, 0, 700, 700), QPointF(300, 300)))); 0981 QTest::addRow("cmd36") << vec << VectorialMapController::UnderMouse << QPointF(310, 310) 0982 << QRectF(0, 0, 700, 700) << 1; 0983 } 0984 { 0985 QList<vmap::VisualItemController*> vec; 0986 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0987 m_ctrl.get(), Core::SelectableTool::IMAGE, 0988 Helper::buildImageController(":/img/girafe3.jpg", QRectF(0, 0, 100, 100), QPointF(2000, 2000)))); 0989 vec.push_back(vmap::VmapItemFactory::createVMapItem( 0990 m_ctrl.get(), Core::SelectableTool::IMAGE, 0991 Helper::buildImageController(":/img/lion3.jpg", QRectF(0, 0, 700, 700), QPointF(300, 300)))); 0992 QTest::addRow("cmd37") << vec << VectorialMapController::Average << QPointF() << QRectF(0, 0, 400, 400) << 1; 0993 } 0994 } 0995 0996 void VectorialMapControllerTest::serialization() 0997 { 0998 using CustomMap= std::map<QString, QVariant>; 0999 QFETCH(QList<CustomMap>, list); 1000 1001 for(const auto& item : list) 1002 { 1003 m_ctrl->insertItemAt(item); 1004 } 1005 1006 auto byteArray= IOHelper::saveController(m_ctrl.get()); 1007 1008 VectorialMapController* ctrl2= new VectorialMapController(); 1009 1010 VectorialMapMessageHelper::readVectorialMapController(ctrl2, byteArray); 1011 1012 QCOMPARE(ctrl2->model()->rowCount(), m_ctrl->model()->rowCount()); 1013 } 1014 void VectorialMapControllerTest::serialization_data() 1015 { 1016 using CustomMap= std::map<QString, QVariant>; 1017 QTest::addColumn<QList<CustomMap>>("list"); 1018 1019 std::vector<Core::SelectableTool> data( 1020 {Core::SelectableTool::FILLRECT, Core::SelectableTool::LINE, Core::SelectableTool::EMPTYELLIPSE, 1021 Core::SelectableTool::EMPTYRECT, Core::SelectableTool::FILLEDELLIPSE, Core::SelectableTool::IMAGE, 1022 Core::SelectableTool::TEXT, Core::SelectableTool::TEXTBORDER, Core::SelectableTool::PATH}); 1023 /// TODO add: Core::SelectableTool::PlayableCharacter, Core::SelectableTool::NonPlayableCharacter 1024 1025 // auto list = new std::vector<CleverURI*>(); 1026 QList<CustomMap> list; 1027 1028 int index= 0; 1029 for(unsigned int i= 0; i < data.size(); ++i) 1030 { 1031 auto comb_size= i + 1; 1032 do 1033 { 1034 list.clear(); 1035 for(auto it= data.begin(); it < data.begin() + comb_size; ++it) 1036 { 1037 CustomMap map; 1038 switch(*it) 1039 { 1040 case Core::SelectableTool::FILLRECT: 1041 map= Helper::buildRectController(true, {0, 0, 200, 200}); 1042 break; 1043 case Core::SelectableTool::LINE: 1044 map= Helper::buildLineController({100, 100}, {500, 100}, {}); 1045 break; 1046 case Core::SelectableTool::EMPTYELLIPSE: 1047 map= Helper::buildEllipseController(false, 200., 100., {500., 100.}); 1048 break; 1049 case Core::SelectableTool::EMPTYRECT: 1050 map= Helper::buildRectController(false, {0, 0, 200, 200}, {300, 200}); 1051 break; 1052 case Core::SelectableTool::FILLEDELLIPSE: 1053 map= Helper::buildEllipseController(true, 200., 100., {500., 100.}); 1054 break; 1055 case Core::SelectableTool::IMAGE: 1056 map= Helper::buildImageController(":/img/girafe.jpg", {0, 0, 200, 200}); 1057 break; 1058 case Core::SelectableTool::TEXT: 1059 map= Helper::buildTextController(false, "Text without border", {0, 0, 200, 200}); 1060 break; 1061 case Core::SelectableTool::TEXTBORDER: 1062 map= Helper::buildTextController(true, "Text with border", {0, 0, 200, 200}); 1063 break; 1064 case Core::SelectableTool::PATH: 1065 map= Helper::buildPathController(true, {{0, 0}, {10, 10}, {20, 0}, {30, 10}}, {0, 0}); 1066 break; 1067 default: 1068 break; 1069 } 1070 list.append(map); 1071 } 1072 QTest::addRow("save %d", ++index) << list; 1073 } while(Helper::next_combination(data.begin(), data.begin() + comb_size, data.end())); 1074 } 1075 } 1076 1077 void VectorialMapControllerTest::serialization300() 1078 { 1079 using CustomMap= std::map<QString, QVariant>; 1080 QFETCH(QList<CustomMap>, list); 1081 1082 for(const auto& item : list) 1083 { 1084 m_ctrl->insertItemAt(item); 1085 } 1086 1087 auto byteArray= IOHelper::saveController(m_ctrl.get()); 1088 auto firstSize= byteArray.size(); 1089 1090 VectorialMapController* ctrl2= new VectorialMapController(); 1091 1092 VectorialMapMessageHelper::readVectorialMapController(ctrl2, byteArray); 1093 1094 QCOMPARE(ctrl2->model()->rowCount(), m_ctrl->model()->rowCount()); 1095 1096 for(int i= 0; i < 10; ++i) 1097 { 1098 byteArray= IOHelper::saveController(ctrl2); 1099 1100 QCOMPARE(firstSize, byteArray.size()); 1101 1102 delete ctrl2; 1103 ctrl2= new VectorialMapController(); 1104 VectorialMapMessageHelper::readVectorialMapController(ctrl2, byteArray); 1105 } 1106 delete ctrl2; 1107 } 1108 1109 void VectorialMapControllerTest::serialization300_data() 1110 { 1111 using CustomMap= std::map<QString, QVariant>; 1112 QTest::addColumn<QList<CustomMap>>("list"); 1113 1114 std::vector<Core::SelectableTool> data( 1115 {Core::SelectableTool::FILLRECT, Core::SelectableTool::LINE, Core::SelectableTool::EMPTYELLIPSE, 1116 Core::SelectableTool::EMPTYRECT, Core::SelectableTool::FILLEDELLIPSE, Core::SelectableTool::IMAGE, 1117 Core::SelectableTool::TEXT, Core::SelectableTool::TEXTBORDER, Core::SelectableTool::PATH}); 1118 1119 /// TODO add: Core::SelectableTool::PlayableCharacter, Core::SelectableTool::NonPlayableCharacter 1120 1121 // auto list = new std::vector<CleverURI*>(); 1122 QList<CustomMap> list; 1123 1124 int index= 0; 1125 for(unsigned int i= 0; i < data.size(); ++i) 1126 { 1127 auto comb_size= i + 1; 1128 do 1129 { 1130 list.clear(); 1131 for(auto it= data.begin(); it < data.begin() + comb_size; ++it) 1132 { 1133 CustomMap map; 1134 switch(*it) 1135 { 1136 case Core::SelectableTool::FILLRECT: 1137 map= Helper::buildRectController(true, {0, 0, 200, 200}); 1138 break; 1139 case Core::SelectableTool::LINE: 1140 map= Helper::buildLineController({100, 100}, {500, 100}, {}); 1141 break; 1142 case Core::SelectableTool::EMPTYELLIPSE: 1143 map= Helper::buildEllipseController(false, 200., 100., {500., 100.}); 1144 break; 1145 case Core::SelectableTool::EMPTYRECT: 1146 map= Helper::buildRectController(false, {0, 0, 200, 200}, {300, 200}); 1147 break; 1148 case Core::SelectableTool::FILLEDELLIPSE: 1149 map= Helper::buildEllipseController(true, 200., 100., {500., 100.}); 1150 break; 1151 case Core::SelectableTool::IMAGE: 1152 map= Helper::buildImageController(":/img/girafe.jpg", {0, 0, 200, 200}); 1153 break; 1154 case Core::SelectableTool::TEXT: 1155 map= Helper::buildTextController(false, "Text without border", {0, 0, 200, 200}); 1156 break; 1157 case Core::SelectableTool::TEXTBORDER: 1158 map= Helper::buildTextController(true, "Text with border", {0, 0, 200, 200}); 1159 break; 1160 case Core::SelectableTool::PATH: 1161 map= Helper::buildPathController(true, {{0, 0}, {10, 10}, {20, 0}, {30, 10}}, {0, 0}); 1162 break; 1163 default: 1164 break; 1165 } 1166 list.append(map); 1167 } 1168 QTest::addRow("save %d", ++index) << list; 1169 } while(Helper::next_combination(data.begin(), data.begin() + comb_size, data.end())); 1170 } 1171 } 1172 1173 void VectorialMapControllerTest::serialization_network() 1174 { 1175 using CustomMap= std::map<QString, QVariant>; 1176 QFETCH(CustomMap, map); 1177 QFETCH(Core::SelectableTool, tool); 1178 1179 auto itemCtrl = vmap::VmapItemFactory::createVMapItem(m_ctrl.get(), tool, map); 1180 1181 1182 NetworkMessageWriter msg(NetMsg::VMapCategory, NetMsg::AddItem); 1183 msg.string8(m_ctrl->uuid()); 1184 MessageHelper::convertVisualItemCtrlAndAdd(itemCtrl, msg); 1185 1186 1187 NetworkMessageReader reader; 1188 reader.setData(msg.data()); 1189 1190 auto itemCtrl2 = vmap::VmapItemFactory::createRemoteVMapItem(m_ctrl.get(), &reader); 1191 1192 QCOMPARE(itemCtrl->uuid(), itemCtrl2->uuid()); 1193 QCOMPARE(itemCtrl->itemType(), itemCtrl2->itemType()); 1194 QCOMPARE(itemCtrl->color(), itemCtrl2->color()); 1195 QCOMPARE(itemCtrl->rect(), itemCtrl2->rect()); 1196 QCOMPARE(itemCtrl->pos(), itemCtrl2->pos()); 1197 QCOMPARE(itemCtrl->layer(), itemCtrl2->layer()); 1198 QCOMPARE(itemCtrl->locked(), itemCtrl2->locked()); 1199 QCOMPARE(itemCtrl->tool(), itemCtrl2->tool()); 1200 QCOMPARE(itemCtrl->rotation(), itemCtrl2->rotation()); 1201 } 1202 1203 void VectorialMapControllerTest::serialization_network_data() 1204 { 1205 using CustomMap= std::map<QString, QVariant>; 1206 QTest::addColumn<CustomMap>("map"); 1207 QTest::addColumn<Core::SelectableTool>("tool"); 1208 1209 1210 std::vector<Core::SelectableTool> data( 1211 {Core::SelectableTool::FILLRECT, Core::SelectableTool::LINE, Core::SelectableTool::EMPTYELLIPSE, 1212 Core::SelectableTool::EMPTYRECT, Core::SelectableTool::FILLEDELLIPSE, Core::SelectableTool::IMAGE, 1213 Core::SelectableTool::NonPlayableCharacter, 1214 Core::SelectableTool::TEXT, Core::SelectableTool::TEXTBORDER, Core::SelectableTool::PATH}); 1215 1216 int i = 0; 1217 for(auto tool : data) 1218 { 1219 CustomMap map; 1220 switch(tool) 1221 { 1222 case Core::SelectableTool::FILLRECT: 1223 map= Helper::buildRectController(true, {0, 0, 200, 200}); 1224 break; 1225 case Core::SelectableTool::LINE: 1226 map= Helper::buildLineController({100, 100}, {500, 100}, {}); 1227 break; 1228 case Core::SelectableTool::EMPTYELLIPSE: 1229 map= Helper::buildEllipseController(false, 200., 100., {500., 100.}); 1230 break; 1231 case Core::SelectableTool::EMPTYRECT: 1232 map= Helper::buildRectController(false, {0, 0, 200, 200}, {300, 200}); 1233 break; 1234 case Core::SelectableTool::FILLEDELLIPSE: 1235 map= Helper::buildEllipseController(true, 200., 100., {500., 100.}); 1236 break; 1237 case Core::SelectableTool::IMAGE: 1238 map= Helper::buildImageController(":/img/girafe.jpg", {0, 0, 200, 200}); 1239 break; 1240 case Core::SelectableTool::TEXT: 1241 map= Helper::buildTextController(false, "Text without border", {0, 0, 200, 200}); 1242 break; 1243 case Core::SelectableTool::TEXTBORDER: 1244 map= Helper::buildTextController(true, "Text with border", {0, 0, 200, 200}); 1245 break; 1246 case Core::SelectableTool::PATH: 1247 map= Helper::buildPathController(true, {{0, 0}, {10, 10}, {20, 0}, {30, 10}}, {0, 0}); 1248 break; 1249 case Core::SelectableTool::NonPlayableCharacter: 1250 map= Helper::buildTokenController(true, {150, 150}); 1251 break; 1252 default: 1253 break; 1254 } 1255 QTest::addRow("save %d", ++i) << map << tool; 1256 } 1257 } 1258 1259 void VectorialMapControllerTest::networkMessage() 1260 { 1261 using CustomMap= std::map<QString, QVariant>; 1262 QFETCH(QList<CustomMap>, list); 1263 1264 for(const auto& item : list) 1265 { 1266 m_ctrl->insertItemAt(item); 1267 } 1268 m_ctrl->setIdle(true); 1269 1270 MessageHelper::sendOffVMap(m_ctrl.get()); 1271 auto byteArray= m_sender->messageData(); 1272 1273 NetworkMessageReader msg; 1274 msg.setData(byteArray); 1275 1276 auto type= static_cast<Core::ContentType>(msg.uint8()); 1277 auto mediabase= Media::MediaFactory::createRemoteMedia(type, &msg, Qt::red, false); 1278 auto ctrl= dynamic_cast<VectorialMapController*>(mediabase); 1279 1280 QCOMPARE(ctrl->scaleUnit(), m_ctrl->scaleUnit()); 1281 QCOMPARE(ctrl->collision(), m_ctrl->collision()); 1282 QCOMPARE(ctrl->gridColor(), m_ctrl->gridColor()); 1283 QCOMPARE(ctrl->gridScale(), m_ctrl->gridScale()); 1284 QCOMPARE(ctrl->gridSize(), m_ctrl->gridSize()); 1285 QCOMPARE(ctrl->gridVisibility(), m_ctrl->gridVisibility()); 1286 QCOMPARE(ctrl->gridAbove(), m_ctrl->gridAbove()); 1287 QCOMPARE(ctrl->permission(), m_ctrl->permission()); 1288 QCOMPARE(ctrl->gridPattern(), m_ctrl->gridPattern()); 1289 QCOMPARE(ctrl->visibility(), m_ctrl->visibility()); 1290 QCOMPARE(ctrl->backgroundColor(), m_ctrl->backgroundColor()); 1291 QCOMPARE(ctrl->penSize(), m_ctrl->penSize()); 1292 QCOMPARE(ctrl->npcNumber(), m_ctrl->npcNumber()); 1293 QCOMPARE(ctrl->layer(), m_ctrl->layer()); 1294 QCOMPARE(ctrl->opacity(), m_ctrl->opacity()); 1295 QCOMPARE(ctrl->idle(), m_ctrl->idle()); 1296 QCOMPARE(ctrl->zIndex(), m_ctrl->zIndex()); 1297 QCOMPARE(ctrl->model()->rowCount(), m_ctrl->model()->rowCount()); 1298 1299 delete mediabase; 1300 } 1301 1302 void VectorialMapControllerTest::propertiesTest() 1303 { 1304 auto res= Helper::testAllProperties(m_ctrl.get()); 1305 /*for(const auto& f : res.second) 1306 { 1307 qDebug() << f; 1308 }*/ 1309 } 1310 1311 void VectorialMapControllerTest::networkMessage_data() 1312 { 1313 using CustomMap= std::map<QString, QVariant>; 1314 QTest::addColumn<QList<CustomMap>>("list"); 1315 1316 std::vector<Core::SelectableTool> data( 1317 {Core::SelectableTool::FILLRECT, Core::SelectableTool::LINE, Core::SelectableTool::EMPTYELLIPSE, 1318 Core::SelectableTool::EMPTYRECT, Core::SelectableTool::FILLEDELLIPSE, Core::SelectableTool::IMAGE, 1319 Core::SelectableTool::TEXT, Core::SelectableTool::TEXTBORDER, Core::SelectableTool::PATH}); 1320 /// TODO add: Core::SelectableTool::PlayableCharacter, Core::SelectableTool::NonPlayableCharacter 1321 1322 // auto list = new std::vector<CleverURI*>(); 1323 QList<CustomMap> list; 1324 1325 int index= 0; 1326 for(unsigned int i= 0; i < data.size(); ++i) 1327 { 1328 auto comb_size= i + 1; 1329 do 1330 { 1331 list.clear(); 1332 for(auto it= data.begin(); it < data.begin() + comb_size; ++it) 1333 { 1334 CustomMap map; 1335 switch(*it) 1336 { 1337 case Core::SelectableTool::FILLRECT: 1338 map= Helper::buildRectController(true, {0, 0, 200, 200}); 1339 break; 1340 case Core::SelectableTool::LINE: 1341 map= Helper::buildLineController({100, 100}, {500, 100}, {}); 1342 break; 1343 case Core::SelectableTool::EMPTYELLIPSE: 1344 map= Helper::buildEllipseController(false, 200., 100., {500., 100.}); 1345 break; 1346 case Core::SelectableTool::EMPTYRECT: 1347 map= Helper::buildRectController(false, {0, 0, 200, 200}, {300, 200}); 1348 break; 1349 case Core::SelectableTool::FILLEDELLIPSE: 1350 map= Helper::buildEllipseController(true, 200., 100., {500., 100.}); 1351 break; 1352 case Core::SelectableTool::IMAGE: 1353 map= Helper::buildImageController(":/img/girafe.jpg", {0, 0, 200, 200}); 1354 break; 1355 case Core::SelectableTool::TEXT: 1356 map= Helper::buildTextController(false, "Text without border", {0, 0, 200, 200}); 1357 break; 1358 case Core::SelectableTool::TEXTBORDER: 1359 map= Helper::buildTextController(true, "Text with border", {0, 0, 200, 200}); 1360 break; 1361 case Core::SelectableTool::PATH: 1362 map= Helper::buildPathController(true, {{0, 0}, {10, 10}, {20, 0}, {30, 10}}, {0, 0}); 1363 break; 1364 default: 1365 break; 1366 } 1367 list.append(map); 1368 } 1369 QTest::addRow("save %d", ++index) << list; 1370 } while(Helper::next_combination(data.begin(), data.begin() + comb_size, data.end())); 1371 } 1372 } 1373 1374 QTEST_MAIN(VectorialMapControllerTest); 1375 1376 #include "tst_vectorialmapcontrollertest.moc"