Skip to content

Commit a2e6381

Browse files
committed
Construct the library different ways.
1 parent ddbf5a0 commit a2e6381

6 files changed

Lines changed: 82 additions & 29 deletions

File tree

lib/src/test/catalog.xml

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,24 @@
22
<id>00000000-0000-0000-0000-000000000000</id>
33
<entry>
44
<title>Test ZIM file</title>
5-
<id>urn:uuid:86c91e51-55bf-8882-464e-072aca37a3e8</id>
5+
<id>urn:uuid:e34f5109-ed0d-b93e-943d-06f7717c7340</id>
66
<icon>/meta?name=favicon&amp;content=small</icon>
77
<updated>2020-11-27:00::00:Z</updated>
8-
<language>en</language>
9-
<summary>This is a ZIM file used in libzim unit-tests</summary>
10-
<tags>unit;test</tags>
8+
<path>small.zim</path>
9+
<language>eng</language>
10+
<summary>Description</summary>
11+
<tags>_category:Category;_ftindex:yes;_ftindex:yes;_pictures:yes;_videos:yes;_details:yes</tags>
1112
<link type="text/html" href="/small" />
1213
<author>
13-
<name>Kiwix</name>
14+
<name>Creator</name>
1415
</author>
1516
<publisher>
1617
<name>Publisher</name>
1718
</publisher>
18-
<category>Super category</category>
19-
<link rel="http://opds-spec.org/acquisition/open-access" type="application/x-zim" href="http://localhost/small.zim" length="78982" />
19+
<category>Category</category>
20+
<articleCount>1</articleCount>
21+
<mediaCount>1</mediaCount>
22+
<link rel="http://opds-spec.org/acquisition/open-access" type="application/x-zim" href="http://localhost/small.zim" length="66560" />
2023
<link rel="http://opds-spec.org/image/thumbnail" type="image/png" href="/meta?name=favicon&amp;content=small" />
2124
</entry>
2225
</feed>

lib/src/test/create_test_zimfiles

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@ zimwriterfs -w main.html \
1313
-I favicon.png \
1414
-l eng \
1515
-t "Test ZIM file" \
16-
-d "N/A" \
17-
-L "Test File" \
18-
-c "N/A" \
19-
-p "N/A" \
16+
-d "Description" \
17+
-L "Long Description" \
18+
-c "Creator" \
19+
-p "Publisher" \
20+
--tags "_category:Category" \
2021
small_zimfile_data \
2122
small.zim \
2223
&& echo 'small.zim was successfully created' \

lib/src/test/library.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<library version="20110515">
2+
<book id="e34f5109-ed0d-b93e-943d-06f7717c7340" path="small.zim" title="Test ZIM file" description="Description" language="eng" creator="Creator" publisher="Publisher" name="Test" tags="_category:Category;_ftindex:yes;_ftindex:yes;_pictures:yes;_videos:yes;_details:yes" faviconMimeType="image/png" favicon="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" date="2023-06-21" url="http://localhost/small.zim" articleCount="1" mediaCount="1" size="65" />
3+
</library>

lib/src/test/small.zim

27 Bytes
Binary file not shown.

lib/src/test/small.zim.embedded

27 Bytes
Binary file not shown.

lib/src/test/test.java

Lines changed: 64 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ private void testArchive(TestArchive archive)
6060
assertEquals("main.html", mainPage.getItem(true).getPath());
6161

6262
// test zim file size
63-
assertEquals(66910, archive.getFilesize()); // The file size is in KiB
63+
assertEquals(66937, archive.getFilesize()); // The file size is in KiB
6464
// test zim file content
6565
byte[] mainData = getFileContent("small_zimfile_data/main.html");
6666
byte[] inZimMainData = archive.getEntryByPath("main.html").getItem(true).getData().getData();
@@ -86,7 +86,7 @@ private void testArchive(TestArchive archive)
8686
assertFalse(archive.isMultiPart());
8787
assertTrue(archive.hasNewNamespaceScheme());
8888
assertTrue(archive.hasChecksum());
89-
assertEquals("f4373bda1fdce141ba8e5c80baaf905d", archive.getChecksum());
89+
assertEquals("4a2709fddbee8c27db708c20b4952a06", archive.getChecksum());
9090
assertTrue(archive.hasTitleIndex());
9191
assertTrue(archive.hasFulltextIndex());
9292
assertTrue(archive.hasMainEntry());
@@ -97,7 +97,7 @@ private void testArchive(TestArchive archive)
9797
metaKeys,
9898
archive.getMetadataKeys()
9999
));
100-
assertEquals("c23a31c1-c357-9e82-3b43-f87aaf706d04", archive.getUuid());
100+
assertEquals("e34f5109-ed0d-b93e-943d-06f7717c7340", archive.getUuid());
101101
assertEquals(1, archive.getMediaCount());
102102
assertEquals(1, archive.getArticleCount());
103103
assertEquals(2, archive.getEntryCount());
@@ -205,49 +205,95 @@ private void testLibrary(TestLibrary lib)
205205
assertEquals(bookIds.length, 1);
206206
lib.filter(new Filter().local(true));
207207
assertTrue(Arrays.equals(lib.getBooksPublishers(), new String[]{"Publisher"}));
208-
assertTrue(Arrays.equals(lib.getBooksCreators(), new String[]{"Kiwix"}));
209-
assertTrue(Arrays.equals(lib.getBooksCategories(), new String[]{"Super category"}));
210-
assertTrue(Arrays.equals(lib.getBooksLanguages(), new String[]{"en"}));
208+
assertTrue(Arrays.equals(lib.getBooksCreators(), new String[]{"Creator"}));
209+
System.out.println(Arrays.toString(lib.getBooksCategories()));
210+
assertTrue(Arrays.equals(lib.getBooksCategories(), new String[]{"Category"}));
211+
assertTrue(Arrays.equals(lib.getBooksLanguages(), new String[]{"eng"}));
211212

212213

213214
// getArchiveById needs books with valid path. Which is not possible by definition if library is initialized by opds stream.
214215
//assertEquals("86c91e51-55bf-8882-464e-072aca37a3e8", lib.getArchiveById("86c91e51-55bf-8882-464e-072aca37a3e8").getUuid());
215216

216217
TestBook book = lib.getBookById(bookIds[0]);
217218
assertEquals(book.getTitle(), "Test ZIM file");
218-
assertEquals(book.getTags(), "unit;test");
219+
assertEquals(book.getTags(), "_category:Category;_ftindex:yes;_ftindex:yes;_pictures:yes;_videos:yes;_details:yes");
219220
assertEquals(book.getIllustration(48).width(), 48);
220-
assertEquals(book.getIllustration(48).url(), "http://localhost/meta?name=favicon&content=small");
221221
assertEquals(book.getUrl(), "http://localhost/small.zim");
222-
assertEquals(book.getPath(), "");
223-
assertEquals(book.getHumanReadableIdFromPath(), "");
224-
assertFalse(book.isPathValid());
225-
assertEquals(book.getDescription(), "This is a ZIM file used in libzim unit-tests");
226-
assertEquals(book.getCreator(), "Kiwix");
222+
assertEquals(book.getDescription(), "Description");
223+
assertEquals(book.getCreator(), "Creator");
227224
assertEquals(book.getPublisher(), "Publisher");
228225
assertEquals(book.getFlavour(), "");
229-
assertEquals(book.getCategory(), "Super category");
230-
assertEquals(book.getArticleCount(), 0);
231-
assertEquals(book.getMediaCount(), 0);
232-
assertEquals(book.getSize(), 78982);
226+
assertEquals(book.getCategory(), "Category");
227+
assertEquals(book.getArticleCount(), 1);
228+
assertEquals(book.getMediaCount(), 1);
229+
assertEquals(book.getSize(), 66560);
233230
Illustration[] illustrations = book.getIllustrations();
234231
assertEquals(1, illustrations.length);
235232

236233
assertEquals(book.getTagStr("video"), "");
234+
}
235+
236+
@Test
237+
public void testLibrarySimple() throws IOException {
238+
TestLibrary lib = new TestLibrary();
239+
TestManager manager = new TestManager(lib);
240+
manager.addBookFromPath("small.zim", "small.zim", "http://localhost/small.zim", true);
241+
testLibrary(lib);
242+
String[] bookIds = lib.getBooksIds();
243+
TestBook book = lib.getBookById(bookIds[0]);
244+
assertEquals(book.getIllustration(48).url(), "");
245+
assertEquals(book.getPath(), new File("small.zim").getAbsolutePath());
246+
assertEquals(book.getHumanReadableIdFromPath(), "small");
247+
assertTrue(book.isPathValid());
237248

238249
// remove book from library by id
239250
lib.removeBookById(bookIds[0]);
240251
bookIds = lib.getBooksIds();
241252
assertEquals(bookIds.length, 0);
242253
}
243254

255+
@Test
256+
public void testLibraryXml() throws IOException {
257+
TestLibrary lib = new TestLibrary();
258+
TestManager manager = new TestManager(lib);
259+
manager.readFile("library.xml");
260+
testLibrary(lib);
261+
String[] bookIds = lib.getBooksIds();
262+
TestBook book = lib.getBookById(bookIds[0]);
263+
assertEquals(book.getIllustration(48).url(), "");
264+
assertEquals(book.getPath(), new File("small.zim").getAbsolutePath());
265+
assertEquals(book.getHumanReadableIdFromPath(), "small");
266+
assertTrue(book.isPathValid());
267+
}
268+
269+
@Test
270+
public void testLibraryXmlContent() throws IOException {
271+
TestLibrary lib = new TestLibrary();
272+
TestManager manager = new TestManager(lib);
273+
String content = getTextFileContent("library.xml");
274+
manager.readXml(content, "library.xml");
275+
testLibrary(lib);
276+
String[] bookIds = lib.getBooksIds();
277+
TestBook book = lib.getBookById(bookIds[0]);
278+
assertEquals(book.getIllustration(48).url(), "");
279+
assertEquals(book.getPath(), new File("small.zim").getAbsolutePath());
280+
assertEquals(book.getHumanReadableIdFromPath(), "small");
281+
assertTrue(book.isPathValid());
282+
}
283+
244284
@Test
245285
public void testLibraryOPDS() throws IOException {
246286
TestLibrary lib = new TestLibrary();
247287
TestManager manager = new TestManager(lib);
248288
String content = getTextFileContent("catalog.xml");
249289
manager.readOpds(content, "http://localhost");
250290
testLibrary(lib);
291+
String[] bookIds = lib.getBooksIds();
292+
TestBook book = lib.getBookById(bookIds[0]);
293+
assertEquals(book.getIllustration(48).url(), "http://localhost/meta?name=favicon&content=small");
294+
assertEquals(book.getPath(), "");
295+
assertEquals(book.getHumanReadableIdFromPath(), "");
296+
assertFalse(book.isPathValid());
251297
}
252298

253299
@Test
@@ -322,7 +368,7 @@ public void testSearcher() throws Exception, ZimFileFormatException, JNIKiwixExc
322368
assertEquals(3, iterator.getWordCount());
323369
assertEquals(0, iterator.getFileIndex());
324370
assertEquals(-1, iterator.getSize());
325-
assertEquals("c23a31c1-c357-9e82-3b43-f87aaf706d04", iterator.getZimId());
371+
assertEquals("e34f5109-ed0d-b93e-943d-06f7717c7340", iterator.getZimId());
326372
TestEntry entry = iterator.next();
327373
assertEquals("main.html", entry.getPath());
328374

0 commit comments

Comments
 (0)