From 42ee14c8f50138e9390bc5296fc55a4022a18f5e Mon Sep 17 00:00:00 2001 From: Veloman Yunkan Date: Mon, 21 Feb 2022 22:52:48 +0400 Subject: [PATCH] New unit-test LibraryOpdsImportTest.allInOne --- test/library.cpp | 68 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) diff --git a/test/library.cpp b/test/library.cpp index 1f0079b49..ab6ed2683 100644 --- a/test/library.cpp +++ b/test/library.cpp @@ -26,6 +26,8 @@ const char * sampleOpdsStream = R"( 00000000-0000-0000-0000-000000000000 Encyclopédie de la Tunisie + wikipedia_fr_tunisie_novid_2018-10 + unforgettable urn:uuid:0c45160e-f917-760a-9159-dfe3c53cdcdd /meta?name=favicon&content=wikipedia_fr_tunisie_novid_2018-10 2018-10-08T00:00::00:Z @@ -36,8 +38,13 @@ const char * sampleOpdsStream = R"( Wikipedia + + Wikipedia Publishing House + + 1100 + 172 Tania Louis @@ -224,6 +231,64 @@ const char sampleLibraryXML[] = R"( namespace { +TEST(LibraryOpdsImportTest, allInOne) +{ + kiwix::Library lib; + kiwix::Manager manager(&lib); + manager.readOpds(sampleOpdsStream, "library-opds-import.unittests.dev"); + + EXPECT_EQ(10U, lib.getBookCount(true, true)); + + { + const kiwix::Book& book1 = lib.getBookById("0c45160e-f917-760a-9159-dfe3c53cdcdd"); + + EXPECT_EQ(book1.getTitle(), "Encyclopédie de la Tunisie"); + EXPECT_EQ(book1.getName(), "wikipedia_fr_tunisie_novid_2018-10"); + EXPECT_EQ(book1.getFlavour(), "unforgettable"); + EXPECT_EQ(book1.getLanguage(), "fra"); + EXPECT_EQ(book1.getDate(), "2018-10-08"); + EXPECT_EQ(book1.getDescription(), "Le meilleur de Wikipédia sur la Tunisie"); + EXPECT_EQ(book1.getCreator(), "Wikipedia"); + EXPECT_EQ(book1.getPublisher(), "Wikipedia Publishing House"); + EXPECT_EQ(book1.getTags(), "wikipedia;novid;_ftindex"); + EXPECT_EQ(book1.getCategory(), ""); + EXPECT_EQ(book1.getUrl(), "http://download.kiwix.org/zim/wikipedia/wikipedia_fr_tunisie_novid_2018-10.zim.meta4"); + EXPECT_EQ(book1.getSize(), 90030080UL); + EXPECT_EQ(book1.getMediaCount(), 1100U); // Roman MC (MediaCount) is 1100 + EXPECT_EQ(book1.getArticleCount(), 172U); // Hex AC (ArticleCount) is 172 + + const auto illustration = book1.getIllustration(48); + EXPECT_EQ(illustration->width, 48U); + EXPECT_EQ(illustration->height, 48U); + EXPECT_EQ(illustration->mimeType, "image/png"); + EXPECT_EQ(illustration->url, "library-opds-import.unittests.dev/meta?name=favicon&content=wikipedia_fr_tunisie_novid_2018-10"); + } + + { + const kiwix::Book& book2 = lib.getBookById("0189d9be-2fd0-b4b6-7300-20fab0b5cdc8"); + EXPECT_EQ(book2.getTitle(), "TED talks - Business"); + EXPECT_EQ(book2.getName(), ""); + EXPECT_EQ(book2.getFlavour(), ""); + EXPECT_EQ(book2.getLanguage(), "eng"); + EXPECT_EQ(book2.getDate(), "2018-07-23"); + EXPECT_EQ(book2.getDescription(), "Ideas worth spreading"); + EXPECT_EQ(book2.getCreator(), "TED"); + EXPECT_EQ(book2.getPublisher(), ""); + EXPECT_EQ(book2.getTags(), ""); + EXPECT_EQ(book2.getCategory(), ""); + EXPECT_EQ(book2.getUrl(), "http://download.kiwix.org/zim/ted/ted_en_business_2018-07.zim.meta4"); + EXPECT_EQ(book2.getSize(), 8855827456UL); + EXPECT_EQ(book2.getMediaCount(), 0U); + EXPECT_EQ(book2.getArticleCount(), 0U); + + const auto illustration = book2.getIllustration(48); + EXPECT_EQ(illustration->width, 48U); + EXPECT_EQ(illustration->height, 48U); + EXPECT_EQ(illustration->mimeType, "image/png"); + EXPECT_EQ(illustration->url, "library-opds-import.unittests.dev/meta?name=favicon&content=ted_en_business_2018-07"); + } +} + class LibraryTest : public ::testing::Test { protected: typedef kiwix::Library::BookIdCollection BookIdCollection; @@ -292,7 +357,8 @@ TEST_F(LibraryTest, sanityCheck) EXPECT_EQ(lib.getBooksPublishers(), std::vector({ "", "Kiwix", - "Kiwix & Some Enthusiasts" + "Kiwix & Some Enthusiasts", + "Wikipedia Publishing House" })); }