@@ -189,3 +189,95 @@ class SpanishAnalyzerBuilderSuite extends CatsEffectSuite {
189189 }
190190
191191}
192+
193+ class ItalianAnalyzerBuilderSuite extends CatsEffectSuite {
194+
195+ val jalapenos = " Mi piacciono i jalapeños"
196+ val jumping = " A Neeko piace saltare sui contatori"
197+
198+ test(" italian analyzer default should tokenize without any transformations" ) {
199+ val analyzer = AnalyzerBuilder .italian
200+ val actual = analyzer.tokenizer[IO ].use(f => f(jalapenos))
201+ assertIO(actual, Vector (" Mi" , " piacciono" , " i" , " jalapeños" ))
202+ }
203+
204+ test(" italian analyzer withLowerCasing should lowercase all letters" ) {
205+ val analyzer = AnalyzerBuilder .italian.withLowerCasing
206+ val actual = analyzer.tokenizer[IO ].use(f => f(jalapenos))
207+ assertIO(actual, Vector (" mi" , " piacciono" , " i" , " jalapeños" ))
208+ }
209+
210+ test(" italian analyzer withASCIIFolding should fold 'ñ' to 'n'" ) {
211+ val analyzer = AnalyzerBuilder .italian.withASCIIFolding
212+ val actual = analyzer.tokenizer[IO ].use(f => f(jalapenos))
213+ assertIO(actual, Vector (" Mi" , " piacciono" , " i" , " jalapenos" ))
214+ }
215+
216+ test(" italian analyzer withStopWords should filter them out" ) {
217+ val analyzer = AnalyzerBuilder .italian.withStopWords(Set (" i" ))
218+ val actual = analyzer.tokenizer[IO ].use(f => f(jalapenos))
219+ assertIO(actual, Vector (" Mi" , " piacciono" , " jalapeños" ))
220+ }
221+
222+ test(" italian analyzer withItalianLightStemmer should lowercase and stem words" ) {
223+ val analyzer = AnalyzerBuilder .italian.withItalianLightStemmer
224+ val actual = analyzer.tokenizer[IO ].use(f => f(jumping))
225+ assertIO(actual, Vector (" a" , " neeko" , " piace" , " saltar" , " sui" , " contator" ))
226+ }
227+
228+ test(" italian analyzer builder settings can be chained" ) {
229+ val analyzer = AnalyzerBuilder .italian.withItalianLightStemmer
230+ .withStopWords(Set (" a" , " sui" ))
231+ .withASCIIFolding
232+ .withLowerCasing
233+ val actual = analyzer.tokenizer[IO ].use(f => f(jumping))
234+ assertIO(actual, Vector (" neeko" , " piace" , " saltar" , " contator" ))
235+ }
236+
237+ }
238+
239+ class GermanAnalyzerBuilderSuite extends CatsEffectSuite {
240+
241+ val jalapenos = " Ich mag Jalapeños"
242+ val jumping = " Neeko springt gerne auf Theken"
243+
244+ test(" german analyzer default should tokenize without any transformations" ) {
245+ val analyzer = AnalyzerBuilder .german
246+ val actual = analyzer.tokenizer[IO ].use(f => f(jalapenos))
247+ assertIO(actual, Vector (" Ich" , " mag" , " Jalapeños" ))
248+ }
249+
250+ test(" german analyzer withLowerCasing should lowercase all letters" ) {
251+ val analyzer = AnalyzerBuilder .german.withLowerCasing
252+ val actual = analyzer.tokenizer[IO ].use(f => f(jalapenos))
253+ assertIO(actual, Vector (" ich" , " mag" , " jalapeños" ))
254+ }
255+
256+ test(" german analyzer withASCIIFolding should fold 'ñ' to 'n'" ) {
257+ val analyzer = AnalyzerBuilder .german.withASCIIFolding
258+ val actual = analyzer.tokenizer[IO ].use(f => f(jalapenos))
259+ assertIO(actual, Vector (" Ich" , " mag" , " Jalapenos" ))
260+ }
261+
262+ test(" german analyzer withStopWords should filter them out" ) {
263+ val analyzer = AnalyzerBuilder .german.withStopWords(Set (" Ich" ))
264+ val actual = analyzer.tokenizer[IO ].use(f => f(jalapenos))
265+ assertIO(actual, Vector (" mag" , " Jalapeños" ))
266+ }
267+
268+ test(" german analyzer withGermanLightStemmer should lowercase and stem words" ) {
269+ val analyzer = AnalyzerBuilder .german.withGermanLightStemmer
270+ val actual = analyzer.tokenizer[IO ].use(f => f(jumping))
271+ assertIO(actual, Vector (" neeko" , " springt" , " gern" , " auf" , " thek" ))
272+ }
273+
274+ test(" german analyzer builder settings can be chained" ) {
275+ val analyzer = AnalyzerBuilder .german.withGermanLightStemmer
276+ .withStopWords(Set (" auf" ))
277+ .withASCIIFolding
278+ .withLowerCasing
279+ val actual = analyzer.tokenizer[IO ].use(f => f(jumping))
280+ assertIO(actual, Vector (" neeko" , " springt" , " gern" , " thek" ))
281+ }
282+
283+ }
0 commit comments