/** * Copyright (c) 2013-2016 Angelo ZERR. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation */ package tern.server.protocol.guesstypes; import java.util.Collection; import org.junit.Assert; import org.junit.Test; import tern.ITernProject; import tern.TernException; import tern.server.AbstractTernServerTest; import tern.server.TernDef; import tern.server.TernPlugin; import tern.server.protocol.TernDoc; public abstract class AbstractTernServerGuessTypesTest extends AbstractTernServerTest { @Override protected ITernProject createProject() { ITernProject project = super.createProject(); project.addPlugin(TernPlugin.guess_types); project.addLib(TernDef.browser); return project; } @Test public void guessTypes() throws TernException { TernDoc doc = createDoc(); MockTernGuessTypesCollector collector = new MockTernGuessTypesCollector(); server.request(doc, collector); int argsSize = collector.keySet().size(); Assert.assertEquals(2, argsSize); // first arg is string type Collection<String> names = collector.get(0); Assert.assertNotNull(names); Assert.assertArrayEquals(new String[] { "\"\"", "''", "name", "s", "y" }, names.toArray()); // second arg has none suggestion names = collector.get(1); Assert.assertNull(names); // three arg is bool type names = collector.get(2); Assert.assertNotNull(names); Assert.assertArrayEquals(new String[] { "true", "false", "closed", "b" }, names.toArray()); } private TernDoc createDoc() { String name = "myfile.js"; String text = "document. //addEventListener(type, listener, capture)\n" + "var s = '', y = '', z = 10;\n" + "var f = function(e) {\n" + "\n" + "}\n" + "var g = function() {\n" + "\n" + "}\n" + "var b = true"; TernDoc doc = new TernDoc(); doc.addFile(name, text, null, null); TernGuessTypesQuery query = new TernGuessTypesQuery(name, 9, "addEventListener"); query.setFile(name); doc.setQuery(query); return doc; } }