From bff2dd2ef1d3a10858d85a47c5a7444256a39fa5 Mon Sep 17 00:00:00 2001 From: Luca Beltrame Date: Thu, 27 Aug 2015 19:36:49 +0200 Subject: [PATCH] Update unit tests to use XML as well. Danbooru and Konachan aren't passing just because the posts retrieved aren't the same. --- src/libdanbooru/autotests/donmai.xml | 63 +++++++++ src/libdanbooru/autotests/konachan.xml | 23 ++++ .../autotests/test_danbooru_post.cpp | 124 ++++++++++++++++++ .../autotests/test_danbooru_post.h | 2 + 4 files changed, 212 insertions(+) create mode 100644 src/libdanbooru/autotests/donmai.xml create mode 100644 src/libdanbooru/autotests/konachan.xml diff --git a/src/libdanbooru/autotests/donmai.xml b/src/libdanbooru/autotests/donmai.xml new file mode 100644 index 0000000..8e6a232 --- /dev/null +++ b/src/libdanbooru/autotests/donmai.xml @@ -0,0 +1,63 @@ + + + +2107611 +2015-08-27T09:34:16-04:00 +366860 +0 + +https://twitter.com/un9man/status/636889719113052160/photo/1 +0f9dbcbd1bad31fe266af9878422039f + +s +1000 +1524 +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 +false +0 +png + +false + +false + +16 +1 +1 +1 +907930 +false + + +0 +0 +false +false +false +19 +2015-08-27T09:34:16-04:00 +false + + +false +0 +gary25566 +true +oota_yuuichi + +bismarck_(kantai_collection) +kantai_collection +1girl bikini blonde_hair blue_eyes breasts hat +highres long_hair looking_at_viewer peaked_cap skirt solo striped +striped_bikini striped_swimsuit swimsuit +false +/data/0f9dbcbd1bad31fe266af9878422039f.png + +/data/sample/sample-0f9dbcbd1bad31fe266af9878422039f.jpg + +/data/preview/0f9dbcbd1bad31fe266af9878422039f.jpg + + diff --git a/src/libdanbooru/autotests/konachan.xml b/src/libdanbooru/autotests/konachan.xml new file mode 100644 index 0000000..019757e --- /dev/null +++ b/src/libdanbooru/autotests/konachan.xml @@ -0,0 +1,23 @@ + + + + diff --git a/src/libdanbooru/autotests/test_danbooru_post.cpp b/src/libdanbooru/autotests/test_danbooru_post.cpp index 9ccfd60..c06fcb6 100644 --- a/src/libdanbooru/autotests/test_danbooru_post.cpp +++ b/src/libdanbooru/autotests/test_danbooru_post.cpp @@ -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, 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("jsonFile"); + QTest::addColumn("apiType"); + QTest::addColumn("postId"); + QTest::addColumn("postWidth"); + QTest::addColumn("postHeight"); + QTest::addColumn("fileSize"); + QTest::addColumn>("postTags"); + QTest::addColumn("fileUrl"); + QTest::addColumn("thumbnailUrl"); + QTest::addColumn("sampleUrl"); + QTest::addColumn("rating"); + QTest::addColumn("boardUrl"); + + // Konachan.com / yande.re + QTest::newRow("konachan") << "konachan.xml" // jsonFile + << Danbooru::ApiType::KonachanDanbooru + << 205621 // id + << 1280 // width + << 720 // height + << 885610 // file_size + << QSet({"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({"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({"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) diff --git a/src/libdanbooru/autotests/test_danbooru_post.h b/src/libdanbooru/autotests/test_danbooru_post.h index 3a2dd88..152ee4e 100644 --- a/src/libdanbooru/autotests/test_danbooru_post.h +++ b/src/libdanbooru/autotests/test_danbooru_post.h @@ -35,6 +35,8 @@ private Q_SLOTS: void initTestCase(); void testPostLoading(); void testPostLoading_data(); + void testPostLoadingXml(); + void testPostLoadingXml_data(); };