1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.test;
import com.yahoo.language.Language;
import com.yahoo.prelude.query.NotItem;
import com.yahoo.prelude.query.PhraseItem;
import com.yahoo.prelude.query.WordItem;
import com.yahoo.search.Query;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* <p>Tests that the correct query language strings are generated for various
* query trees.</p>
*
* <p>The opposite direction is tested by
* {@link com.yahoo.prelude.query.parser.test.ParseTestCase}.
* Note that the query language statements produced by a query tree is a
* subset of the statements accepted by the parser.</p>
*
* @author bratseth
*/
public class QueryLanguageTestCase {
@Test
void testWord() {
WordItem w = new WordItem("test");
assertEquals("test", w.toString());
}
@Test
void testWordWithIndex() {
WordItem w = new WordItem("test");
w.setIndexName("test.index");
assertEquals("test.index:test", w.toString());
}
@Test
void testPhrase() {
PhraseItem p = new PhraseItem();
p.addItem(new WordItem("part"));
p.addItem(new WordItem("of"));
p.addItem(new WordItem("phrase"));
assertEquals("\"part of phrase\"", p.toString());
}
@Test
void testPhraseWithIndex() {
PhraseItem p = new PhraseItem();
p.addItem(new WordItem("part"));
p.addItem(new WordItem("of"));
p.addItem(new WordItem("phrase"));
p.setIndexName("some.index");
assertEquals("some.index:\"part of phrase\"", p.toString());
}
@Test
void testNotItem() {
NotItem n = new NotItem();
n.addNegativeItem(new WordItem("notthis"));
n.addNegativeItem(new WordItem("andnotthis"));
n.addPositiveItem(new WordItem("butthis"));
assertEquals("+butthis -notthis -andnotthis", n.toString());
}
@Test
void testLanguagesInQueryParameter() {
// Right parameter is the parameter given in the query, as language=
// Left parameter is the language sent to linguistics
// Ancient
assertLanguage(Language.CHINESE_SIMPLIFIED, "zh-cn");
assertLanguage(Language.CHINESE_SIMPLIFIED, "zh-Hans");
assertLanguage(Language.CHINESE_SIMPLIFIED, "zh-hans");
assertLanguage(Language.CHINESE_TRADITIONAL, "zh-tw");
assertLanguage(Language.CHINESE_TRADITIONAL, "zh-Hant");
assertLanguage(Language.CHINESE_TRADITIONAL, "zh-hant");
assertLanguage(Language.CHINESE_TRADITIONAL, "zh");
assertLanguage(Language.ENGLISH, "en");
assertLanguage(Language.GERMAN, "de");
assertLanguage(Language.JAPANESE, "ja");
assertLanguage(Language.fromLanguageTag("jp"), "jp");
assertLanguage(Language.KOREAN, "ko");
// Since 2.0
assertLanguage(Language.FRENCH, "fr");
assertLanguage(Language.SPANISH, "es");
assertLanguage(Language.ITALIAN, "it");
assertLanguage(Language.PORTUGUESE, "pt");
//Since 2.2
assertLanguage(Language.THAI, "th");
}
private void assertLanguage(Language expectedLanguage, String languageParameter) {
Query query = new Query("?query=test&language=" + languageParameter);
assertEquals(expectedLanguage, query.getModel().getParsingLanguage());
/*
This should also work and give something else than und/unknown
assertEquals("en", new Query("?query=test&language=en_US").getParsingLanguage().languageCode());
assertEquals("nb_NO", new Query("?query=test&language=nb_NO").getParsingLanguage().languageCode());
*/
}
}
|