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();
};