~ubuntu-branches/ubuntu/maverick/kdegraphics/maverick-proposed

« back to all changes in this revision

Viewing changes to gwenview/tests/documenttest.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Jonathan Thomas
  • Date: 2009-12-02 14:03:43 UTC
  • mfrom: (1.1.35 upstream)
  • Revision ID: james.westby@ubuntu.com-20091202140343-2732gbkj69g89arq
Tags: 4:4.3.80-0ubuntu1
* New upstream beta release:
  - Add build-depend on shared-desktop-ontologies for nepomuk integration
  - Bump .so versions for libkexiv, libkdcraw and libkipi
  - Update various .install files

Show diffs side-by-side

added added

removed removed

Lines of Context:
317
317
        QCOMPARE(doc1.data(), doc2.data());
318
318
}
319
319
 
320
 
void DocumentTest::testSave() {
 
320
void DocumentTest::testSaveAs() {
321
321
        KUrl url = urlForTestFile("orient6.jpg");
322
 
        Document::Ptr doc = DocumentFactory::instance()->load(url);
 
322
        DocumentFactory* factory = DocumentFactory::instance();
 
323
        Document::Ptr doc = factory->load(url);
 
324
        QSignalSpy savedSpy(doc.data(), SIGNAL(saved(const KUrl&, const KUrl&)));
 
325
        QSignalSpy modifiedDocumentListChangedSpy(factory, SIGNAL(modifiedDocumentListChanged()));
 
326
        QSignalSpy documentChangedSpy(factory, SIGNAL(documentChanged(const KUrl&)));
323
327
        doc->loadFullImage();
324
328
 
325
329
        KUrl destUrl = urlForTestOutputFile("result.png");
326
330
        QVERIFY(doc->save(destUrl, "png"));
327
331
        QCOMPARE(doc->format().data(), "png");
 
332
        QCOMPARE(doc->url(), destUrl);
328
333
 
329
334
        QVERIFY2(doc->loadingState() == Document::Loaded,
330
335
                "Document is supposed to finish loading before saving"
331
336
                );
332
337
        
 
338
        QTest::qWait(100); // saved() is emitted asynchronously
 
339
        QCOMPARE(savedSpy.count(), 1);
 
340
        QVariantList args = savedSpy.takeFirst();
 
341
        QCOMPARE(args.at(0).value<KUrl>(), url);
 
342
        QCOMPARE(args.at(1).value<KUrl>(), destUrl);
 
343
 
333
344
        QImage image("result.png", "png");
334
345
        QCOMPARE(doc->image(), image);
 
346
 
 
347
        QVERIFY(!DocumentFactory::instance()->hasUrl(url));
 
348
        QVERIFY(DocumentFactory::instance()->hasUrl(destUrl));
 
349
 
 
350
        QCOMPARE(modifiedDocumentListChangedSpy.count(), 0); // No changes were made
 
351
 
 
352
        QCOMPARE(documentChangedSpy.count(), 1);
 
353
        args = documentChangedSpy.takeFirst();
 
354
        QCOMPARE(args.at(0).value<KUrl>(), destUrl);
335
355
}
336
356
 
337
357
void DocumentTest::testLosslessSave() {
396
416
        QCOMPARE(image1, image2);
397
417
}
398
418
 
399
 
void DocumentTest::testModify() {
 
419
void DocumentTest::testModifyAndSaveAs() {
 
420
        QVariantList args;
400
421
        class TestOperation : public AbstractImageOperation {
401
422
        public:
402
423
                void redo() {
405
426
                        document()->editor()->setImage(image);
406
427
                }
407
428
        };
408
 
        QSignalSpy spy(DocumentFactory::instance(), SIGNAL(modifiedDocumentListChanged()));
409
 
 
410
429
        KUrl url = urlForTestFile("orient6.jpg");
411
 
        Document::Ptr doc = DocumentFactory::instance()->load(url);
 
430
        DocumentFactory* factory = DocumentFactory::instance();
 
431
        Document::Ptr doc = factory->load(url);
 
432
 
 
433
        QSignalSpy savedSpy(doc.data(), SIGNAL(saved(const KUrl&, const KUrl&)));
 
434
        QSignalSpy modifiedDocumentListChangedSpy(factory, SIGNAL(modifiedDocumentListChanged()));
 
435
        QSignalSpy documentChangedSpy(factory, SIGNAL(documentChanged(const KUrl&)));
 
436
 
412
437
        doc->loadFullImage();
413
438
        doc->waitUntilLoaded();
414
439
        QVERIFY(!doc->isModified());
415
 
        QCOMPARE(spy.count(), 0);
 
440
        QCOMPARE(modifiedDocumentListChangedSpy.count(), 0);
416
441
 
 
442
        // Modify image
417
443
        QVERIFY(doc->editor());
418
444
        TestOperation* op = new TestOperation;
419
445
        op->setDocument(doc);
420
446
        doc->undoStack()->push(op);
421
447
        QVERIFY(doc->isModified());
422
 
        QCOMPARE(spy.count(), 1);
423
 
        QList<KUrl> lst = DocumentFactory::instance()->modifiedDocumentList();
 
448
        QCOMPARE(modifiedDocumentListChangedSpy.count(), 1);
 
449
        modifiedDocumentListChangedSpy.clear();
 
450
        QList<KUrl> lst = factory->modifiedDocumentList();
424
451
        QCOMPARE(lst.count(), 1);
425
452
        QCOMPARE(lst.first(), url);
 
453
        QCOMPARE(documentChangedSpy.count(), 1);
 
454
        args = documentChangedSpy.takeFirst();
 
455
        QCOMPARE(args.at(0).value<KUrl>(), url);
426
456
 
 
457
        // Save it under a new name
427
458
        KUrl destUrl = urlForTestOutputFile("modify.png");
428
459
        QVERIFY(doc->save(destUrl, "png"));
429
460
 
431
462
        // event loop
432
463
        QTest::qWait(100);
433
464
        QVERIFY(!doc->isModified());
434
 
        QCOMPARE(spy.count(), 2);
 
465
 
 
466
        QVERIFY(!factory->hasUrl(url));
 
467
        QVERIFY(factory->hasUrl(destUrl));
 
468
        QCOMPARE(modifiedDocumentListChangedSpy.count(), 1);
435
469
        QVERIFY(DocumentFactory::instance()->modifiedDocumentList().isEmpty());
 
470
 
 
471
        QCOMPARE(documentChangedSpy.count(), 2);
 
472
        KUrl::List modifiedUrls = KUrl::List() << url << destUrl;
 
473
        QVERIFY(modifiedUrls.contains(url));
 
474
        QVERIFY(modifiedUrls.contains(destUrl));
436
475
}
437
476
 
438
477
void DocumentTest::testMetaInfoJpeg() {
523
562
        KUrl url = urlForTestFile("orient6.jpg");
524
563
        Document::Ptr doc = DocumentFactory::instance()->load(url);
525
564
        QSignalSpy modifiedSpy(doc.data(), SIGNAL(modified(const KUrl&)));
526
 
        QSignalSpy savedSpy(doc.data(), SIGNAL(saved(const KUrl&)));
 
565
        QSignalSpy savedSpy(doc.data(), SIGNAL(saved(const KUrl&, const KUrl&)));
527
566
        doc->loadFullImage();
528
567
        doc->waitUntilLoaded();
529
568