Update unit tests to use XML as well.

Danbooru and Konachan aren't passing just because the posts retrieved
aren't the same.
This commit is contained in:
Luca Beltrame 2015-08-27 19:36:49 +02:00
parent dc6236f00c
commit bff2dd2ef1
4 changed files with 212 additions and 0 deletions

View file

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<posts type="array">
<post>
<id type="integer">2107611</id>
<created-at type="dateTime">2015-08-27T09:34:16-04:00</created-at>
<uploader-id type="integer">366860</uploader-id>
<score type="integer">0</score>
<source>
https://twitter.com/un9man/status/636889719113052160/photo/1</source>
<md5>0f9dbcbd1bad31fe266af9878422039f</md5>
<last-comment-bumped-at type="dateTime" nil="true" />
<rating>s</rating>
<image-width type="integer">1000</image-width>
<image-height type="integer">1524</image-height>
<tag-string>1girl bikini bismarck_(kantai_collection) blonde_hair
blue_eyes breasts hat highres kantai_collection long_hair
looking_at_viewer oota_yuuichi peaked_cap skirt solo striped
striped_bikini striped_swimsuit swimsuit</tag-string>
<is-note-locked type="boolean">false</is-note-locked>
<fav-count type="integer">0</fav-count>
<file-ext>png</file-ext>
<last-noted-at type="dateTime" nil="true" />
<is-rating-locked type="boolean">false</is-rating-locked>
<parent-id type="integer" nil="true" />
<has-children type="boolean">false</has-children>
<approver-id type="integer" nil="true" />
<tag-count-general type="integer">16</tag-count-general>
<tag-count-artist type="integer">1</tag-count-artist>
<tag-count-character type="integer">1</tag-count-character>
<tag-count-copyright type="integer">1</tag-count-copyright>
<file-size type="integer">907930</file-size>
<is-status-locked type="boolean">false</is-status-locked>
<fav-string></fav-string>
<pool-string></pool-string>
<up-score type="integer">0</up-score>
<down-score type="integer">0</down-score>
<is-pending type="boolean">false</is-pending>
<is-flagged type="boolean">false</is-flagged>
<is-deleted type="boolean">false</is-deleted>
<tag-count type="integer">19</tag-count>
<updated-at type="dateTime">2015-08-27T09:34:16-04:00</updated-at>
<is-banned type="boolean">false</is-banned>
<pixiv-id type="integer" nil="true" />
<last-commented-at type="dateTime" nil="true" />
<has-active-children type="boolean">false</has-active-children>
<bit-flags type="integer">0</bit-flags>
<uploader-name>gary25566</uploader-name>
<has-large type="boolean">true</has-large>
<tag-string-artist>oota_yuuichi</tag-string-artist>
<tag-string-character>
bismarck_(kantai_collection)</tag-string-character>
<tag-string-copyright>kantai_collection</tag-string-copyright>
<tag-string-general>1girl bikini blonde_hair blue_eyes breasts hat
highres long_hair looking_at_viewer peaked_cap skirt solo striped
striped_bikini striped_swimsuit swimsuit</tag-string-general>
<has-visible-children type="boolean">false</has-visible-children>
<file-url>/data/0f9dbcbd1bad31fe266af9878422039f.png</file-url>
<large-file-url>
/data/sample/sample-0f9dbcbd1bad31fe266af9878422039f.jpg</large-file-url>
<preview-file-url>
/data/preview/0f9dbcbd1bad31fe266af9878422039f.jpg</preview-file-url>
</post>
</posts>

View file

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<posts count="165244" offset="0">
<post actual_preview_height="225" actual_preview_width="300"
author="Flandre93" change="907837" created_at="1440681143"
creator_id="80078" file_size="815082"
file_url="http://konachan.net/image/ef374c49e410b125c5a8d48c692c2a60/Konachan.com%20-%20205776%20bloomers%20gym_uniform%20lemon_tea%20purple_eyes%20purple_hair%20short_hair%20socks%20sport.jpg"
frames="" frames_pending="" frames_pending_string=""
frames_string="" has_children="false" height="900" id="205776"
is_held="false" is_shown_in_index="true" jpeg_file_size="0"
jpeg_height="900"
jpeg_url="http://konachan.net/image/ef374c49e410b125c5a8d48c692c2a60/Konachan.com%20-%20205776%20bloomers%20gym_uniform%20lemon_tea%20purple_eyes%20purple_hair%20short_hair%20socks%20sport.jpg"
jpeg_width="1200" md5="ef374c49e410b125c5a8d48c692c2a60"
preview_height="113"
preview_url="http://konachan.net/data/preview/ef/37/ef374c49e410b125c5a8d48c692c2a60.jpg"
preview_width="150" rating="s" sample_file_size="0"
sample_height="900"
sample_url="http://konachan.net/image/ef374c49e410b125c5a8d48c692c2a60/Konachan.com%20-%20205776%20bloomers%20gym_uniform%20lemon_tea%20purple_eyes%20purple_hair%20short_hair%20socks%20sport.jpg"
sample_width="1200" score="4"
source="http://i4.pixiv.net/img-original/img/2015/08/27/21/32/49/52219795_p0.jpg"
status="active"
tags="bloomers gym_uniform lemon_tea purple_eyes purple_hair short_hair socks sport"
width="1200" />
</posts>

View file

@ -79,6 +79,54 @@ void TestDanbooruPost::testPostLoading()
}
void TestDanbooruPost::testPostLoadingXml()
{
QFETCH(QString, jsonFile);
auto fileName = QFINDTESTDATA(jsonFile);
QFile file;
file.setFileName(fileName);
file.open(QIODevice::ReadOnly | QIODevice::Text);
bool ok;
QByteArray data = file.readAll();
QFETCH(Danbooru::ApiType, apiType);
auto contents = Danbooru::parseDanbooruResult(data, "post", &ok, apiType).at(0).toMap();
qDebug() << Danbooru::parseDanbooruResult(data, "post", &ok, apiType).length();
if (!ok) {
QFAIL("XML file failed to load");
}
QFETCH(QUrl, boardUrl);
auto post = new Danbooru::DanbooruPost(contents, apiType);
Danbooru::fixPostUrl(post, boardUrl);
QFETCH(int, postId);
QFETCH(int, postWidth);
QFETCH(int, postHeight);
QFETCH(int, fileSize);
QFETCH(QSet<QString>, postTags);
QFETCH(QUrl, fileUrl);
QFETCH(QUrl, thumbnailUrl);
QFETCH(QUrl, sampleUrl);
QFETCH(Danbooru::DanbooruPost::Rating, rating);
QCOMPARE(post->id(), postId);
QCOMPARE(post->width(), postWidth);
QCOMPARE(post->height(), postHeight);
QCOMPARE(post->size(), fileSize);
QCOMPARE(post->tags(), postTags);
QCOMPARE(post->fileUrl(), fileUrl);
QCOMPARE(post->thumbnailUrl(), thumbnailUrl);
QCOMPARE(post->sampleUrl(), sampleUrl);
QCOMPARE(post->rating(), rating);
QCOMPARE(post->pixmap().isNull(), true);
}
void TestDanbooruPost::testPostLoading_data()
{
//TODO: Add API type
@ -132,6 +180,82 @@ void TestDanbooruPost::testPostLoading_data()
// Gelbooru
}
void TestDanbooruPost::testPostLoadingXml_data()
{
//TODO: Add API type
QTest::addColumn<QString>("jsonFile");
QTest::addColumn<Danbooru::ApiType>("apiType");
QTest::addColumn<int>("postId");
QTest::addColumn<int>("postWidth");
QTest::addColumn<int>("postHeight");
QTest::addColumn<int>("fileSize");
QTest::addColumn<QSet< QString >>("postTags");
QTest::addColumn<QUrl>("fileUrl");
QTest::addColumn<QUrl>("thumbnailUrl");
QTest::addColumn<QUrl>("sampleUrl");
QTest::addColumn<Danbooru::DanbooruPost::Rating>("rating");
QTest::addColumn<QUrl>("boardUrl");
// Konachan.com / yande.re
QTest::newRow("konachan") << "konachan.xml" // jsonFile
<< Danbooru::ApiType::KonachanDanbooru
<< 205621 // id
<< 1280 // width
<< 720 // height
<< 885610 // file_size
<< QSet<QString>({"azuki_(sayori)", "coconut_(sayori)", "game_cg", "nekopara",
"sayori"}) // tags
<< QUrl("http://konachan.net/image/eb36c568af4f4e4ea2f59eda7d8c802d/Konachan.com%20-%20205621%20azuki_%28sayori%29%20coconut_%28sayori%29%20game_cg%20nekopara%20sayori.png")
<< QUrl("http://konachan.net/data/preview/eb/36/eb36c568af4f4e4ea2f59eda7d8c802d.jpg")
<< QUrl("http://konachan.net/jpeg/eb36c568af4f4e4ea2f59eda7d8c802d/Konachan.com%20-%20205621%20azuki_%28sayori%29%20coconut_%28sayori%29%20game_cg%20nekopara%20sayori.jpg")
<< Danbooru::DanbooruPost::Safe
<< QUrl("http://konachan.com");
// Danbooru
QTest::newRow("danbooru") << "donmai.xml"
<< Danbooru::ApiType::OriginalDanbooru
<< 2106872
<< 1200
<< 993
<< 514370
<< QSet<QString>({"1girl", "all_fours", "bare_legs",
"barefoot", "brown_eyes", "brown_hair", "chain",
"collar", "hat", "hecatia_lapislazuli", "long_hair",
"looking_at_viewer", "off_shoulder",
"shirt", "skirt", "solo", "touhou",
"uranaishi_(miraura)" })
<< QUrl("http://danbooru.donmai.us/data/7ee70315eba5ea4fbda7cd6011c8d833.jpg")
<< QUrl("http://danbooru.donmai.us/data/preview/7ee70315eba5ea4fbda7cd6011c8d833.jpg")
<< QUrl("http://danbooru.donmai.us/data/sample/sample-7ee70315eba5ea4fbda7cd6011c8d833.jpg")
<< Danbooru::DanbooruPost::Safe
<< QUrl("http://danbooru.donmai.us");
// Gelbooru
QTest::newRow("gelbooru") << "gelbooru.xml"
<< Danbooru::ApiType::Gelbooru
<< 2825488
<< 2483
<< 3500
<< 0
<< QSet<QString>({"2girls", "absurdres", "ahoge", "artist_request", "bikini",
"blonde_hair", "blush", "braid", "building", "cameltoe",
"character_request", "city", "cloud", "cover",
"cover_page", "eating", "flat_chest", "food",
"hair_intakes", "highres", "ice_cream", "ice_cream_cone",
"leaning_forward", "leg_lift", "licking", "long_hair",
"looking_at_viewer", "multiple_girls", "navel", "open_mouth",
"outdoors", "red_eyes", "ribbon", "sandals", "school_swimsuit",
"side-tie_bikini", "silver_hair", "sky", "skyscraper",
"smile", "swimsuit", "thigh_gap", "tongue", "twin_braids",
"twintails", "two_side_up", "very_long_hair"})
<< QUrl("http://gelbooru.com/images/92/ba/92ba4abfcb084ee49c0d3c1a08bcc3bf.jpg")
<< QUrl("http://gelbooru.com/thumbnails/92/ba/thumbnail_92ba4abfcb084ee49c0d3c1a08bcc3bf.jpg")
<< QUrl("http://gelbooru.com/samples/92/ba/sample_92ba4abfcb084ee49c0d3c1a08bcc3bf.jpg")
<< Danbooru::DanbooruPost::Safe
<< QUrl("http://gelbooru.com");
}
QTEST_MAIN(TestDanbooruPost)

View file

@ -35,6 +35,8 @@ private Q_SLOTS:
void initTestCase();
void testPostLoading();
void testPostLoading_data();
void testPostLoadingXml();
void testPostLoadingXml_data();
};