File: itemimagetests.cpp

package info (click to toggle)
copyq 13.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 12,964 kB
  • sloc: cpp: 63,306; sh: 992; xml: 452; python: 293; ruby: 152; makefile: 27; javascript: 25
file content (112 lines) | stat: -rw-r--r-- 3,416 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
// SPDX-License-Identifier: GPL-3.0-or-later

#include "itemimagetests.h"

#include "tests/test_utils.h"

#include <QBuffer>
#include <QImageReader>
#include <QImageWriter>
#include <QImage>

ItemImageTests::ItemImageTests(const TestInterfacePtr &test, QObject *parent)
    : QObject(parent)
    , m_test(test)
{
}

void ItemImageTests::initTestCase()
{
    TEST(m_test->initTestCase());
}

void ItemImageTests::cleanupTestCase()
{
    TEST(m_test->cleanupTestCase());
}

void ItemImageTests::init()
{
    TEST(m_test->init());
}

void ItemImageTests::cleanup()
{
    TEST( m_test->cleanup() );
}

void ItemImageTests::supportedFormats()
{
    const auto supportedRead = QImageReader::supportedImageFormats();
    QVERIFY(supportedRead.contains("png"));
    QVERIFY(supportedRead.contains("bmp"));

#if defined(Q_OS_WIN) || defined(Q_OS_MAC)
    QVERIFY(supportedRead.contains("gif"));
    QVERIFY(supportedRead.contains("webp"));
#endif

    const auto supportedWrite = QImageWriter::supportedImageFormats();
    QVERIFY(supportedWrite.contains("png"));
    QVERIFY(supportedWrite.contains("bmp"));
}

void ItemImageTests::savePng()
{
    QImage image(":images/icon");
    QVERIFY(!image.isNull());
    image = image.scaled(QSize(16, 16));

    QByteArray data;
    QBuffer buffer(&data);
    buffer.open(QBuffer::ReadWrite);

    QVERIFY(image.save(&buffer, "PNG"));
    TEST( m_test->setClipboard("TEST") );
    WAIT_ON_OUTPUT("read(0)", "TEST");
    TEST( m_test->setClipboard(data, "image/png") );
    WAIT_ON_OUTPUT("read('image/png', 0).length > 0", "true\n");
}

void ItemImageTests::saveBmp()
{
    QImage image(":images/icon");
    QVERIFY(!image.isNull());
    image = image.scaled(QSize(16, 16));

    QByteArray data;
    QBuffer buffer(&data);
    buffer.open(QBuffer::ReadWrite);

    QVERIFY(image.save(&buffer, "BMP"));
    TEST( m_test->setClipboard("TEST") );
    WAIT_ON_OUTPUT("read(0)", "TEST");
    TEST( m_test->setClipboard(data, "image/bmp") );
    WAIT_ON_OUTPUT("read('image/png', 0).length > 0", "true\n");
}

void ItemImageTests::saveGif()
{
    if ( !QImageReader::supportedImageFormats().contains("gif") )
        SKIP("GIF image format is unsopported on this platform");

    const auto data = QByteArray::fromBase64(
        "R0lGODlhCAAIAPQAAAAAAE5WUURsU0ZuVVxkX3Jycnx8fFKCZFyRcFyScF6Ucl+Wc1+WdGmLdmuMeGGadmqqgmurg5OUlJubm56dnaGhobW1tb2+vgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAAIf8LSW1hZ2VNYWdpY2sNZ2FtbWE9MC40NTQ1NQAsAAAAAAgACAAABSYgAAwiKSZLkjCJ+AhRJDzikTTOcohAIF0EHmBSsVCEhkLBIGwCQgA7");
    TEST( m_test->setClipboard("TEST") );
    WAIT_ON_OUTPUT("read(0)", "TEST");
    TEST( m_test->setClipboard(data, "image/gif") );
    WAIT_ON_OUTPUT("read('image/png', 0).length > 0", "true\n");
}

void ItemImageTests::saveWebp()
{
    if ( !QImageReader::supportedImageFormats().contains("webp") )
        SKIP("WEBP image format is unsopported on this platform");

    const auto data = QByteArray::fromBase64(
        "UklGRrgAAABXRUJQVlA4WAoAAAAQAAAABwAABwAAQUxQSEEAAAAACFmTUFCTWQhN3url5ereTXLuwPn5wO5yLrvx/v7xuy4AIbD//7AhAAARw/z8wxEAAA2vqKivDAAAAEc2NkcAAABWUDggUAAAAPABAJ0BKggACAACADQljAJ0AQ8M/qJ2gAD+3i3bP+bdQx6F+ZyiDZNsPKvgXJjteWOHwsl4XY+Utm/aW5R74XTu3MMrnj1KVx5aDzswFkAA");
    TEST( m_test->setClipboard("TEST") );
    WAIT_ON_OUTPUT("read(0)", "TEST");
    TEST( m_test->setClipboard(data, "image/webp") );
    WAIT_ON_OUTPUT("read('image/png', 0).length > 0", "true\n");
}