From d70a27644bfc75473cb05dd21db16f57f946eecd Mon Sep 17 00:00:00 2001 From: Matthieu Gautier Date: Thu, 9 Nov 2023 14:35:32 +0100 Subject: [PATCH] Add a test on Illustration data coming from book. --- .../org/kiwix/test/libkiwix/TestBook.java | 7 +-- .../kiwix/test/libkiwix/TestIllustration.java | 16 +++++++ lib/src/test/test.java | 44 ++++++++++++++++--- 3 files changed, 58 insertions(+), 9 deletions(-) create mode 100644 lib/src/test/org/kiwix/test/libkiwix/TestIllustration.java diff --git a/lib/src/test/org/kiwix/test/libkiwix/TestBook.java b/lib/src/test/org/kiwix/test/libkiwix/TestBook.java index 7d15d9a..32deb0c 100644 --- a/lib/src/test/org/kiwix/test/libkiwix/TestBook.java +++ b/lib/src/test/org/kiwix/test/libkiwix/TestBook.java @@ -2,8 +2,9 @@ package org.kiwix.test.libkiwix; import org.kiwix.libkiwix.Book; -import org.kiwix.libkiwix.Illustration; +import org.kiwix.test.libkiwix.TestIllustration; import org.kiwix.test.libzim.TestArchive; +import java.util.stream.Stream; public class TestBook { @@ -35,6 +36,6 @@ public class TestBook public long getMediaCount() { return inner.getMediaCount(); } public long getSize() { return inner.getSize(); } - public Illustration[] getIllustrations() { return inner.getIllustrations(); } - public Illustration getIllustration(int size) { return inner.getIllustration(size); } + public TestIllustration[] getIllustrations() { return Stream.of(inner.getIllustrations()).map(i -> new TestIllustration(i)).toArray(TestIllustration[]::new); } + public TestIllustration getIllustration(int size) { return new TestIllustration(inner.getIllustration(size)); } } diff --git a/lib/src/test/org/kiwix/test/libkiwix/TestIllustration.java b/lib/src/test/org/kiwix/test/libkiwix/TestIllustration.java new file mode 100644 index 0000000..155b9e5 --- /dev/null +++ b/lib/src/test/org/kiwix/test/libkiwix/TestIllustration.java @@ -0,0 +1,16 @@ + +package org.kiwix.test.libkiwix; + +import org.kiwix.libkiwix.Illustration; + +public class TestIllustration +{ + private Illustration inner; + public TestIllustration(Illustration _inner) { inner = _inner; } + + public int width() { return inner.width(); } + public int height() { return inner.height(); } + public String mimeType() { return inner.mimeType(); } + public String url() { return inner.url(); } + public byte[] getData() { return inner.getData(); } +} diff --git a/lib/src/test/test.java b/lib/src/test/test.java index ba419b0..1044946 100644 --- a/lib/src/test/test.java +++ b/lib/src/test/test.java @@ -303,7 +303,7 @@ private void testLibrary(TestLibrary lib) TestBook book = lib.getBookById(bookIds[0]); assertEquals(book.getTitle(), "Test ZIM file"); assertEquals(book.getTags(), "_category:Category;_ftindex:yes;_ftindex:yes;_pictures:yes;_videos:yes;_details:yes"); - assertEquals(book.getIllustration(48).width(), 48); + assertEquals(book.getUrl(), "http://localhost/small.zim"); assertEquals(book.getDescription(), "Description"); assertEquals(book.getCreator(), "Creator"); @@ -313,7 +313,7 @@ private void testLibrary(TestLibrary lib) assertEquals(book.getArticleCount(), 1); assertEquals(book.getMediaCount(), 1); assertEquals(book.getSize(), 66560); - Illustration[] illustrations = book.getIllustrations(); + TestIllustration[] illustrations = book.getIllustrations(); assertEquals(1, illustrations.length); assertEquals(book.getTagStr("video"), ""); @@ -328,7 +328,15 @@ public void testLibrarySimple() throws IOException { testLibrary(lib); String[] bookIds = lib.getBooksIds(); TestBook book = lib.getBookById(bookIds[0]); - assertEquals(book.getIllustration(48).url(), ""); + + TestIllustration illustration = book.getIllustration(48); + assertEquals(illustration.width(), 48); + assertEquals(illustration.height(), 48); + assertEquals(illustration.mimeType(), "image/png"); + assertEquals(illustration.url(), ""); + byte[] faviconData = getFileContent("small_zimfile_data/favicon.png"); + assertTrue(Arrays.equals(faviconData, illustration.getData())); + assertEquals(book.getPath(), new File("small.zim").getAbsolutePath()); assertEquals(book.getHumanReadableIdFromPath(), "small"); assertTrue(book.isPathValid()); @@ -351,7 +359,15 @@ public void testLibraryXml() throws IOException { testLibrary(lib); String[] bookIds = lib.getBooksIds(); TestBook book = lib.getBookById(bookIds[0]); - assertEquals(book.getIllustration(48).url(), ""); + + TestIllustration illustration = book.getIllustration(48); + assertEquals(illustration.width(), 48); + assertEquals(illustration.height(), 48); + assertEquals(illustration.mimeType(), "image/png"); + assertEquals(illustration.url(), ""); + byte[] faviconData = getFileContent("small_zimfile_data/favicon.png"); + assertTrue(Arrays.equals(faviconData, illustration.getData())); + assertEquals(book.getPath(), new File("small.zim").getAbsolutePath()); assertEquals(book.getHumanReadableIdFromPath(), "small"); assertTrue(book.isPathValid()); @@ -370,7 +386,15 @@ public void testLibraryXmlContent() throws IOException { testLibrary(lib); String[] bookIds = lib.getBooksIds(); TestBook book = lib.getBookById(bookIds[0]); - assertEquals(book.getIllustration(48).url(), ""); + + TestIllustration illustration = book.getIllustration(48); + assertEquals(illustration.width(), 48); + assertEquals(illustration.height(), 48); + assertEquals(illustration.mimeType(), "image/png"); + assertEquals(illustration.url(), ""); + byte[] faviconData = getFileContent("small_zimfile_data/favicon.png"); + assertTrue(Arrays.equals(faviconData, illustration.getData())); + assertEquals(book.getPath(), new File("small.zim").getAbsolutePath()); assertEquals(book.getHumanReadableIdFromPath(), "small"); assertTrue(book.isPathValid()); @@ -389,7 +413,15 @@ public void testLibraryOPDS() throws IOException { testLibrary(lib); String[] bookIds = lib.getBooksIds(); TestBook book = lib.getBookById(bookIds[0]); - assertEquals(book.getIllustration(48).url(), "http://localhost/meta?name=favicon&content=small"); + + TestIllustration illustration = book.getIllustration(48); + assertEquals(illustration.width(), 48); + assertEquals(illustration.height(), 48); + assertEquals(illustration.mimeType(), "image/png"); + assertEquals(illustration.url(), "http://localhost/meta?name=favicon&content=small"); + // This will try to downoald to the data, but we have no local server. So return empty array. + assertEquals(illustration.getData(), new byte[0]); + assertEquals(book.getPath(), ""); assertEquals(book.getHumanReadableIdFromPath(), ""); assertFalse(book.isPathValid());