/** * Copyright (C) 2012 - 2016 Eric Van Dewoestine * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.eclim.plugin.jdt.command.doc; import java.util.List; import java.util.Map; import org.eclim.Eclim; import org.eclim.plugin.jdt.Jdt; import org.junit.Test; import static org.junit.Assert.*; /** * Test case for GetElementDocCommand. * * @author Eric Van Dewoestine */ public class GetElementDocCommandTest { private static final String TEST_FILE = "src/org/eclim/test/doc/TestPreview.java"; @Test @SuppressWarnings("unchecked") public void executeLocalElements() { // class reference: TestPreview Map<String,Object> result = (Map<String,Object>) Eclim.execute(new String[]{ "java_element_doc", "-p", Jdt.TEST_PROJECT, "-f", TEST_FILE, "-o", "255", "-l", "11", "-e", "utf-8" }); assertEquals(2, result.size()); assertEquals( "|org[0]|.|eclim[1]|.|test[2]|.|doc[3]|.TestPreview\n\n" + "A test class for javadoc previews.\n" + "Author:\n\t Eric Van Dewoestine\n", result.get("text")); List<Map<String,String>> links = (List<Map<String,String>>)result.get("links"); assertEquals(4, links.size()); // constructor call: TestPreview(String[]) result = (Map<String,Object>)Eclim.execute(new String[]{ "java_element_doc", "-p", Jdt.TEST_PROJECT, "-f", TEST_FILE, "-o", "275", "-l", "11", "-e", "utf-8" }); assertEquals(2, result.size()); assertEquals( "|org[0]|.|eclim[1]|.|test[2]|.|doc[3]|.|TestPreview[4]|.TestPreview(|String[5]|[] args)\n\n" + "Constructs a new instance from the supplied arguments.\n" + "Parameters:\n\targs The arguments.\n", result.get("text")); links = (List<Map<String,String>>)result.get("links"); assertEquals(6, links.size()); assertEquals("TestPreview", links.get(4).get("text")); assertTrue(links.get(4).get("href").startsWith("eclipse-javadoc:")); assertEquals("String", links.get(5).get("text")); assertTrue(links.get(5).get("href").startsWith("eclipse-javadoc:")); // method call: test() result = (Map<String,Object>)Eclim.execute(new String[]{ "java_element_doc", "-p", Jdt.TEST_PROJECT, "-f", TEST_FILE, "-o", "300", "-l", "4", "-e", "utf-8" }); assertEquals(2, result.size()); assertEquals( "|String[0]| |org[1]|.|eclim[2]|.|test[3]|.|doc[4]|.|TestPreview[5]|.test()\n\n" + "A test method.\nReturns:\n\t a test |String[6]|\n", result.get("text")); links = (List<Map<String,String>>)result.get("links"); assertEquals(7, links.size()); assertEquals("String", links.get(0).get("text")); assertTrue(links.get(0).get("href").startsWith("eclipse-javadoc:")); assertEquals("TestPreview", links.get(5).get("text")); assertTrue(links.get(5).get("href").startsWith("eclipse-javadoc:")); assertEquals("String", links.get(6).get("text")); assertTrue(links.get(6).get("href").startsWith("eclipse-javadoc:")); // follow url: String result = (Map<String,Object>)Eclim.execute(new String[]{ "java_element_doc", "-u", links.get(0).get("href") }); assertEquals(2, result.size()); String text = (String)result.get("text"); assertTrue(text.startsWith("|java[0]|.|lang[1]|.String\n\nThe String class")); } @Test @SuppressWarnings("unchecked") public void executeJdkElements() { // ambiguous reference: List Map<String,Object> result = (Map<String,Object>) Eclim.execute(new String[]{ "java_element_doc", "-p", Jdt.TEST_PROJECT, "-f", TEST_FILE, "-o", "169", "-l", "4", "-e", "utf-8" }); assertEquals(2, result.size()); String text = (String)result.get("text"); // The first run (any in the first second or so) puts java.util.List last, // so try that first, then fallback to the order it'll be for all subsequent // executions. int index = 0; if (text.indexOf("java.util.List[2]") != -1){ index = 2; assertEquals( "\n\t- |java.awt.List[0]|" + "\n\t- |com.sun.xml.internal.bind.v2.schemagen.xmlschema.List[1]|" + "\n\t- |java.util.List[2]|", result.get("text")); List<Map<String,String>> links = (List<Map<String,String>>)result.get("links"); assertEquals(3, links.size()); assertEquals("java.awt.List", links.get(0).get("text")); assertTrue(links.get(0).get("href").startsWith("eclipse-javadoc:")); assertEquals("java.util.List", links.get(2).get("text")); assertTrue(links.get(2).get("href").startsWith("eclipse-javadoc:")); }else{ index = 1; assertEquals( "\n\t- |java.awt.List[0]|" + "\n\t- |java.util.List[1]|" + "\n\t- |com.sun.xml.internal.bind.v2.schemagen.xmlschema.List[2]|", result.get("text")); List<Map<String,String>> links = (List<Map<String,String>>)result.get("links"); assertEquals(3, links.size()); assertEquals("java.awt.List", links.get(0).get("text")); assertTrue(links.get(0).get("href").startsWith("eclipse-javadoc:")); assertEquals("java.util.List", links.get(1).get("text")); assertTrue(links.get(1).get("href").startsWith("eclipse-javadoc:")); } // follow url: java.util.List List<Map<String,String>> links = (List<Map<String,String>>)result.get("links"); result = (Map<String,Object>)Eclim.execute(new String[]{ "java_element_doc", "-u", links.get(index).get("href") }); assertEquals(2, result.size()); text = (String)result.get("text"); assertTrue(text.startsWith( "|java[0]|.|util[1]|.List<|E[2]|>\n\nAn ordered collection")); // method call: Map.put result = (Map<String,Object>)Eclim.execute(new String[]{ "java_element_doc", "-p", Jdt.TEST_PROJECT, "-f", TEST_FILE, "-o", "574", "-l", "3", "-e", "utf-8" }); assertEquals(2, result.size()); text = (String)result.get("text"); assertTrue(text.startsWith( "|Object[0]| |java[1]|.|util[2]|.|Map[3]|.put(|Object[4]| key, |Object[5]| value)\n\n" + "Associates the specified value with the specified key in this map")); } @Test @SuppressWarnings("unchecked") public void htmlFlag(){ String results = (String) Eclim.execute(new String[]{ "java_element_doc", "-p", Jdt.TEST_PROJECT, "-f", TEST_FILE, "-o", "255", "-l", "11", "-e", "utf-8", "-h" }); assertTrue("HTML Format expected", results.startsWith("<html><head>")); } }