You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
153 lines
4.8 KiB
153 lines
4.8 KiB
/* This file is part of the KOffice project
|
|
* Copyright (C) 2005 Thomas Zander <zander@kde.org>
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Library General Public
|
|
* License as published by the Free Software Foundation; version 2.
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Library General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Library General Public License
|
|
* along with this library; see the file COPYING.LIB. If not, write to
|
|
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
* Boston, MA 02110-1301, USA.
|
|
*/
|
|
#include "FrameTester.h"
|
|
#include <KWFrame.h>
|
|
#include <KWFrameList.h>
|
|
#include <KWDocument.h>
|
|
#include <kunittest/runner.h>
|
|
#include <kunittest/module.h>
|
|
#include <qapplication.h>
|
|
|
|
using namespace KUnitTest;
|
|
|
|
KUNITTEST_MODULE(kunittest_FrameTester, "Frame Tester");
|
|
KUNITTEST_MODULE_REGISTER_TESTER(KWFrameTester);
|
|
|
|
void KWFrameTester::allTests() {
|
|
int argc = 0;
|
|
char** argv = 0;
|
|
QApplication app( argc, argv ); // needed for KWDocument, due to KWCommandHistory -> KToolBarPopupAction -> QPopupMenu -> QWidget
|
|
|
|
testSimpleFrame();
|
|
testFrameList();
|
|
testDeleteAllCopies();
|
|
testNestedFrames();
|
|
}
|
|
|
|
void KWFrameTester::testSimpleFrame() {
|
|
KWFrameSet *fs = new TestFrameSet();
|
|
KWFrame *f = new KWFrame(fs, 0, 1, 10, 11);
|
|
|
|
KWFrame *f2 = f->getCopy();
|
|
CHECK(f2->x(), 0.0);
|
|
CHECK(f2->y(), 1.0);
|
|
CHECK(f2->width(), 10.0);
|
|
CHECK(f2->height(), 11.0);
|
|
}
|
|
|
|
void KWFrameTester::testFrameList()
|
|
{
|
|
KWDocument* doc = new KWDocument();
|
|
|
|
KWFrameSet *fs = new TestFrameSet( doc );
|
|
// f2 is above f1, f3 doesn't intersect with either
|
|
KWFrame *f1 = new KWFrame(fs, 0, 1, 10, 11);
|
|
f1->setZOrder( 1 );
|
|
fs->addFrame( f1 );
|
|
KWFrame *f2 = new KWFrame(fs, 1, 5, 10, 12);
|
|
f2->setZOrder( 10 );
|
|
fs->addFrame( f2 );
|
|
KWFrame *f3 = new KWFrame(fs, 100, 101, 10, 12);
|
|
f3->setZOrder( 5 );
|
|
fs->addFrame( f3 );
|
|
|
|
CHECK( (int)fs->frameCount(), 3 );
|
|
|
|
doc->addFrameSet( fs ); // creates frame lists
|
|
|
|
KWFrameList* f1List = f1->frameStack();
|
|
CHECK( f1List != 0, true );
|
|
CHECK( f1List->framesBelow().isEmpty(), true );
|
|
CHECK( f1List->framesOnTop().count(), (size_t)1 );
|
|
CHECK( f1List->framesOnTop().first(), f2 );
|
|
|
|
KWFrameList* f2List = f2->frameStack();
|
|
CHECK( f2List->framesBelow().count(), (size_t)1 );
|
|
CHECK( f2List->framesBelow().first(), f1 );
|
|
CHECK( f2List->framesOnTop().isEmpty(), true );
|
|
|
|
KWFrameList* f3List = f3->frameStack();
|
|
CHECK( f3List->framesBelow().isEmpty(), true );
|
|
CHECK( f3List->framesOnTop().isEmpty(), true );
|
|
|
|
delete doc;
|
|
}
|
|
|
|
void KWFrameTester::testDeleteAllCopies() {
|
|
KWFrameSet *fs = new TestFrameSet();
|
|
KWFrame *f = new KWFrame(fs, 0, 1, 10, 11);
|
|
fs->addFrame(f);
|
|
|
|
fs->deleteAllCopies();
|
|
CHECK(fs->frameCount(), (unsigned int) 1);
|
|
CHECK(fs->frame(0), f);
|
|
|
|
KWFrame *f2 = f->getCopy();
|
|
f2->setCopy(true);
|
|
fs->addFrame(f2);
|
|
|
|
CHECK(fs->frameCount(), (unsigned int) 2);
|
|
CHECK(fs->frame(0), f);
|
|
CHECK(fs->frame(1), f2);
|
|
|
|
fs->deleteAllCopies();
|
|
f2=0;
|
|
CHECK(fs->frameCount(), (unsigned int) 1);
|
|
CHECK(fs->frame(0), f);
|
|
}
|
|
|
|
void KWFrameTester::testNestedFrames() {
|
|
KWDocument *doc = new KWDocument();
|
|
CHECK(doc->pageManager() != 0, true);
|
|
|
|
KWTextFrameSet *base = new TestTextFrameSet(doc, "base");
|
|
base->setPageManager(doc->pageManager());
|
|
KWFrame *f1 = new KWFrame(base, 0, 1, 10, 11);
|
|
base->addFrame(f1);
|
|
KWTextFrameSet *nested = new TestTextFrameSet(doc, "nested");
|
|
nested->setPageManager(doc->pageManager());
|
|
KWFrame *f2 = new KWFrame(nested, 0, 1, 10, 11);
|
|
nested->addFrame(f2);
|
|
|
|
nested->setAnchorFrameset(base);
|
|
|
|
KWFrameSet *deepNested = new TestTextFrameSet(doc, "deepNested");
|
|
deepNested->setPageManager(doc->pageManager());
|
|
KWFrame *f3 = new KWFrame(deepNested, 0, 1, 10, 11);
|
|
deepNested->addFrame(f3);
|
|
|
|
deepNested->setAnchorFrameset(nested);
|
|
|
|
doc->addFrameSet(base, false);
|
|
doc->addFrameSet(nested, false);
|
|
doc->addFrameSet(deepNested, false);
|
|
|
|
CHECK(f1->frameStack() != 0, true);
|
|
CHECK(f2->frameStack() != 0, true);
|
|
CHECK(f3->frameStack() != 0, true);
|
|
|
|
// since nested and deepNested are inline they are 'inside' the base frame and thuse
|
|
// all above and below lists should be empty.
|
|
CHECK(f1->frameStack()->framesBelow().isEmpty(), true);
|
|
CHECK(f2->frameStack()->framesBelow().isEmpty(), true);
|
|
CHECK(f3->frameStack()->framesBelow().isEmpty(), true);
|
|
CHECK(f1->frameStack()->framesOnTop().isEmpty(), true);
|
|
CHECK(f2->frameStack()->framesOnTop().isEmpty(), true);
|
|
CHECK(f3->frameStack()->framesOnTop().isEmpty(), true);
|
|
}
|