00001 #include "TestShapeAt.h"
00002 #include "MockShapes.h"
00003
00004 #include <kdebug.h>
00005 #include <KoShapeManager.h>
00006 #include <KoSelection.h>
00007
00008 void TestShapeAt::test() {
00009 MockShape shape1;
00010 MockShape shape2;
00011 MockShape shape3;
00012
00013 MockCanvas canvas;
00014 KoShapeManager manager(&canvas);
00015 shape1.setPosition(QPointF(100, 100));
00016 shape1.resize(QSizeF(50, 50));
00017 shape1.setZIndex(0);
00018 manager.add(&shape1);
00019
00020 QVERIFY(manager.shapeAt(QPointF(90, 90)) == 0);
00021 QVERIFY(manager.shapeAt(QPointF(110, 140)) != 0);
00022 QVERIFY(manager.shapeAt(QPointF(100, 100)) != 0);
00023 QVERIFY(manager.shapeAt(QPointF(100, 100), KoFlake::Selected) == 0);
00024 QVERIFY(manager.shapeAt(QPointF(100, 100), KoFlake::Unselected) != 0 );
00025 QVERIFY(manager.shapeAt(QPointF(100, 100), KoFlake::NextUnselected) != 0 );
00026
00027 shape2.setPosition(QPointF(80, 80));
00028 shape2.resize(QSizeF(50, 50));
00029 shape2.setZIndex(1);
00030 manager.add(&shape2);
00031
00032 QVERIFY(manager.shapeAt(QPointF(200, 200)) == 0);
00033 QCOMPARE(manager.shapeAt(QPointF(90, 90)), &shape2);
00034 QCOMPARE(manager.shapeAt(QPointF(105, 105)), &shape2);
00035 KoShape *dummy = 0;
00036 QCOMPARE(manager.shapeAt(QPointF(105, 105), KoFlake::Selected), dummy);
00037 QCOMPARE(manager.shapeAt(QPointF(105, 105), KoFlake::Unselected), &shape2);
00038 QCOMPARE(manager.shapeAt(QPointF(105, 105), KoFlake::NextUnselected), &shape2);
00039
00040 manager.selection()->select(&shape2);
00041
00042 QVERIFY(manager.shapeAt(QPointF(200, 200)) == 0);
00043 QCOMPARE(manager.shapeAt(QPointF(90, 90)), &shape2);
00044 QCOMPARE(manager.shapeAt(QPointF(105, 105)), &shape2);
00045 QCOMPARE(manager.shapeAt(QPointF(105, 105), KoFlake::Selected), &shape2);
00046 QCOMPARE(manager.shapeAt(QPointF(105, 105), KoFlake::Unselected), &shape1);
00047 QCOMPARE(manager.shapeAt(QPointF(105, 105), KoFlake::NextUnselected), &shape1);
00048
00049 shape3.setPosition(QPointF(120, 80));
00050 shape3.resize(QSizeF(50, 50));
00051 shape3.setZIndex(2);
00052 manager.add(&shape3);
00053
00054 QVERIFY(manager.shapeAt(QPointF(200, 200)) == 0);
00055 QCOMPARE(manager.shapeAt(QPointF(90, 90)), &shape2);
00056
00057 QVERIFY(manager.shapeAt(QPointF(200, 200)) == 0);
00058 QCOMPARE(manager.shapeAt(QPointF(90, 90)), &shape2);
00059 QCOMPARE(manager.shapeAt(QPointF(105, 145)), &shape1);
00060 QCOMPARE(manager.shapeAt(QPointF(165, 90)), &shape3);
00061
00062 QCOMPARE(manager.shapeAt(QPointF(125, 105)), &shape3);
00063 QCOMPARE(manager.shapeAt(QPointF(105, 105), KoFlake::Selected), &shape2);
00064 QCOMPARE(manager.shapeAt(QPointF(105, 105), KoFlake::Unselected), &shape1);
00065 QCOMPARE(manager.shapeAt(QPointF(105, 105), KoFlake::NextUnselected), &shape1);
00066
00067 QCOMPARE(manager.shapeAt(QPointF(125, 105), KoFlake::Selected), &shape2);
00068 QCOMPARE(manager.shapeAt(QPointF(125, 105), KoFlake::Unselected), &shape3);
00069 QCOMPARE(manager.shapeAt(QPointF(125, 105), KoFlake::NextUnselected), &shape1);
00070
00071
00072 QCOMPARE(manager.shapeAt(QPointF(125, 105), KoFlake::Selected, true), &shape2);
00073 QCOMPARE(manager.shapeAt(QPointF(125, 105), KoFlake::Unselected, true), &shape3);
00074 QCOMPARE(manager.shapeAt(QPointF(125, 105), KoFlake::NextUnselected, true), &shape1);
00075
00076 shape3.setVisible(false);
00077 QCOMPARE(manager.shapeAt(QPointF(125, 105), KoFlake::Selected, true), &shape2);
00078 QCOMPARE(manager.shapeAt(QPointF(125, 105), KoFlake::Unselected, true), &shape1);
00079 QCOMPARE(manager.shapeAt(QPointF(125, 105), KoFlake::NextUnselected, true), &shape1);
00080 }
00081
00082 QTEST_MAIN(TestShapeAt)
00083 #include "TestShapeAt.moc"