void ut_scale::testScaleTiled()
{
    QuillImageFilter *filter =
        QuillImageFilterFactory::createImageFilter("org.maemo.scale");

    QVERIFY(filter->setOption(QuillImageFilter::SizeAfter, QSize(4, 1)));

    QCOMPARE(filter->newFullImageSize(QSize(8, 2)), QSize(4, 1));
    QCOMPARE(filter->newFullImageSize(QSize(4, 4)), QSize(4, 1));

    // Rounded down
    QCOMPARE(filter->newArea(QSize(8, 2), QRect(2, 0, 3, 2)),
             QRect(1, 0, 1, 1));

    QImage image = Unittests::generatePaletteImage();

    QuillImage image1 = image.copy(0, 0, 3, 2);
    image1.setFullImageSize(QSize(8, 2));
    image1.setArea(QRect(0, 0, 3, 2));

    QuillImage resultImage1 = filter->apply(image1);
    QCOMPARE(resultImage1.area(), QRect(0, 0, 1, 1));
    QCOMPARE(resultImage1.fullImageSize(), QSize(4, 1));
    QCOMPARE((QImage)resultImage1, image1.scaled(QSize(1, 1),
                                                 Qt::IgnoreAspectRatio,
                                                 Qt::SmoothTransformation));

    QuillImage image2 = image.copy(3, 0, 3, 2);
    image2.setFullImageSize(QSize(8, 2));
    image2.setArea(QRect(3, 0, 3, 2));

    QuillImage resultImage2 = filter->apply(image2);
    QCOMPARE(resultImage2.area(), QRect(1, 0, 2, 1));
    QCOMPARE(resultImage2.fullImageSize(), QSize(4, 1));
    QCOMPARE((QImage)resultImage2, image2.scaled(QSize(2, 1),
                                                 Qt::IgnoreAspectRatio,
                                                 Qt::SmoothTransformation));

    QuillImage image3 = image.copy(6, 0, 2, 2);
    image3.setFullImageSize(QSize(8, 2));
    image3.setArea(QRect(6, 0, 2, 2));

    QuillImage resultImage3 = filter->apply(image3);
    QCOMPARE(resultImage3.area(), QRect(3, 0, 1, 1));
    QCOMPARE(resultImage3.fullImageSize(), QSize(4, 1));
    QCOMPARE((QImage)resultImage3, image3.scaled(QSize(1, 1),
                                                 Qt::IgnoreAspectRatio,
                                                 Qt::SmoothTransformation));

    delete filter;
}