~elopio/gallery-app/revert_workaround-1302706-click_toolbar_button_failure

« back to all changes in this revision

Viewing changes to tests/unittests/mediaobjectfactory/tst_mediaobjectfactory.cpp

  • Committer: Leo Arias
  • Date: 2015-05-15 08:05:23 UTC
  • mfrom: (954.1.241 gallery-app)
  • Revision ID: leo.arias@canonical.com-20150515080523-i2of3vr8h7dioj59
Now the toolbar object is not needed at all.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
#include <QtTest/QtTest>
18
18
#include <QString>
 
19
#include <QDir>
 
20
#include <QTemporaryDir>
 
21
#include <QImage>
 
22
#include <QColor>
19
23
 
20
24
#include "media-object-factory.h"
21
25
 
42
46
    void readPhotoMetadata();
43
47
    void readVideoMetadata();
44
48
    void enableContentLoadFilter();
45
 
    void addMedia();
 
49
    void addPhoto();
 
50
    void addVideo();
46
51
 
47
52
private:
 
53
    MediaSource* wait_for_media();
48
54
    MediaTable *m_mediaTable;
49
 
    MediaObjectFactory *m_factory;
 
55
    MediaObjectFactoryWorker *m_factory;
50
56
    Resource *m_resource;
 
57
    QSignalSpy *m_spyMediaObjectCreated;
51
58
};
52
59
 
53
60
void tst_MediaObjectFactory::init()
54
61
{
55
62
    m_mediaTable = new MediaTable(0, 0);
56
 
    m_factory = new MediaObjectFactory(true, 0);
 
63
    m_factory = new MediaObjectFactoryWorker(0);
57
64
    m_factory->setMediaTable(m_mediaTable);
 
65
    m_spyMediaObjectCreated = new QSignalSpy(m_factory, SIGNAL(mediaObjectCreated(MediaSource*)));
58
66
}
59
67
 
60
68
void tst_MediaObjectFactory::cleanup()
68
76
void tst_MediaObjectFactory::create()
69
77
{
70
78
    // invalid file
71
 
    MediaSource *media = m_factory->create(QFileInfo("no_valid_file"), true, 0);
72
 
    QCOMPARE(media, (MediaSource*)0);
 
79
    m_factory->create("no_valid_file");
 
80
    QCOMPARE(wait_for_media(), (MediaSource*)0);
73
81
 
74
82
    // new file
75
 
    media = m_factory->create(QFileInfo("/some/photo.jpg"), true, 0);
76
 
    Photo *photo = qobject_cast<Photo*>(media);
 
83
    m_factory->create("/some/photo.jpg");
 
84
    Photo *photo = qobject_cast<Photo*>(wait_for_media());
77
85
    QVERIFY(photo != 0);
78
86
    QCOMPARE(photo->id(), (qint64)0);
79
87
    QCOMPARE(photo->exposureDateTime(), QDateTime(QDate(2013, 01, 01), QTime(11, 11, 11)));
80
88
    QCOMPARE(photo->orientation(), BOTTOM_LEFT_ORIGIN);
81
89
 
82
90
    // another new file
83
 
    media = m_factory->create(QFileInfo("/some/other_photo.jpg"), true, 0);
84
 
    photo = qobject_cast<Photo*>(media);
 
91
    m_factory->create("/some/other_photo.jpg");
 
92
    photo = qobject_cast<Photo*>(wait_for_media());
85
93
    QVERIFY(photo != 0);
86
94
    QCOMPARE(photo->id(), (qint64)1);
87
95
 
88
96
    // existing from DB
89
 
    media = m_factory->create(QFileInfo("/some/photo.jpg"), true, 0);
90
 
    photo = qobject_cast<Photo*>(media);
 
97
    m_factory->create("/some/photo.jpg");
 
98
    photo = qobject_cast<Photo*>(wait_for_media());
91
99
    QVERIFY(photo != 0);
92
100
    QCOMPARE(photo->id(), (qint64)0);
93
101
 
94
102
    // update DB from file
95
103
    setOrientationOfFirstRow(TOP_RIGHT_ORIGIN); // change the DB
96
104
 
97
 
    media = m_factory->create(QFileInfo("/some/photo.jpg"), true, 0);
98
 
    photo = qobject_cast<Photo*>(media);
 
105
    m_factory->create("/some/photo.jpg");
 
106
    photo = qobject_cast<Photo*>(wait_for_media());
99
107
    QVERIFY(photo != 0);
100
108
    QCOMPARE(photo->id(), (qint64)0);
101
109
    QCOMPARE(photo->orientation(), TOP_RIGHT_ORIGIN);
102
110
 
103
111
    // new video ...
104
 
    bool isDesktop = true;
105
 
    m_resource = new Resource(true, "", 0);
 
112
    m_resource = new Resource(true, "");
106
113
    m_resource->setVideoDirectories(QStringList("/video_path/"));
107
114
 
108
115
    // ... at desktop
109
 
    media = m_factory->create(QFileInfo("/not_video_path/video.ogv"), isDesktop, m_resource);
110
 
    Video *video = qobject_cast<Video*>(media);
 
116
    m_factory->create("/not_video_path/video.ogv");
 
117
    Video *video = qobject_cast<Video*>(wait_for_media());
111
118
    QVERIFY(video != 0);
112
 
    media = m_factory->create(QFileInfo("/video_path/video.ogv"), isDesktop, m_resource);
113
 
    video = qobject_cast<Video*>(media);
 
119
    m_factory->create("/video_path/video.ogv");
 
120
    video = qobject_cast<Video*>(wait_for_media());
114
121
    QVERIFY(video != 0);
115
122
 
116
123
    // ... at device
117
 
    media = m_factory->create(QFileInfo("/not_video_path/video.ogv"), !isDesktop, m_resource);
118
 
    video = qobject_cast<Video*>(media);
119
 
    QVERIFY(video == 0);
120
 
    media = m_factory->create(QFileInfo("/video_path/video.ogv"), !isDesktop, m_resource);
121
 
    video = qobject_cast<Video*>(media);
 
124
    m_factory->create("/not_video_path/video.ogv");
 
125
    video = qobject_cast<Video*>(wait_for_media());
 
126
    QVERIFY(video != 0);
 
127
    m_factory->create("/video_path/video.ogv");
 
128
    video = qobject_cast<Video*>(wait_for_media());
122
129
    QVERIFY(video != 0);
123
130
}
124
131
 
158
165
 
159
166
void tst_MediaObjectFactory::enableContentLoadFilter()
160
167
{
161
 
    MediaSource *media = m_factory->create(QFileInfo("/some/photo.jpg"), true, 0);
162
 
    QVERIFY(media != 0);
 
168
    m_factory->create("/some/photo.jpg");
 
169
    QVERIFY(wait_for_media() != (MediaSource*)0);
163
170
 
164
171
    m_factory->enableContentLoadFilter(MediaSource::Video);
165
172
 
166
 
    media = m_factory->create(QFileInfo("/some/photo.jpg"), true, 0);
167
 
    QVERIFY(media == 0);
 
173
    m_factory->create("/some/photo.jpg");
 
174
    QCOMPARE(wait_for_media(), (MediaSource*)0);
168
175
}
169
176
 
170
 
void tst_MediaObjectFactory::addMedia()
 
177
void tst_MediaObjectFactory::addPhoto()
171
178
{
 
179
    QTemporaryDir *tmpDir = new QTemporaryDir();
 
180
    QDir *dir = new QDir(tmpDir->path());
 
181
    dir->mkpath("sample");
 
182
 
 
183
    // Create sample image
 
184
    QImage *sampleImage = new QImage(400, 600, QImage::Format_RGB32);
 
185
    sampleImage->fill(QColor(Qt::red));
 
186
    sampleImage->save(tmpDir->path() + "/sample/sample.jpg", "JPG"); 
 
187
 
172
188
    qint64 id = 123;
173
 
    QString filename("/some/photo.jpg");
 
189
    QString filename(tmpDir->path() + "/sample/sample.jpg");
174
190
    QSize size(320, 200);
175
191
    QDateTime timestamp(QDate(2013, 02, 03), QTime(12, 12, 12));
176
192
    QDateTime exposureTime(QDate(2013, 03, 04), QTime(1, 2, 3));
178
194
    qint64 filesize = 2048;
179
195
 
180
196
    m_factory->addMedia(id, filename, size, timestamp,
181
 
                                             exposureTime, originalOrientation,
182
 
                                             filesize);
 
197
                        exposureTime, originalOrientation, filesize);
183
198
 
184
 
    QCOMPARE(m_factory->m_mediasFromDB.size(), 1);
 
199
    QCOMPARE(m_factory->m_mediaFromDB.size(), 1);
 
200
    
185
201
    QSet<DataObject*>::iterator it;
186
 
    it = m_factory->m_mediasFromDB.begin();
 
202
    it = m_factory->m_mediaFromDB.begin();
187
203
    DataObject *obj = *it;
188
204
    Photo *photo = qobject_cast<Photo*>(obj);
189
205
    QVERIFY(photo != 0);
 
206
 
190
207
    QCOMPARE(photo->id(), id);
191
208
    QCOMPARE(photo->path().toLocalFile(), filename);
192
209
    QCOMPARE(photo->size(), size);
195
212
    QCOMPARE(photo->orientation(), originalOrientation);
196
213
}
197
214
 
 
215
void tst_MediaObjectFactory::addVideo()
 
216
{
 
217
    QTemporaryDir *tmpDir = new QTemporaryDir();
 
218
    QDir *dir = new QDir(tmpDir->path());
 
219
    dir->mkpath("sample");
 
220
 
 
221
    // Create sample video 
 
222
    QFile file(tmpDir->path() + "/sample/sample.mp4");
 
223
    file.open(QIODevice::ReadWrite);
 
224
    file.close();
 
225
 
 
226
    qint64 id = 123;
 
227
    QString filename(tmpDir->path() + "/sample/sample.mp4");
 
228
    QSize size(320, 200);
 
229
    QDateTime timestamp(QDate(2013, 02, 03), QTime(12, 12, 12));
 
230
    QDateTime exposureTime(QDate(2013, 03, 04), QTime(1, 2, 3));
 
231
    Orientation originalOrientation(BOTTOM_RIGHT_ORIGIN);
 
232
    qint64 filesize = 2048;
 
233
 
 
234
    m_factory->addMedia(id, filename, size, timestamp,
 
235
                        exposureTime, originalOrientation, filesize);
 
236
 
 
237
    QCOMPARE(m_factory->m_mediaFromDB.size(), 1);
 
238
    
 
239
    QSet<DataObject*>::iterator it;
 
240
    it = m_factory->m_mediaFromDB.begin();
 
241
    DataObject *obj = *it;
 
242
    Video *video = qobject_cast<Video*>(obj);
 
243
    QVERIFY(video != 0);
 
244
 
 
245
    QCOMPARE(video->id(), id);
 
246
    QCOMPARE(video->path().toLocalFile(), filename);
 
247
    QCOMPARE(video->size(), size);
 
248
 
 
249
    exposureTime.setTimeSpec(Qt::UTC);
 
250
    QCOMPARE(video->exposureDateTime(), exposureTime.toLocalTime());
 
251
}
 
252
 
 
253
MediaSource* tst_MediaObjectFactory::wait_for_media()
 
254
{
 
255
    if (m_spyMediaObjectCreated->isEmpty())
 
256
        return NULL;
 
257
 
 
258
    if (m_spyMediaObjectCreated->count() != 1)
 
259
        return NULL;
 
260
 
 
261
    QList<QVariant> args = m_spyMediaObjectCreated->takeFirst();
 
262
    return args.at(0).value<MediaSource*>();;
 
263
}
 
264
 
198
265
QTEST_MAIN(tst_MediaObjectFactory);
199
266
 
200
267
#include "tst_mediaobjectfactory.moc"