/* * Licensed to Luca Cavanna (the "Author") under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. Elastic Search licenses this * file to you 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.elasticsearch.shell.console.completer; import org.testng.Assert; import org.testng.annotations.Test; import java.util.List; /** * @author Luca Cavanna */ public class IdentifierTokenizerTest { private IdentifierTokenizer identifiersExtractor = new IdentifierTokenizer(); @Test public void testNameEmptyInput() throws Exception { String buffer = ""; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 1); Assert.assertEquals(identifiers.get(0).getName(), ""); Assert.assertEquals(identifiers.get(0).getOffset(), 0); Assert.assertEquals(identifiers.get(0).getLastPosition(), 0); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 0); } @Test public void testNameLastPartEmpty() throws Exception { String buffer = "Requests."; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 2); Assert.assertEquals(identifiers.get(0).getName(), "Requests"); Assert.assertEquals(identifiers.get(0).getOffset(), 8); Assert.assertEquals(identifiers.get(0).getLastPosition(), 7); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 0); Assert.assertEquals(identifiers.get(1).getName(), ""); Assert.assertEquals(identifiers.get(1).getOffset(), 0); Assert.assertEquals(identifiers.get(1).getLastPosition(), 9); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 9); } @Test public void testNameLastPartNotEmpty() throws Exception { String buffer = "Requests.ind"; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 2); Assert.assertEquals(identifiers.get(0).getName(), "Requests"); Assert.assertEquals(identifiers.get(0).getOffset(), 8); Assert.assertEquals(identifiers.get(0).getLastPosition(), 7); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 0); Assert.assertEquals(identifiers.get(1).getName(), "ind"); Assert.assertEquals(identifiers.get(1).getOffset(), 3); Assert.assertEquals(identifiers.get(1).getLastPosition(), 11); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 9); } @Test public void testNamesLastPartEmpty() throws Exception { String buffer = "es.index.type."; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 4); Assert.assertEquals(identifiers.get(0).getName(), "es"); Assert.assertEquals(identifiers.get(0).getOffset(), 2); Assert.assertEquals(identifiers.get(0).getLastPosition(), 1); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 0); Assert.assertEquals(identifiers.get(1).getName(), "index"); Assert.assertEquals(identifiers.get(1).getOffset(), 5); Assert.assertEquals(identifiers.get(1).getLastPosition(), 7); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 3); Assert.assertEquals(identifiers.get(2).getName(), "type"); Assert.assertEquals(identifiers.get(2).getOffset(), 4); Assert.assertEquals(identifiers.get(2).getLastPosition(), 12); Assert.assertEquals(identifiers.get(2).getFirstPosition(), 9); Assert.assertEquals(identifiers.get(3).getName(), ""); Assert.assertEquals(identifiers.get(3).getOffset(), 0); Assert.assertEquals(identifiers.get(3).getLastPosition(), 14); Assert.assertEquals(identifiers.get(3).getFirstPosition(), 14); } @Test public void testNamesLastPartNotEmpty() throws Exception { String buffer = "es.index.type.ind"; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 4); Assert.assertEquals(identifiers.get(0).getName(), "es"); Assert.assertEquals(identifiers.get(0).getOffset(), 2); Assert.assertEquals(identifiers.get(0).getLastPosition(), 1); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 0); Assert.assertEquals(identifiers.get(1).getName(), "index"); Assert.assertEquals(identifiers.get(1).getOffset(), 5); Assert.assertEquals(identifiers.get(1).getLastPosition(), 7); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 3); Assert.assertEquals(identifiers.get(2).getName(), "type"); Assert.assertEquals(identifiers.get(2).getOffset(), 4); Assert.assertEquals(identifiers.get(2).getLastPosition(), 12); Assert.assertEquals(identifiers.get(2).getFirstPosition(), 9); Assert.assertEquals(identifiers.get(3).getName(), "ind"); Assert.assertEquals(identifiers.get(3).getOffset(), 3); Assert.assertEquals(identifiers.get(3).getLastPosition(), 16); Assert.assertEquals(identifiers.get(3).getFirstPosition(), 14); } @Test public void testNamesFunctionNoArgsLastPartEmpty() throws Exception { String buffer = "Requests.indexRequest()."; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 3); Assert.assertEquals(identifiers.get(0).getName(), "Requests"); Assert.assertEquals(identifiers.get(0).getOffset(), 8); Assert.assertEquals(identifiers.get(0).getLastPosition(), 7); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 0); Assert.assertEquals(identifiers.get(1).getName(), "indexRequest"); Assert.assertEquals(identifiers.get(1).getOffset(), 14); Assert.assertEquals(identifiers.get(1).getLastPosition(), 22); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 9); Assert.assertEquals(identifiers.get(2).getName(), ""); Assert.assertEquals(identifiers.get(2).getOffset(), 0); Assert.assertEquals(identifiers.get(2).getLastPosition(), 24); Assert.assertEquals(identifiers.get(2).getFirstPosition(), 24); } @Test public void testNamesFunctionNoArgsLastPartNotEmpty() throws Exception { String buffer = "Requests.indexRequest().ind"; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 3); Assert.assertEquals(identifiers.get(0).getName(), "Requests"); Assert.assertEquals(identifiers.get(0).getOffset(), 8); Assert.assertEquals(identifiers.get(0).getLastPosition(), 7); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 0); Assert.assertEquals(identifiers.get(1).getName(), "indexRequest"); Assert.assertEquals(identifiers.get(1).getOffset(), 14); Assert.assertEquals(identifiers.get(1).getLastPosition(), 22); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 9); Assert.assertEquals(identifiers.get(2).getName(), "ind"); Assert.assertEquals(identifiers.get(2).getOffset(), 3); Assert.assertEquals(identifiers.get(2).getLastPosition(), 26); Assert.assertEquals(identifiers.get(2).getFirstPosition(), 24); } @Test public void testNamesFunctionsNoArgsLastPartEmpty() throws Exception { String buffer = "Requests.indexRequest().index()."; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 4); Assert.assertEquals(identifiers.get(0).getName(), "Requests"); Assert.assertEquals(identifiers.get(0).getOffset(), 8); Assert.assertEquals(identifiers.get(0).getLastPosition(), 7); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 0); Assert.assertEquals(identifiers.get(1).getName(), "indexRequest"); Assert.assertEquals(identifiers.get(1).getOffset(), 14); Assert.assertEquals(identifiers.get(1).getLastPosition(), 22); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 9); Assert.assertEquals(identifiers.get(2).getName(), "index"); Assert.assertEquals(identifiers.get(2).getOffset(), 7); Assert.assertEquals(identifiers.get(2).getLastPosition(), 30); Assert.assertEquals(identifiers.get(2).getFirstPosition(), 24); Assert.assertEquals(identifiers.get(3).getName(), ""); Assert.assertEquals(identifiers.get(3).getOffset(), 0); Assert.assertEquals(identifiers.get(3).getLastPosition(), 32); Assert.assertEquals(identifiers.get(3).getFirstPosition(), 32); } @Test public void testNamesFunctionsNoArgsLastPartNotEmpty() throws Exception { String buffer = "Requests.indexRequest().index().ind"; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 4); Assert.assertEquals(identifiers.get(0).getName(), "Requests"); Assert.assertEquals(identifiers.get(0).getOffset(), 8); Assert.assertEquals(identifiers.get(0).getLastPosition(), 7); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 0); Assert.assertEquals(identifiers.get(1).getName(), "indexRequest"); Assert.assertEquals(identifiers.get(1).getOffset(), 14); Assert.assertEquals(identifiers.get(1).getLastPosition(), 22); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 9); Assert.assertEquals(identifiers.get(2).getName(), "index"); Assert.assertEquals(identifiers.get(2).getOffset(), 7); Assert.assertEquals(identifiers.get(2).getLastPosition(), 30); Assert.assertEquals(identifiers.get(2).getFirstPosition(), 24); Assert.assertEquals(identifiers.get(3).getName(), "ind"); Assert.assertEquals(identifiers.get(3).getOffset(), 3); Assert.assertEquals(identifiers.get(3).getLastPosition(), 34); Assert.assertEquals(identifiers.get(3).getFirstPosition(), 32); } @Test public void testNamesFunctionsArgsLastPartEmpty() throws Exception { String buffer = "Requests.indexRequest().index('arg2','arg2')."; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 4); Assert.assertEquals(identifiers.get(0).getName(), "Requests"); Assert.assertEquals(identifiers.get(0).getOffset(), 8); Assert.assertEquals(identifiers.get(0).getLastPosition(), 7); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 0); Assert.assertEquals(identifiers.get(1).getName(), "indexRequest"); Assert.assertEquals(identifiers.get(1).getOffset(), 14); Assert.assertEquals(identifiers.get(1).getLastPosition(), 22); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 9); Assert.assertEquals(identifiers.get(2).getName(), "index"); Assert.assertEquals(identifiers.get(2).getOffset(), 20); Assert.assertEquals(identifiers.get(2).getLastPosition(), 43); Assert.assertEquals(identifiers.get(2).getFirstPosition(), 24); Assert.assertEquals(identifiers.get(3).getName(), ""); Assert.assertEquals(identifiers.get(3).getOffset(), 0); Assert.assertEquals(identifiers.get(3).getLastPosition(), 45); Assert.assertEquals(identifiers.get(3).getFirstPosition(), 45); } @Test public void testNamesFunctionsArgsLastPartEmpty2() throws Exception { String buffer = "Requests.indexRequest('arg1', 123).index('arg2','arg2')."; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 4); Assert.assertEquals(identifiers.get(0).getName(), "Requests"); Assert.assertEquals(identifiers.get(0).getOffset(), 8); Assert.assertEquals(identifiers.get(0).getLastPosition(), 7); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 0); Assert.assertEquals(identifiers.get(1).getName(), "indexRequest"); Assert.assertEquals(identifiers.get(1).getOffset(), 25); Assert.assertEquals(identifiers.get(1).getLastPosition(), 33); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 9); Assert.assertEquals(identifiers.get(2).getName(), "index"); Assert.assertEquals(identifiers.get(2).getOffset(), 20); Assert.assertEquals(identifiers.get(2).getLastPosition(), 54); Assert.assertEquals(identifiers.get(2).getFirstPosition(), 35); Assert.assertEquals(identifiers.get(3).getName(), ""); Assert.assertEquals(identifiers.get(3).getOffset(), 0); Assert.assertEquals(identifiers.get(3).getLastPosition(), 56); Assert.assertEquals(identifiers.get(3).getFirstPosition(), 56); } @Test public void testNamesFunctionsArgsLastPartNotEmpty() throws Exception { String buffer = "Requests.indexRequest('arg1', 123456).index('index_name').ind"; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 4); Assert.assertEquals(identifiers.get(0).getName(), "Requests"); Assert.assertEquals(identifiers.get(0).getOffset(), 8); Assert.assertEquals(identifiers.get(0).getLastPosition(), 7); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 0); Assert.assertEquals(identifiers.get(1).getName(), "indexRequest"); Assert.assertEquals(identifiers.get(1).getOffset(), 28); Assert.assertEquals(identifiers.get(1).getLastPosition(), 36); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 9); Assert.assertEquals(identifiers.get(2).getName(), "index"); Assert.assertEquals(identifiers.get(2).getOffset(), 19); Assert.assertEquals(identifiers.get(2).getLastPosition(), 56); Assert.assertEquals(identifiers.get(2).getFirstPosition(), 38); Assert.assertEquals(identifiers.get(3).getName(), "ind"); Assert.assertEquals(identifiers.get(3).getOffset(), 3); Assert.assertEquals(identifiers.get(3).getLastPosition(), 60); Assert.assertEquals(identifiers.get(3).getFirstPosition(), 58); } @Test public void testNamesNestedFunctionsLastPartEmpty() throws Exception { String buffer = "SearchSourceBuilder.searchSource().query(QueryBuilders.matchAllQuery())."; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 4); Assert.assertEquals(identifiers.get(0).getName(), "SearchSourceBuilder"); Assert.assertEquals(identifiers.get(0).getOffset(), 19); Assert.assertEquals(identifiers.get(0).getLastPosition(), 18); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 0); Assert.assertEquals(identifiers.get(1).getName(), "searchSource"); Assert.assertEquals(identifiers.get(1).getOffset(), 14); Assert.assertEquals(identifiers.get(1).getLastPosition(), 33); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 20); Assert.assertEquals(identifiers.get(2).getName(), "query"); Assert.assertEquals(identifiers.get(2).getOffset(), 36); Assert.assertEquals(identifiers.get(2).getLastPosition(), 70); Assert.assertEquals(identifiers.get(2).getFirstPosition(), 35); Assert.assertEquals(identifiers.get(3).getName(), ""); Assert.assertEquals(identifiers.get(3).getOffset(), 0); Assert.assertEquals(identifiers.get(3).getLastPosition(), 72); Assert.assertEquals(identifiers.get(3).getFirstPosition(), 72); } @Test public void testNamesNestedFunctionsLastPartNotEmpty() throws Exception { String buffer = "SearchSourceBuilder.searchSource().query(QueryBuilders.matchAllQuery()).facets().sor"; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 5); Assert.assertEquals(identifiers.get(0).getName(), "SearchSourceBuilder"); Assert.assertEquals(identifiers.get(0).getOffset(), 19); Assert.assertEquals(identifiers.get(0).getLastPosition(), 18); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 0); Assert.assertEquals(identifiers.get(1).getName(), "searchSource"); Assert.assertEquals(identifiers.get(1).getOffset(), 14); Assert.assertEquals(identifiers.get(1).getLastPosition(), 33); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 20); Assert.assertEquals(identifiers.get(2).getName(), "query"); Assert.assertEquals(identifiers.get(2).getOffset(), 36); Assert.assertEquals(identifiers.get(2).getLastPosition(), 70); Assert.assertEquals(identifiers.get(2).getFirstPosition(), 35); Assert.assertEquals(identifiers.get(3).getName(), "facets"); Assert.assertEquals(identifiers.get(3).getOffset(), 8); Assert.assertEquals(identifiers.get(3).getLastPosition(), 79); Assert.assertEquals(identifiers.get(3).getFirstPosition(), 72); Assert.assertEquals(identifiers.get(4).getName(), "sor"); Assert.assertEquals(identifiers.get(4).getOffset(), 3); Assert.assertEquals(identifiers.get(4).getLastPosition(), 83); Assert.assertEquals(identifiers.get(4).getFirstPosition(), 81); } @Test public void testNamesNestedFunctionsLastPartNotEmpty2() throws Exception { String buffer = "SearchSourceBuilder.searchSource().query(Nested1.function1('arg1', Nested2.function2('test'))).facets().sor"; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 5); Assert.assertEquals(identifiers.get(0).getName(), "SearchSourceBuilder"); Assert.assertEquals(identifiers.get(0).getOffset(), 19); Assert.assertEquals(identifiers.get(0).getLastPosition(), 18); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 0); Assert.assertEquals(identifiers.get(1).getName(), "searchSource"); Assert.assertEquals(identifiers.get(1).getOffset(), 14); Assert.assertEquals(identifiers.get(1).getLastPosition(), 33); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 20); Assert.assertEquals(identifiers.get(2).getName(), "query"); Assert.assertEquals(identifiers.get(2).getOffset(), 59); Assert.assertEquals(identifiers.get(2).getLastPosition(), 93); Assert.assertEquals(identifiers.get(2).getFirstPosition(), 35); Assert.assertEquals(identifiers.get(3).getName(), "facets"); Assert.assertEquals(identifiers.get(3).getOffset(), 8); Assert.assertEquals(identifiers.get(3).getLastPosition(), 102); Assert.assertEquals(identifiers.get(3).getFirstPosition(), 95); Assert.assertEquals(identifiers.get(4).getName(), "sor"); Assert.assertEquals(identifiers.get(4).getOffset(), 3); Assert.assertEquals(identifiers.get(4).getLastPosition(), 106); Assert.assertEquals(identifiers.get(4).getFirstPosition(), 104); } @Test public void testNamesNestedFunctions() throws Exception { String buffer = "SearchSourceBuilder.searchSource().query(Nested1.fun"; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 2); Assert.assertEquals(identifiers.get(0).getName(), "Nested1"); Assert.assertEquals(identifiers.get(0).getOffset(), 7); Assert.assertEquals(identifiers.get(0).getLastPosition(), 47); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 41); Assert.assertEquals(identifiers.get(1).getName(), "fun"); Assert.assertEquals(identifiers.get(1).getOffset(), 3); Assert.assertEquals(identifiers.get(1).getLastPosition(), 51); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 49); } @Test public void testNamesNestedFunctions2() throws Exception { String buffer = "SearchSourceBuilder.searchSource().query(Nested1.function1('args').fun"; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 3); Assert.assertEquals(identifiers.get(0).getName(), "Nested1"); Assert.assertEquals(identifiers.get(0).getOffset(), 7); Assert.assertEquals(identifiers.get(0).getLastPosition(), 47); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 41); Assert.assertEquals(identifiers.get(1).getName(), "function1"); Assert.assertEquals(identifiers.get(1).getOffset(), 17); Assert.assertEquals(identifiers.get(1).getLastPosition(), 65); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 49); Assert.assertEquals(identifiers.get(2).getName(), "fun"); Assert.assertEquals(identifiers.get(2).getOffset(), 3); Assert.assertEquals(identifiers.get(2).getLastPosition(), 69); Assert.assertEquals(identifiers.get(2).getFirstPosition(), 67); } @Test public void testNamesNestedFunctions3() throws Exception { String buffer = "SearchSourceBuilder.searchSource().query('args', Nested2.function(1,2,3), Nested1.function1('args').fun"; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 3); Assert.assertEquals(identifiers.get(0).getName(), "Nested1"); Assert.assertEquals(identifiers.get(0).getOffset(), 7); Assert.assertEquals(identifiers.get(0).getLastPosition(), 80); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 74); Assert.assertEquals(identifiers.get(1).getName(), "function1"); Assert.assertEquals(identifiers.get(1).getOffset(), 17); Assert.assertEquals(identifiers.get(1).getLastPosition(), 98); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 82); Assert.assertEquals(identifiers.get(2).getName(), "fun"); Assert.assertEquals(identifiers.get(2).getOffset(), 3); Assert.assertEquals(identifiers.get(2).getLastPosition(), 102); Assert.assertEquals(identifiers.get(2).getFirstPosition(), 100); } @Test public void testNamesNestedFunctionsCursorInBetween() throws Exception { String buffer = "SearchSourceBuilder.searchSource().query('arg1', QueryBuilders.match, 'arg3')"; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length() - 9); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 2); Assert.assertEquals(identifiers.get(0).getName(), "QueryBuilders"); Assert.assertEquals(identifiers.get(0).getOffset(), 13); Assert.assertEquals(identifiers.get(0).getLastPosition(), 61); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 49); Assert.assertEquals(identifiers.get(1).getName(), "match"); Assert.assertEquals(identifiers.get(1).getOffset(), 5); Assert.assertEquals(identifiers.get(1).getLastPosition(), 67); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 63); } @Test public void testNamesNestedFunctionsCursorInBetween2() throws Exception { String buffer = "SearchSourceBuilder.searchSource().tes_whatever.query('arg1', QueryBuilders.match, 'arg3')"; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, "SearchSourceBuilder.searchSource().tes".length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 3); Assert.assertEquals(identifiers.get(0).getName(), "SearchSourceBuilder"); Assert.assertEquals(identifiers.get(0).getOffset(), 19); Assert.assertEquals(identifiers.get(0).getLastPosition(), 18); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 0); Assert.assertEquals(identifiers.get(1).getName(), "searchSource"); Assert.assertEquals(identifiers.get(1).getOffset(), 14); Assert.assertEquals(identifiers.get(1).getLastPosition(), 33); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 20); Assert.assertEquals(identifiers.get(2).getName(), "tes"); Assert.assertEquals(identifiers.get(2).getOffset(), 3); Assert.assertEquals(identifiers.get(2).getLastPosition(), 37); Assert.assertEquals(identifiers.get(2).getFirstPosition(), 35); } @Test public void testNamesDoubleDot() throws Exception { String buffer = "name1.name2..name3"; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 4); Assert.assertEquals(identifiers.get(0).getName(), "name1"); Assert.assertEquals(identifiers.get(0).getOffset(), 5); Assert.assertEquals(identifiers.get(0).getLastPosition(), 4); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 0); Assert.assertEquals(identifiers.get(1).getName(), "name2"); Assert.assertEquals(identifiers.get(1).getOffset(), 5); Assert.assertEquals(identifiers.get(1).getLastPosition(), 10); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 6); Assert.assertEquals(identifiers.get(2).getName(), ""); Assert.assertEquals(identifiers.get(2).getOffset(), 0); Assert.assertEquals(identifiers.get(2).getLastPosition(), 11); //11 and not 12??? Assert.assertEquals(identifiers.get(2).getFirstPosition(), 11); //11 and not 12??? Assert.assertEquals(identifiers.get(3).getName(), "name3"); Assert.assertEquals(identifiers.get(3).getOffset(), 5); Assert.assertEquals(identifiers.get(3).getLastPosition(), 17); Assert.assertEquals(identifiers.get(3).getFirstPosition(), 13); } @Test public void testNamesWrongParentheses() throws Exception { String buffer = "name1.name2())."; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 1); Assert.assertEquals(identifiers.get(0).getName(), ""); Assert.assertEquals(identifiers.get(0).getOffset(), 0); Assert.assertEquals(identifiers.get(0).getLastPosition(), 15); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 15); } @Test public void testNamesConstructor() throws Exception { String buffer = "x= new Name2()."; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 3); Assert.assertEquals(identifiers.get(0).getName(), "new"); Assert.assertEquals(identifiers.get(0).getOffset(), 3); Assert.assertEquals(identifiers.get(0).getLastPosition(), 5); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 3); Assert.assertEquals(identifiers.get(1).getName(), "Name2"); Assert.assertEquals(identifiers.get(1).getOffset(), 7); Assert.assertEquals(identifiers.get(1).getLastPosition(), 13); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 7); Assert.assertEquals(identifiers.get(2).getName(), ""); Assert.assertEquals(identifiers.get(2).getOffset(), 0); Assert.assertEquals(identifiers.get(2).getLastPosition(), 15); Assert.assertEquals(identifiers.get(2).getFirstPosition(), 15); } @Test public void testNamesConstructor2() throws Exception { String buffer = "x= new Name2()."; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 3); Assert.assertEquals(identifiers.get(0).getName(), "new"); Assert.assertEquals(identifiers.get(0).getOffset(), 6); //counts additional whitespaces but not the normal one Assert.assertEquals(identifiers.get(0).getLastPosition(), 8); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 3); Assert.assertEquals(identifiers.get(1).getName(), "Name2"); Assert.assertEquals(identifiers.get(1).getOffset(), 7); Assert.assertEquals(identifiers.get(1).getLastPosition(), 16); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 10); Assert.assertEquals(identifiers.get(2).getName(), ""); Assert.assertEquals(identifiers.get(2).getOffset(), 0); Assert.assertEquals(identifiers.get(2).getLastPosition(), 18); Assert.assertEquals(identifiers.get(2).getFirstPosition(), 18); } @Test public void testNamesConstructor3() throws Exception { String buffer = "x= new2 Name2()."; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); //TODO Requests(). returns static methods // this is not quite what I would want to see but for now it's ok Assert.assertEquals(identifiers.size(), 2); Assert.assertEquals(identifiers.get(0).getName(), "Name2"); Assert.assertEquals(identifiers.get(0).getOffset(), 7); Assert.assertEquals(identifiers.get(0).getLastPosition(), 17); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 11); Assert.assertEquals(identifiers.get(1).getName(), ""); Assert.assertEquals(identifiers.get(1).getOffset(), 0); Assert.assertEquals(identifiers.get(1).getLastPosition(), 19); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 19); } @Test public void testNamesConstructor4() throws Exception { String buffer = "x= n2w Name2()."; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); //Again, this is not quite what I would want to see but for now it's ok Assert.assertEquals(identifiers.size(), 2); Assert.assertEquals(identifiers.get(0).getName(), "Name2"); Assert.assertEquals(identifiers.get(0).getOffset(), 7); Assert.assertEquals(identifiers.get(0).getLastPosition(), 16); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 10); Assert.assertEquals(identifiers.get(1).getName(), ""); Assert.assertEquals(identifiers.get(1).getOffset(), 0); Assert.assertEquals(identifiers.get(1).getLastPosition(), 18); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 18); } @Test public void testNamesConstructor5() throws Exception { String buffer = "new Name()."; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 3); Assert.assertEquals(identifiers.get(0).getName(), "new"); Assert.assertEquals(identifiers.get(0).getOffset(), 3); Assert.assertEquals(identifiers.get(0).getLastPosition(), 2); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 0); Assert.assertEquals(identifiers.get(1).getName(), "Name"); Assert.assertEquals(identifiers.get(1).getOffset(), 6); Assert.assertEquals(identifiers.get(1).getLastPosition(), 9); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 4); Assert.assertEquals(identifiers.get(2).getName(), ""); Assert.assertEquals(identifiers.get(2).getOffset(), 0); Assert.assertEquals(identifiers.get(2).getLastPosition(), 11); Assert.assertEquals(identifiers.get(2).getFirstPosition(), 11); } @Test public void testNamesConstructor6() throws Exception { String buffer = "Requests.indexRequest(new Name()."; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 3); Assert.assertEquals(identifiers.get(0).getName(), "new"); Assert.assertEquals(identifiers.get(0).getOffset(), 3); Assert.assertEquals(identifiers.get(0).getLastPosition(), 24); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 22); Assert.assertEquals(identifiers.get(1).getName(), "Name"); Assert.assertEquals(identifiers.get(1).getOffset(),6); Assert.assertEquals(identifiers.get(1).getLastPosition(), 31); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 26); Assert.assertEquals(identifiers.get(2).getName(), ""); Assert.assertEquals(identifiers.get(2).getOffset(), 0); Assert.assertEquals(identifiers.get(2).getLastPosition(), 33); Assert.assertEquals(identifiers.get(2).getFirstPosition(), 33); } @Test public void testNamesSquareBrackets() throws Exception { String buffer = "es.index['type-name']."; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 4); Assert.assertEquals(identifiers.get(0).getName(), "es"); Assert.assertEquals(identifiers.get(0).getOffset(), 2); Assert.assertEquals(identifiers.get(0).getLastPosition(), 1); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 0); Assert.assertEquals(identifiers.get(1).getName(), "index"); Assert.assertEquals(identifiers.get(1).getOffset(), 5); Assert.assertEquals(identifiers.get(1).getLastPosition(), 7); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 3); Assert.assertEquals(identifiers.get(2).getName(), "type-name"); Assert.assertEquals(identifiers.get(2).getOffset(), 13); Assert.assertEquals(identifiers.get(2).getLastPosition(), 20); Assert.assertEquals(identifiers.get(2).getFirstPosition(), 8); Assert.assertEquals(identifiers.get(3).getName(), ""); Assert.assertEquals(identifiers.get(3).getOffset(), 0); Assert.assertEquals(identifiers.get(3).getLastPosition(), 22); Assert.assertEquals(identifiers.get(3).getFirstPosition(), 22); } @Test public void testNamesSquareBrackets2() throws Exception { String buffer = "es.index['type-name'].typ"; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 4); Assert.assertEquals(identifiers.get(0).getName(), "es"); Assert.assertEquals(identifiers.get(0).getOffset(), 2); Assert.assertEquals(identifiers.get(0).getLastPosition(), 1); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 0); Assert.assertEquals(identifiers.get(1).getName(), "index"); Assert.assertEquals(identifiers.get(1).getOffset(), 5); Assert.assertEquals(identifiers.get(1).getLastPosition(), 7); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 3); Assert.assertEquals(identifiers.get(2).getName(), "type-name"); Assert.assertEquals(identifiers.get(2).getOffset(), 13); Assert.assertEquals(identifiers.get(2).getLastPosition(), 20); Assert.assertEquals(identifiers.get(2).getFirstPosition(), 8); Assert.assertEquals(identifiers.get(3).getName(), "typ"); Assert.assertEquals(identifiers.get(3).getOffset(), 3); Assert.assertEquals(identifiers.get(3).getLastPosition(), 24); Assert.assertEquals(identifiers.get(3).getFirstPosition(), 22); } @Test public void testNamesSquareBrackets3() throws Exception { String buffer = "es.index[\"type-name\"]."; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 4); Assert.assertEquals(identifiers.get(0).getName(), "es"); Assert.assertEquals(identifiers.get(0).getOffset(), 2); Assert.assertEquals(identifiers.get(0).getLastPosition(), 1); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 0); Assert.assertEquals(identifiers.get(1).getName(), "index"); Assert.assertEquals(identifiers.get(1).getOffset(), 5); Assert.assertEquals(identifiers.get(1).getLastPosition(), 7); Assert.assertEquals(identifiers.get(1).getFirstPosition(), 3); Assert.assertEquals(identifiers.get(2).getName(), "type-name"); Assert.assertEquals(identifiers.get(2).getOffset(), 13); Assert.assertEquals(identifiers.get(2).getLastPosition(), 20); Assert.assertEquals(identifiers.get(2).getFirstPosition(), 8); Assert.assertEquals(identifiers.get(3).getName(), ""); Assert.assertEquals(identifiers.get(3).getOffset(), 0); Assert.assertEquals(identifiers.get(3).getLastPosition(), 22); Assert.assertEquals(identifiers.get(3).getFirstPosition(), 22); } @Test public void testNamesSquareBrackets4() throws Exception { //no auto-complete for non java identifier within square brackets for now //identifiers get cut when there is a non java identifier part String buffer = "es.index['type-na"; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 1); Assert.assertEquals(identifiers.get(0).getName(), "na"); Assert.assertEquals(identifiers.get(0).getOffset(), 2); Assert.assertEquals(identifiers.get(0).getLastPosition(), 16); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 15); } @Test public void testNamesSquareBracketsWrongInput() throws Exception { String buffer = "es.index[type-name'].typ"; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 1); Assert.assertEquals(identifiers.get(0).getName(), "typ"); Assert.assertEquals(identifiers.get(0).getOffset(), 3); Assert.assertEquals(identifiers.get(0).getLastPosition(), 23); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 21); } @Test public void testNamesSquareBracketsWrongInput2() throws Exception { String buffer = "es.index.type-name'].typ"; List<Identifier> identifiers = identifiersExtractor.tokenize(buffer, buffer.length()); Assert.assertNotNull(identifiers); Assert.assertEquals(identifiers.size(), 1); Assert.assertEquals(identifiers.get(0).getName(), "typ"); Assert.assertEquals(identifiers.get(0).getOffset(), 3); Assert.assertEquals(identifiers.get(0).getLastPosition(), 23); Assert.assertEquals(identifiers.get(0).getFirstPosition(), 21); } }