317
317
QCOMPARE(doc1.data(), doc2.data());
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();
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);
329
334
QVERIFY2(doc->loadingState() == Document::Loaded,
330
335
"Document is supposed to finish loading before saving"
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);
333
344
QImage image("result.png", "png");
334
345
QCOMPARE(doc->image(), image);
347
QVERIFY(!DocumentFactory::instance()->hasUrl(url));
348
QVERIFY(DocumentFactory::instance()->hasUrl(destUrl));
350
QCOMPARE(modifiedDocumentListChangedSpy.count(), 0); // No changes were made
352
QCOMPARE(documentChangedSpy.count(), 1);
353
args = documentChangedSpy.takeFirst();
354
QCOMPARE(args.at(0).value<KUrl>(), destUrl);
337
357
void DocumentTest::testLosslessSave() {
396
416
QCOMPARE(image1, image2);
399
void DocumentTest::testModify() {
419
void DocumentTest::testModifyAndSaveAs() {
400
421
class TestOperation : public AbstractImageOperation {
405
426
document()->editor()->setImage(image);
408
QSignalSpy spy(DocumentFactory::instance(), SIGNAL(modifiedDocumentListChanged()));
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);
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&)));
412
437
doc->loadFullImage();
413
438
doc->waitUntilLoaded();
414
439
QVERIFY(!doc->isModified());
415
QCOMPARE(spy.count(), 0);
440
QCOMPARE(modifiedDocumentListChangedSpy.count(), 0);
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);
457
// Save it under a new name
427
458
KUrl destUrl = urlForTestOutputFile("modify.png");
428
459
QVERIFY(doc->save(destUrl, "png"));
432
463
QTest::qWait(100);
433
464
QVERIFY(!doc->isModified());
434
QCOMPARE(spy.count(), 2);
466
QVERIFY(!factory->hasUrl(url));
467
QVERIFY(factory->hasUrl(destUrl));
468
QCOMPARE(modifiedDocumentListChangedSpy.count(), 1);
435
469
QVERIFY(DocumentFactory::instance()->modifiedDocumentList().isEmpty());
471
QCOMPARE(documentChangedSpy.count(), 2);
472
KUrl::List modifiedUrls = KUrl::List() << url << destUrl;
473
QVERIFY(modifiedUrls.contains(url));
474
QVERIFY(modifiedUrls.contains(destUrl));
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();