summaryrefslogtreecommitdiff
path: root/nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/Lucene9AnalyzerFactoryTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/Lucene9AnalyzerFactoryTest.java')
-rw-r--r--nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/Lucene9AnalyzerFactoryTest.java283
1 files changed, 283 insertions, 0 deletions
diff --git a/nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/Lucene9AnalyzerFactoryTest.java b/nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/Lucene9AnalyzerFactoryTest.java
new file mode 100644
index 000000000..693d82918
--- /dev/null
+++ b/nouveau/src/test/java/org/apache/couchdb/nouveau/lucene9/Lucene9AnalyzerFactoryTest.java
@@ -0,0 +1,283 @@
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.couchdb.nouveau.lucene9;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import java.lang.reflect.Method;
+import java.util.Map;
+
+import org.apache.couchdb.nouveau.api.IndexDefinition;
+import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.analysis.ar.ArabicAnalyzer;
+import org.apache.lucene.analysis.bg.BulgarianAnalyzer;
+import org.apache.lucene.analysis.ca.CatalanAnalyzer;
+import org.apache.lucene.analysis.cjk.CJKAnalyzer;
+import org.apache.lucene.analysis.classic.ClassicAnalyzer;
+import org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer;
+import org.apache.lucene.analysis.core.KeywordAnalyzer;
+import org.apache.lucene.analysis.core.SimpleAnalyzer;
+import org.apache.lucene.analysis.core.WhitespaceAnalyzer;
+import org.apache.lucene.analysis.cz.CzechAnalyzer;
+import org.apache.lucene.analysis.da.DanishAnalyzer;
+import org.apache.lucene.analysis.de.GermanAnalyzer;
+import org.apache.lucene.analysis.email.UAX29URLEmailAnalyzer;
+import org.apache.lucene.analysis.en.EnglishAnalyzer;
+import org.apache.lucene.analysis.es.SpanishAnalyzer;
+import org.apache.lucene.analysis.eu.BasqueAnalyzer;
+import org.apache.lucene.analysis.fa.PersianAnalyzer;
+import org.apache.lucene.analysis.fi.FinnishAnalyzer;
+import org.apache.lucene.analysis.fr.FrenchAnalyzer;
+import org.apache.lucene.analysis.ga.IrishAnalyzer;
+import org.apache.lucene.analysis.gl.GalicianAnalyzer;
+import org.apache.lucene.analysis.hi.HindiAnalyzer;
+import org.apache.lucene.analysis.hu.HungarianAnalyzer;
+import org.apache.lucene.analysis.hy.ArmenianAnalyzer;
+import org.apache.lucene.analysis.id.IndonesianAnalyzer;
+import org.apache.lucene.analysis.it.ItalianAnalyzer;
+import org.apache.lucene.analysis.ja.JapaneseAnalyzer;
+import org.apache.lucene.analysis.lv.LatvianAnalyzer;
+import org.apache.lucene.analysis.miscellaneous.PerFieldAnalyzerWrapper;
+import org.apache.lucene.analysis.nl.DutchAnalyzer;
+import org.apache.lucene.analysis.no.NorwegianAnalyzer;
+import org.apache.lucene.analysis.pl.PolishAnalyzer;
+import org.apache.lucene.analysis.pt.PortugueseAnalyzer;
+import org.apache.lucene.analysis.ro.RomanianAnalyzer;
+import org.apache.lucene.analysis.ru.RussianAnalyzer;
+import org.apache.lucene.analysis.standard.StandardAnalyzer;
+import org.apache.lucene.analysis.sv.SwedishAnalyzer;
+import org.apache.lucene.analysis.th.ThaiAnalyzer;
+import org.apache.lucene.analysis.tr.TurkishAnalyzer;
+import org.junit.jupiter.api.Test;
+
+import jakarta.ws.rs.WebApplicationException;
+
+public class Lucene9AnalyzerFactoryTest {
+
+ @Test
+ public void testkeyword() throws Exception {
+ assertAnalyzer("keyword", KeywordAnalyzer.class);
+ }
+
+ @Test
+ public void testsimple() throws Exception {
+ assertAnalyzer("simple", SimpleAnalyzer.class);
+ }
+
+ @Test
+ public void testwhitespace() throws Exception {
+ assertAnalyzer("whitespace", WhitespaceAnalyzer.class);
+ }
+
+ @Test
+ public void testarabic() throws Exception {
+ assertAnalyzer("arabic", ArabicAnalyzer.class);
+ }
+
+ @Test
+ public void testbulgarian() throws Exception {
+ assertAnalyzer("bulgarian", BulgarianAnalyzer.class);
+ }
+
+ @Test
+ public void testcatalan() throws Exception {
+ assertAnalyzer("catalan", CatalanAnalyzer.class);
+ }
+
+ @Test
+ public void testcjk() throws Exception {
+ assertAnalyzer("cjk", CJKAnalyzer.class);
+ }
+
+ @Test
+ public void testchinese() throws Exception {
+ assertAnalyzer("chinese", SmartChineseAnalyzer.class);
+ }
+
+ @Test
+ public void testczech() throws Exception {
+ assertAnalyzer("czech", CzechAnalyzer.class);
+ }
+
+ @Test
+ public void testdanish() throws Exception {
+ assertAnalyzer("danish", DanishAnalyzer.class);
+ }
+
+ @Test
+ public void testgerman() throws Exception {
+ assertAnalyzer("german", GermanAnalyzer.class);
+ }
+
+ @Test
+ public void testenglish() throws Exception {
+ assertAnalyzer("english", EnglishAnalyzer.class);
+ }
+
+ @Test
+ public void testspanish() throws Exception {
+ assertAnalyzer("spanish", SpanishAnalyzer.class);
+ }
+
+ @Test
+ public void testbasque() throws Exception {
+ assertAnalyzer("basque", BasqueAnalyzer.class);
+ }
+
+ @Test
+ public void testpersian() throws Exception {
+ assertAnalyzer("persian", PersianAnalyzer.class);
+ }
+
+ @Test
+ public void testfinnish() throws Exception {
+ assertAnalyzer("finnish", FinnishAnalyzer.class);
+ }
+
+ @Test
+ public void testfrench() throws Exception {
+ assertAnalyzer("french", FrenchAnalyzer.class);
+ }
+
+ @Test
+ public void testirish() throws Exception {
+ assertAnalyzer("irish", IrishAnalyzer.class);
+ }
+
+ @Test
+ public void testgalician() throws Exception {
+ assertAnalyzer("galician", GalicianAnalyzer.class);
+ }
+
+ @Test
+ public void testhindi() throws Exception {
+ assertAnalyzer("hindi", HindiAnalyzer.class);
+ }
+
+ @Test
+ public void testhungarian() throws Exception {
+ assertAnalyzer("hungarian", HungarianAnalyzer.class);
+ }
+
+ @Test
+ public void testarmenian() throws Exception {
+ assertAnalyzer("armenian", ArmenianAnalyzer.class);
+ }
+
+ @Test
+ public void testindonesian() throws Exception {
+ assertAnalyzer("indonesian", IndonesianAnalyzer.class);
+ }
+
+ @Test
+ public void testitalian() throws Exception {
+ assertAnalyzer("italian", ItalianAnalyzer.class);
+ }
+
+ @Test
+ public void testjapanese() throws Exception {
+ assertAnalyzer("japanese", JapaneseAnalyzer.class);
+ }
+
+ @Test
+ public void testlatvian() throws Exception {
+ assertAnalyzer("latvian", LatvianAnalyzer.class);
+ }
+
+ @Test
+ public void testdutch() throws Exception {
+ assertAnalyzer("dutch", DutchAnalyzer.class);
+ }
+
+ @Test
+ public void testnorwegian() throws Exception {
+ assertAnalyzer("norwegian", NorwegianAnalyzer.class);
+ }
+
+ @Test
+ public void testpolish() throws Exception {
+ assertAnalyzer("polish", PolishAnalyzer.class);
+ }
+
+ @Test
+ public void testportugese() throws Exception {
+ assertAnalyzer("portugese", PortugueseAnalyzer.class);
+ }
+
+ @Test
+ public void testromanian() throws Exception {
+ assertAnalyzer("romanian", RomanianAnalyzer.class);
+ }
+
+ @Test
+ public void testrussian() throws Exception {
+ assertAnalyzer("russian", RussianAnalyzer.class);
+ }
+
+ @Test
+ public void testclassic() throws Exception {
+ assertAnalyzer("classic", ClassicAnalyzer.class);
+ }
+
+ @Test
+ public void teststandard() throws Exception {
+ assertAnalyzer("standard", StandardAnalyzer.class);
+ }
+
+ @Test
+ public void testemail() throws Exception {
+ assertAnalyzer("email", UAX29URLEmailAnalyzer.class);
+ }
+
+ @Test
+ public void testswedish() throws Exception {
+ assertAnalyzer("swedish", SwedishAnalyzer.class);
+ }
+
+ @Test
+ public void testthai() throws Exception {
+ assertAnalyzer("thai", ThaiAnalyzer.class);
+ }
+
+ @Test
+ public void testturkish() throws Exception {
+ assertAnalyzer("turkish", TurkishAnalyzer.class);
+ }
+
+ @Test
+ public void testFieldAnalyzers() throws Exception {
+ final IndexDefinition indexDefinition = new IndexDefinition("standard",
+ Map.of("english", "english", "thai", "thai", "email", "email"));
+ final Analyzer analyzer = Lucene9AnalyzerFactory.fromDefinition(indexDefinition);
+ assertThat(analyzer).isInstanceOf(PerFieldAnalyzerWrapper.class);
+ final Method m = PerFieldAnalyzerWrapper.class.getDeclaredMethod("getWrappedAnalyzer", String.class);
+ m.setAccessible(true);
+ assertThat(m.invoke(analyzer, "english")).isInstanceOf(EnglishAnalyzer.class);
+ assertThat(m.invoke(analyzer, "thai")).isInstanceOf(ThaiAnalyzer.class);
+ assertThat(m.invoke(analyzer, "email")).isInstanceOf(UAX29URLEmailAnalyzer.class);
+ assertThat(m.invoke(analyzer, "other")).isInstanceOf(StandardAnalyzer.class);
+ }
+
+ @Test
+ public void testUnknownAnalyzer() throws Exception {
+ assertThrows(WebApplicationException.class, () -> Lucene9AnalyzerFactory.newAnalyzer("foo"));
+ }
+
+ private void assertAnalyzer(final String name, final Class<? extends Analyzer> clazz) throws Exception {
+ assertThat(Lucene9AnalyzerFactory.newAnalyzer(name)).isInstanceOf(clazz);
+ assertThat(Lucene9AnalyzerFactory.fromDefinition(new IndexDefinition(name, null))).isInstanceOf(clazz);
+ }
+
+}