mirror of
https://github.com/kiwix/java-libkiwix.git
synced 2025-09-09 07:08:49 -04:00
Merge pull request #34 from kiwix/search_testing
This commit is contained in:
commit
8c3a358486
3
.github/workflows/pull_request.yml
vendored
3
.github/workflows/pull_request.yml
vendored
@ -2,8 +2,9 @@ name: Pull requests
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- '**'
|
||||
- main
|
||||
|
||||
jobs:
|
||||
|
||||
|
@ -37,7 +37,7 @@ DISPOSE
|
||||
|
||||
METHOD(jobject, getResults, jint start, jint maxResults) {
|
||||
auto results = THIS->getResults(TO_C(start), TO_C(maxResults));
|
||||
auto obj = NEW_OBJECT("ork/kiwix/libzim/SearchIterator");
|
||||
auto obj = NEW_OBJECT("org/kiwix/libzim/SearchIterator");
|
||||
SET_HANDLE(zim::SearchIterator, obj, results.begin());
|
||||
|
||||
// We have to set the nativeHandleEnd but no macro ease our work here.
|
||||
|
@ -64,8 +64,8 @@ METHOD0(jboolean, hasNext) {
|
||||
}
|
||||
|
||||
METHOD0(jobject, next) {
|
||||
(*THIS)++;
|
||||
zim::Entry entry = **THIS;
|
||||
(*THIS)++;
|
||||
return BUILD_WRAPPER("org/kiwix/libzim/Entry", entry);
|
||||
}
|
||||
|
||||
|
@ -49,8 +49,8 @@ METHOD0(jboolean, hasNext) {
|
||||
}
|
||||
|
||||
METHOD0(jobject, next) {
|
||||
(*THIS)++;
|
||||
zim::SuggestionItem item = **THIS;
|
||||
(*THIS)++;
|
||||
return BUILD_WRAPPER("org/kiwix/libzim/SuggestionItem", item);
|
||||
}
|
||||
|
||||
|
@ -37,7 +37,7 @@ DISPOSE
|
||||
|
||||
METHOD(jobject, getResults, jint start, jint maxResults) {
|
||||
auto results = THIS->getResults(TO_C(start), TO_C(maxResults));
|
||||
auto obj = NEW_OBJECT("ork/kiwix/libzim/SuggestionIterator");
|
||||
auto obj = NEW_OBJECT("org/kiwix/libzim/SuggestionIterator");
|
||||
SET_HANDLE(zim::SuggestionIterator, obj, results.begin());
|
||||
|
||||
// We have to set the nativeHandleEnd but no macro ease our work here.
|
||||
|
@ -8,12 +8,13 @@ die()
|
||||
|
||||
cd "$(dirname "$0")"
|
||||
rm -f small.zim
|
||||
zimwriterfs --withoutFTIndex \
|
||||
-w main.html \
|
||||
-f favicon.png \
|
||||
-l en \
|
||||
zimwriterfs -w main.html \
|
||||
-n "Test" \
|
||||
-I favicon.png \
|
||||
-l eng \
|
||||
-t "Test ZIM file" \
|
||||
-d "N/A" \
|
||||
-L "Test File" \
|
||||
-c "N/A" \
|
||||
-p "N/A" \
|
||||
small_zimfile_data \
|
||||
|
42
lib/src/test/org/kiwix/test/libzim/TestQuery.java
Normal file
42
lib/src/test/org/kiwix/test/libzim/TestQuery.java
Normal file
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright (C) 2022 Matthieu Gautier <mgautier@kymeria.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
package org.kiwix.test.libzim;
|
||||
|
||||
import org.kiwix.libzim.Query;
|
||||
|
||||
public class TestQuery
|
||||
{
|
||||
private Query inner;
|
||||
public Query inner() { return inner; }
|
||||
public TestQuery(String query) {
|
||||
inner = new Query(query);
|
||||
}
|
||||
|
||||
public TestQuery setQuery(String query) {
|
||||
inner.setQuery(query);
|
||||
return this;
|
||||
}
|
||||
|
||||
public TestQuery setGeorange(float latitude, float longitute, float distance) {
|
||||
inner.setGeorange(latitude, latitude, distance);
|
||||
return this;
|
||||
}
|
||||
|
||||
}
|
31
lib/src/test/org/kiwix/test/libzim/TestSearch.java
Normal file
31
lib/src/test/org/kiwix/test/libzim/TestSearch.java
Normal file
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright (C) 2022 Matthieu Gautier <mgautier@kymeria.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
package org.kiwix.test.libzim;
|
||||
|
||||
import org.kiwix.libzim.Search;
|
||||
import org.kiwix.libzim.SearchIterator;
|
||||
|
||||
public class TestSearch
|
||||
{
|
||||
private Search inner;
|
||||
public TestSearch(Search _inner) { inner = _inner; }
|
||||
public TestSearchIterator getResults(int start, int maxResults) { return new TestSearchIterator(inner.getResults(start, maxResults)); }
|
||||
public long getEstimatedMatches() { return inner.getEstimatedMatches(); }
|
||||
}
|
40
lib/src/test/org/kiwix/test/libzim/TestSearchIterator.java
Normal file
40
lib/src/test/org/kiwix/test/libzim/TestSearchIterator.java
Normal file
@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright (C) 2022 Matthieu Gautier <mgautier@kymeria.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
package org.kiwix.test.libzim;
|
||||
|
||||
import org.kiwix.libzim.SearchIterator;
|
||||
import java.util.Iterator;
|
||||
|
||||
public class TestSearchIterator implements Iterator<TestEntry>
|
||||
{
|
||||
private SearchIterator inner;
|
||||
public TestSearchIterator(SearchIterator _inner) { inner = _inner; }
|
||||
public String getPath() { return inner.getPath(); }
|
||||
public String getTitle() { return inner.getTitle(); }
|
||||
public int getScore() { return inner.getScore(); }
|
||||
public String getSnippet() { return inner.getSnippet(); }
|
||||
public int getWordCount() { return inner.getWordCount(); }
|
||||
public int getFileIndex() { return inner.getFileIndex(); }
|
||||
public int getSize() { return inner.getSize(); }
|
||||
public String getZimId() { return inner.getZimId(); }
|
||||
|
||||
public boolean hasNext() { return inner.hasNext(); }
|
||||
public TestEntry next() { return new TestEntry(inner.next()); }
|
||||
}
|
50
lib/src/test/org/kiwix/test/libzim/TestSearcher.java
Normal file
50
lib/src/test/org/kiwix/test/libzim/TestSearcher.java
Normal file
@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright (C) 2022 Matthieu Gautier <mgautier@kymeria.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
package org.kiwix.test.libzim;
|
||||
|
||||
import org.kiwix.libzim.Archive;
|
||||
import org.kiwix.libzim.Searcher;
|
||||
import org.kiwix.libzim.Search;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
public class TestSearcher
|
||||
{
|
||||
private Searcher inner;
|
||||
public TestSearcher(TestArchive archive) throws Exception
|
||||
{
|
||||
inner = new Searcher(archive.inner());
|
||||
}
|
||||
|
||||
public TestSearcher(TestArchive[] archives) throws Exception
|
||||
{
|
||||
inner = new Searcher(
|
||||
Stream.of(archives).map(a -> a.inner()).toArray(Archive[]::new)
|
||||
);
|
||||
}
|
||||
|
||||
public TestSearcher addArchive(TestArchive archive) {
|
||||
inner.addArchive(archive.inner());
|
||||
return this;
|
||||
}
|
||||
public TestSearch search(TestQuery query) { return new TestSearch(inner.search(query.inner())); }
|
||||
public void setVerbose(boolean verbose) { inner.setVerbose(verbose); }
|
||||
|
||||
public void dispose() { inner.dispose(); }
|
||||
}
|
32
lib/src/test/org/kiwix/test/libzim/TestSuggestionItem.java
Normal file
32
lib/src/test/org/kiwix/test/libzim/TestSuggestionItem.java
Normal file
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright (C) 2022 Matthieu Gautier <mgautier@kymeria.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
package org.kiwix.test.libzim;
|
||||
|
||||
import org.kiwix.libzim.SuggestionItem;
|
||||
|
||||
public class TestSuggestionItem
|
||||
{
|
||||
private SuggestionItem inner;
|
||||
public TestSuggestionItem(SuggestionItem _inner) { inner = _inner; }
|
||||
public String getTitle() { return inner.getTitle(); }
|
||||
public String getPath() { return inner.getPath(); }
|
||||
public String getSnippet() { return inner.getSnippet(); }
|
||||
public boolean hasSnippet() { return inner.hasSnippet(); }
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright (C) 2022 Matthieu Gautier <mgautier@kymeria.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
package org.kiwix.test.libzim;
|
||||
|
||||
import org.kiwix.libzim.SuggestionIterator;
|
||||
import java.util.Iterator;
|
||||
|
||||
public class TestSuggestionIterator implements Iterator<TestSuggestionItem>
|
||||
{
|
||||
private SuggestionIterator inner;
|
||||
public TestSuggestionIterator(SuggestionIterator _inner) { inner = _inner; }
|
||||
public boolean hasNext() { return inner.hasNext(); }
|
||||
public TestSuggestionItem next() { return new TestSuggestionItem(inner.next()); }
|
||||
}
|
31
lib/src/test/org/kiwix/test/libzim/TestSuggestionSearch.java
Normal file
31
lib/src/test/org/kiwix/test/libzim/TestSuggestionSearch.java
Normal file
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright (C) 2022 Matthieu Gautier <mgautier@kymeria.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
package org.kiwix.test.libzim;
|
||||
|
||||
import org.kiwix.libzim.SuggestionSearch;
|
||||
|
||||
public class TestSuggestionSearch
|
||||
{
|
||||
private SuggestionSearch inner;
|
||||
public TestSuggestionSearch(SuggestionSearch _inner) { inner = _inner; }
|
||||
|
||||
public TestSuggestionIterator getResults(int start, int maxResults) { return new TestSuggestionIterator(inner.getResults(start, maxResults)); }
|
||||
public long getEstimatedMatches() { return inner.getEstimatedMatches(); }
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright (C) 2022 Matthieu Gautier <mgautier@kymeria.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
package org.kiwix.test.libzim;
|
||||
|
||||
import org.kiwix.libzim.SuggestionSearcher;
|
||||
|
||||
import java.io.FileDescriptor;
|
||||
|
||||
public class TestSuggestionSearcher
|
||||
{
|
||||
private SuggestionSearcher inner;
|
||||
public TestSuggestionSearcher(TestArchive archive) throws Exception
|
||||
{
|
||||
inner = new SuggestionSearcher(archive.inner());
|
||||
}
|
||||
|
||||
public TestSuggestionSearch suggest(String query) { return new TestSuggestionSearch(inner.suggest(query)); }
|
||||
public void setVerbose(boolean verbose) { inner.setVerbose(verbose); }
|
||||
public void dispose() { inner.dispose(); }
|
||||
}
|
Binary file not shown.
Binary file not shown.
@ -49,14 +49,18 @@ public class test {
|
||||
private void testArchive(TestArchive archive)
|
||||
throws IOException {
|
||||
// test the zim file main page title
|
||||
assertEquals("Test ZIM file", archive.getMainEntry().getTitle());
|
||||
// test zim file size
|
||||
assertEquals(4070, archive.getFilesize()); // The file size is in KiB
|
||||
TestEntry mainPage = archive.getMainEntry();
|
||||
assertEquals("mainPage", mainPage.getTitle());
|
||||
assertEquals("Test ZIM file", mainPage.getItem(true).getTitle());
|
||||
// test zim file main url
|
||||
assertEquals("A/main.html", archive.getMainEntry().getPath());
|
||||
assertEquals("mainPage", mainPage.getPath());
|
||||
assertEquals("main.html", mainPage.getItem(true).getPath());
|
||||
|
||||
// test zim file size
|
||||
assertEquals(66910, archive.getFilesize()); // The file size is in KiB
|
||||
// test zim file content
|
||||
byte[] mainData = getFileContent("small_zimfile_data/main.html");
|
||||
byte[] inZimMainData = archive.getEntryByPath("A/main.html").getItem(true).getData().getData();
|
||||
byte[] inZimMainData = archive.getEntryByPath("main.html").getItem(true).getData().getData();
|
||||
assert(Arrays.equals(mainData, inZimMainData));
|
||||
|
||||
// test zim file icon
|
||||
@ -177,30 +181,30 @@ public class test {
|
||||
bookmarkArray = lib.getBookmarks(true);
|
||||
assertEquals(0, bookmarkArray.length);
|
||||
}
|
||||
/*
|
||||
|
||||
@Test
|
||||
public void testSearcher() throws Exception, ZimFileFormatException, JNIKiwixException {
|
||||
Archive archive = new Archive("small.zim");
|
||||
TestArchive archive = new TestArchive("small.zim");
|
||||
|
||||
Searcher searcher = new Searcher(archive);
|
||||
Query query = new Query("test");
|
||||
Search search = searcher.search(query);
|
||||
TestSearcher searcher = new TestSearcher(archive);
|
||||
TestQuery query = new TestQuery("test");
|
||||
TestSearch search = searcher.search(query);
|
||||
int estimatedMatches = (int) search.getEstimatedMatches();
|
||||
assertEquals(1, estimatedMatches);
|
||||
SearchIterator iterator = search.getResults(0, estimatedMatches);
|
||||
TestSearchIterator iterator = search.getResults(0, estimatedMatches);
|
||||
assertEquals("Test ZIM file", iterator.getTitle());
|
||||
searcher.dispose();
|
||||
|
||||
SuggestionSearcher suggestionSearcher = new SuggestionSearcher(archive);
|
||||
SuggestionSearch suggestionSearch = suggestionSearcher.suggest("test");
|
||||
TestSuggestionSearcher suggestionSearcher = new TestSuggestionSearcher(archive);
|
||||
TestSuggestionSearch suggestionSearch = suggestionSearcher.suggest("test");
|
||||
int matches = (int) suggestionSearch.getEstimatedMatches();
|
||||
assertEquals(1, matches);
|
||||
SuggestionIterator results = suggestionSearch.getResults(1, matches);
|
||||
SuggestionItem suggestionItem = results.next();
|
||||
TestSuggestionIterator results = suggestionSearch.getResults(0, matches);
|
||||
TestSuggestionItem suggestionItem = results.next();
|
||||
assertEquals("Test ZIM file", suggestionItem.getTitle());
|
||||
suggestionSearcher.dispose();
|
||||
}
|
||||
*/
|
||||
|
||||
static
|
||||
public void main(String[] args) {
|
||||
Library lib = new Library();
|
||||
|
Loading…
x
Reference in New Issue
Block a user