|
@@ -10,6 +10,7 @@
|
|
|
package org.elasticsearch.index.query;
|
|
|
|
|
|
import org.apache.lucene.index.IndexWriter;
|
|
|
+import org.apache.lucene.util.BytesRef;
|
|
|
import org.elasticsearch.common.ParsingException;
|
|
|
import org.elasticsearch.common.settings.Settings;
|
|
|
import org.elasticsearch.search.SearchModule;
|
|
@@ -93,4 +94,25 @@ public class AbstractQueryBuilderTests extends ESTestCase {
|
|
|
assertThat(e.getMessage(), containsString("term starting with [aaaaa"));
|
|
|
}
|
|
|
|
|
|
+ public void testMaybeConvertToBytesRefStringCorrectSize() {
|
|
|
+ int capacity = randomIntBetween(20, 40);
|
|
|
+ StringBuilder termBuilder = new StringBuilder(capacity);
|
|
|
+ int correctSize = 0;
|
|
|
+ for (int i = 0; i < capacity; i++) {
|
|
|
+ if (i < capacity / 3) {
|
|
|
+ termBuilder.append((char) randomIntBetween(0, 127));
|
|
|
+ ++correctSize; // use only one byte for char < 128
|
|
|
+ } else if (i < 2 * capacity / 3) {
|
|
|
+ termBuilder.append((char) randomIntBetween(128, 2047));
|
|
|
+ correctSize += 2; // use two bytes for char < 2048
|
|
|
+ } else {
|
|
|
+ termBuilder.append((char) randomIntBetween(2048, 4092));
|
|
|
+ correctSize += 3; // use three bytes for char >= 2048
|
|
|
+ }
|
|
|
+ }
|
|
|
+ BytesRef bytesRef = (BytesRef) AbstractQueryBuilder.maybeConvertToBytesRef(termBuilder.toString());
|
|
|
+ assertEquals(correctSize, bytesRef.bytes.length);
|
|
|
+ assertEquals(correctSize, bytesRef.length);
|
|
|
+ }
|
|
|
+
|
|
|
}
|